Phusion white papers Phusion overview

Phusion Blog

Ruby Enterprise Edition 1.8.6-20090421 released

By Hongli Lai on April 22nd, 2009

What is Ruby Enterprise Edition?

Ruby Enterprise Edition (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:

REE has been out for about a year now and is already used by many high-profile websites and organizations, such as New York Times, Shopify and 37signals.

“We switched to enterprise ruby to get the full benefit of the [copy-on-write] memory characteristics and we can absolutely confirm the memory savings of 30% some others have reported. This is many thousand dollars of savings even at today’s hardware prices.”
Tobias Lütke (Shopify)

And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.

Changes

Now based on Ruby 1.8.6-p287
The previous REE released was based on Ruby 1.8.6-p286. This one is based on p287, which fixes a few bugs in the ‘dl’ library.

Unfortunately there wasn’t enough time to base REE on Ruby 1.8.6-p368, which was released last week. This is planned for a future version.

Fixed a possible infinite looping bug in the garbage collector
A long-standing, but rare, infinite looping bug in the garbage collector has been fixed. If you’ve ever seen Ruby Enterprise Edition freezing while using 100% CPU, then that’s probably this bug. This bug only occurs under very rare circumstances involving deferred running of finalizers.

Users are strongly advised to upgrade to this release for this bug fix alone.

Upgraded to tcmalloc 1.2
The tcmalloc memory allocator has been upgraded from version 0.99.6 to 1.2, which is slightly faster and has support for more platforms.
Upgraded to RubyGems 1.3.2
If you’ve ever seen an error message in Phusion Passenger along the lines of “Directory ‘/nonexistent’ not found”, then what you’ve seen is a bug in RubyGems 1.3.1. This bug has been fixed in RubyGems 1.3.2.
Included Sparc optimization patches
Darryl Gove’s and Miriam Blatt’s Sparc optimization patches are now included. It has been reported that these patches make Ruby significantly faster and more stable on Sparc machines.
OpenSSL extension compilation on Gentoo fixed
The Ruby OpenSSL extension didn’t compile correctly on Gentoo. This issue has been fixed by applying a patch by the Gentoo developers.
Installer improvements
  • The installer now supports command line arguments for disabling the automatic installation of gems and for passing arguments to the Ruby configure script. The latter is useful for enabling –enable-shared, which is required for some libraries such as RubyCocoa.
  • Some Solaris compilation problems have been fixed. Patch by Dana Contreras.
  • The CC, CFLAGS and LDFLAGS environment variables are now respected by the installer itself as well. Patch by Dana Contreras.
Documentation improvements
Evan Weaver has recently published the garbage collector tuning settings used by Twitter. These settings have been included in the documentation along with the 37signals settings.

In our tests, the Twitter settings result in a 12% performance improvement at the cost of a higher memory usage.

64-bit Ubuntu package
We now also provide an x86_64 Ubuntu package.

Download & upgrade

To install Ruby Enterprise Edition, please visit the download page. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to the documentation for upgrade instructions.

Hongli Lai Ninh Bui