What is Ruby Enterprise Edition?

Ruby Enterprise Edition (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements. REE’s main benefits are the ability to reduce Ruby on Rails applications’ memory usage by 33% on average, the ability to increase applications’ performance and the inclusion of various analysis and debugging features. The lower memory usage and increased performance are possible because REE includes – among other enhancements – a copy-on-write friendly garbage collector, as well as an improved memory allocator. REE has been out for several months 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.

Sponsorship results

We are pleased to announce REE version 1.8.6-20090113 to the world. This version is sponsored by the following people and organizations:

We were pleasantly surprised with the speed at which the second sponsorship campaign’s goal was reached. Thank you sponsors!

Changes

The sponsored improvements are:

Tcmalloc support for 64-bit operating systems.

REE’s copy-on-write optimizations work on 64-bit operating systems. But the improved memory allocator that REE includes, tcmalloc, was disabled on 64-bit platforms for various reasons. It would be more efficient if tcmalloc is enabled on 64-bit platforms because it would allow one to save more memory and to gain more performance. In this release, tcmalloc now properly integrates into Ruby on 64-bit platform.

REE’s copy-on-write optimizations work on 64-bit operating systems. But the improved memory allocator that REE includes, tcmalloc, was disabled on 64-bit platforms for various reasons. It would be more efficient if tcmalloc is enabled on 64-bit platforms because it would allow one to save more memory and to gain more performance. In this release, tcmalloc now properly integrates into Ruby on 64-bit platform. Ported and incorporated the RubyProf GC patches.

These patches add the ability to measure the number of objects in Ruby and to measure the amount of allocated memory, which is very useful in various debugging scenarios. RubyProf automatically uses this functionality for GC profiling if the Ruby interpreter is properly patched.

These patches add the ability to measure the number of objects in Ruby and to measure the amount of allocated memory, which is very useful in various debugging scenarios. RubyProf automatically uses this functionality for GC profiling if the Ruby interpreter is properly patched. Better documentation.

A lot of cool new features, e.g. caller_for_all_threads and the RailsBench patches, had been added to REE lately. These features aren’t very well documented, and the existing documentation was scattered all over the Internet. We’ve written a unified manual which teaches developers how to effectively use these new REE features to debug applications.

We’ve also added a number of improvements which are not sponsored:

Fixed –no-tcmalloc on OS X Running the installer with –no-tcmalloc didn’t work on OS X. This has been fixed. Fixed more bugs in GNU readline integration on OS X Requiring “irb/completion” causes REE to crash when running on OS X. This has been fixed. Also, GNU readline has been added as dependency, so the installer will now check for it. Pass ‘-r’ to ‘gem install’ when installing gems The REE installer will now pass ‘-r’ when installing gems. This fixes gem installation for people who have specified ‘-l’ in their ~/.gemrc. Fixed a crash when using REE to install REE This is caused by the fact that we overwrote tcmalloc without unlinking it first. This has been fixed. Fixed Debian package The Debian package for the previous release contains a mysterious folder called ‘/home/hongli’. This bug has been fixed.

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.