<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Phusion Corporate Blog &#187; Ruby Enterprise Edition</title>
	<atom:link href="http://blog.phusion.nl/category/ruby-enterprise-edition/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.phusion.nl</link>
	<description></description>
	<lastBuildDate>Mon, 06 Sep 2010 12:01:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ruby Enterprise Edition 1.8.7-2010.02 released</title>
		<link>http://blog.phusion.nl/2010/06/07/ruby-enterprise-edition-1-8-7-2010-02-released/</link>
		<comments>http://blog.phusion.nl/2010/06/07/ruby-enterprise-edition-1-8-7-2010-02-released/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 12:32:08 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=614</guid>
		<description><![CDATA[It has been a while since the last REE release. We apologize for not releasing earlier, it&#8217;s been very busy for us lately. Nonetheless, a number of important issues have motivated us to release again, including various Rails 3 compatibility issues. Read on for more information. What is Ruby Enterprise Edition? Ruby Enterprise Edition (REE) [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a while since the last REE release. We apologize for not releasing earlier, it&#8217;s been very busy for us lately. Nonetheless, a number of important issues have motivated us to release again, including various Rails 3 compatibility issues. Read on for more information.</p>
<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>The <a href="http://sites.google.com/site/brentsrubypatches">MBARI patch set</a>, for improved garbage collection efficiency.</li>
<li>The <a href="http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/">zero-copy context switching patch</a>, included as an experimental feature.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE can be easily installed in parallel to your existing Ruby interpreter, allowing you switch to REE with minimal hassle or risk. REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<dl>
<dt>Upgraded to Ruby 1.8.7-p249</dt>
<dd>The previous REE release was based on 1.8.7-p248. p249 hasn&#8217;t changed much: it only includes some WEBrick fixes.</dd>
<dt>Upgraded to RubyGems 1.3.7</dt>
<dd>The previous REE release included RubyGems 1.3.5. 1.3.7 is required by the latest version of Bundler as well as Rails 3.</dd>
<dt>Backported various bug fixes</dt>
<dd>The following bug fixes are fixed by upstream Ruby, but not yet released, i.e. these fixes are not part of the latest Ruby 1.8.7-p249 release. We&#8217;ve backported these fixes because they solve important compatibility issues.</p>
<ul>
<li>Fixed a Marshal bug that was apparently caused by GCC optimizations. This is a major bug that appears to be responsible for all the REE crash bug reports of late. It is so severe that the Rails 3 documentation actually <a href="http://guides.rails.info/getting_started.html">recommends</a> not using 1.8.7-p248 and 1.8.7-p249:<br />
<blockquote><p>&#8220;Note that Ruby 1.8.7 p248 and p249 has marshaling bugs that crash Rails 3.0.0. Ruby 1.9.1 outright segfaults on Rails 3.0.0, so if you want to use Rails 3 with 1.9.x, jump on 1.9.2 trunk for smooth sailing.&#8221;</p></blockquote>
<p><a href="http://redmine.ruby-lang.org/issues/show/2557">Ruby bug #2557</a>. Given that Ruby 1.8 is still so widely used, being forced to use Ruby 1.9.2 (-dev version even) is not such a good thing. With these backports Rails 3 should be once again usable on 1.8, at least until upstream releases a new version with the fix.</li>
<li>Fixed an <em>&#8220;undefined method `closed?&#8217; for nil:NilClass&#8221;</em> Net::HTTP bug. <a href="http://redmine.ruby-lang.org/issues/show/2708">Ruby issue #2708</a> and <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=35">REE issue #35</a>.</li>
<li>Fixed a bug where the &#8216;super&#8217; keyword doesn&#8217;t behave correctly. <a href="http://redmine.ruby-lang.org/issues/show/2537">Ruby issue #2537</a> and <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=40">REE issue #40.</a></li>
</ul>
</dd>
<dt>Fixed various FreeBSD issues</dt>
<dd>
<ul>
<li>REE on FreeBSD would occasionally crash with a bizarre &#8220;Illegal Instruction&#8221; error. After some though investigations, it would appear that the problem is caused by the MBARI patch set in combination with some FreeBSD oddities. MBARI tries to reserve the upper part of the system stack for the garbage collector. In order to do this, it queries the OS for the size of the stack. FreeBSD reports a large size (on 64-bit FreeBSD it reports 512 MB by default), but in reality only about 4 MB could be used: if you go over it then the process will crash. We&#8217;ve fixed this issue by limiting the stack usage to 4 MB when on FreeBSD.</li>
<li>Fixed some long-standing iconv installation bugs. The iconv Ruby extension is used by various important parts of Ruby and Rails. FreeBSD installs the iconv .h headers files into /usr/local/include, but gcc doesn&#8217;t look in this location by default, and neither does the iconv extension&#8217;s extconf.rb. We&#8217;ve modified the REE installer to force the compiler to look in /usr/local/include while installing the iconv extension.</li>
<li>Added a bootstrap binary for x86_64 FreeBSD 8. This means that on this platform you don&#8217;t have to install Ruby first before you can run the REE installer (which is written in Ruby).</li>
</ul>
</dd>
<dt>Rational and gcd performance improvement patches</dt>
<dd>
Kurt Stephens has contributed a set of patches which dramatically improve the performance of the Rational class and the #gcd method. Rational performance has been improved by over 50%. <a href="http://redmine.ruby-lang.org/issues/show/2561">Ruby issue #2561</a> and <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=23">REE issue #23</a>
</dd>
<dt>Various other minor bug fixes</dt>
<dd>
<ul>
<li>GEM_HOME, GEM_PATH and RUBYOPT are unset before running the installer so that those options can&#8217;t interfere with installation.</li>
<li>RUBY_HEAP_SLOTS_GROWTH_FACTOR wasn&#8217;t properly parsed as a floating point number. This has now been fixed.</li>
<li>Fixed OpenSSL compilation problems. Patch contributed by hso@nosneros.net. <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=39">REE issue #39.</a></li>
</ul>
</dd>
<dt>More Ubuntu packages</dt>
<dd>We now provide packages for:</p>
<ul>
<li>Ubuntu 8.04 32-bit</li>
<li>Ubuntu 8.04 64-bit</li>
<li>Ubuntu 10.04 32-bit</li>
<li>Ubuntu 10.04 64-bit</li>
</ul>
</dd>
</dl>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2010/06/07/ruby-enterprise-edition-1-8-7-2010-02-released/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.7-2010.01 released</title>
		<link>http://blog.phusion.nl/2010/01/20/ruby-enterprise-edition-1-8-7-2010-01-released/</link>
		<comments>http://blog.phusion.nl/2010/01/20/ruby-enterprise-edition-1-8-7-2010-01-released/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 22:05:30 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=445</guid>
		<description><![CDATA[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: A &#8220;copy-on-write friendly&#8221; garbage collector, capable of reducing Ruby on Rails applications&#8217; memory usage by 33% on average. The tcmalloc memory allocator, which lowers overall memory usage and boosts memory [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>The <a href="http://sites.google.com/site/brentsrubypatches">MBARI patch set</a>, for improved garbage collection efficiency.</li>
<li>The <a href="http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/">zero-copy context switching patch</a>, included as an experimental feature.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE can be easily installed in parallel to your existing Ruby interpreter, allowing you switch to REE with minimal hassle or risk. REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<dl>
<dt>Upgraded to Ruby 1.8.7-p248</dt>
<dd>The previous REE release was based on 1.8.7-p174.</dd>
<dt>Improved compiler optimization options</dt>
<dd>The previous REE release was compiled with <code>-Os -fno-strict-aliasing</code>.</p>
<p><code>-fno-strict-aliasing</code> was used to avoid <a href="http://groups.google.com/group/emm-ruby/browse_thread/thread/d327b07bbcb1351c/3e6d8056c734f19a">improper code generation</a> by GCC 4.4. This was actually caused by some <a href="http://en.wikipedia.org/wiki/Aliasing_%28computing%29">aliasing</a> bugs in Ruby&#8217;s util.c source file. The problems have been fixed in 1.8.7-p174 so we&#8217;ve now removed this compilation flag, allowing for better compiler optimizations.</p>
<p>It turned out that <code>-O2</code> yields better performance than -Os in many production environments, though some microbenchmarks might indicate otherwise. Therefore we&#8217;ve now replaced -Os with -O2.</dd>
<dt>Fixed OpenSSL extension compilation problems on systems with OpenSSL 1.0</dt>
<dd>At this time, upstream Ruby cannot be compiled on systems with OpenSSL 1.0 because of compatibility problems in the Ruby OpenSSL extension. Fedora 12 includes OpenSSL 1.0. We&#8217;ve applied a patch by the Fedora guys and added some minor changes to fix some compilation warnings. These patches have been send upstream. <a href="http://redmine.ruby-lang.org/issues/show/2022">Ruby issue #2022.</a></dd>
<dt>Backported an IO#write exception bug fix</dt>
<dd>Upstream Ruby 1.8.7-p248 has a bug in its IO#write method: it always raises Errno::EINVAL even when a different error occured. We found this problem while testing Phusion Passenger on this Ruby release.</p>
<p>We&#8217;ve <a href="http://redmine.ruby-lang.org/issues/show/2559">submitted a patch</a> upstream. This patch is also applied in this REE release.</dd>
<dt>Thread timer fix now merged upstream</dt>
<dd>Previous REE releases included Joe Damato&#8217;s and Aman Gupta&#8217;s <a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">thread timer fix</a>. This fix has now found its way back upstream and is included by default in 1.8.7-p248, so we&#8217;ve removed the patch from our source tree.</dd>
<dt>Fix a crash bug in the zero-copy context switching patch set</dt>
<dd>This crash can be reproduced by running &#8220;god&#8221;, which will eventually cause a crash. Aman Gupta has fixed this problem.</p>
<p>Please note that the zero-copy context switching patch set is disabled by default, and must be explicitly enabled by passing &#8211;fast-threading to the installer. It is currently still marked as experimental because there are some known issues with the Kernel::fork method. <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=9">Issue #9.</a></dd>
<dt>Ubuntu package now contains debugging symbols</dt>
<dd>Previous REE Ubuntu packages that we release had binaries with debugging symbols stripped, in order to minimize the package sizes. We no longer strip the debugging symbols now because Joe and Aman&#8217;s <a href="http://timetobleed.com/memprof-a-ruby-level-memory-profiler/">Memprof</a> depends on the presence of debugging symbols. Memprof should work out-of-the-box with this release of REE.</p>
<p>Please note that although the binaries are larger, this does <b>not</b> affect performance in any way. The debugging symbols are only used for debugging and introspection purposes and do not affect the runtime behavior of Ruby at all.</dd>
<dt>Developer documentation is now installed by default</dt>
<dd>RDoc and RI documentation are now installed by default. You can avoid this by passing <tt>--no-dev-docs</tt> to the installer.</p>
<p>The Ubuntu packages include developer documentation.</dd>
<dt>Installer now checks for the existence of the &#8216;patch&#8217; utility</dt>
<dd>This fixes <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=10&#038;can=1&#038;colspec=ID%20Type%20Status%20Priority%20Milestone%20Summary">bug #10</a>.</dd>
<dt>Some documentation updates</dt>
<dd>Parts are contributed by Trevor Turk.</dd>
</dl>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2010/01/20/ruby-enterprise-edition-1-8-7-2010-01-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Tech Talk on Ruby Enterprise Edition</title>
		<link>http://blog.phusion.nl/2009/12/15/google-tech-talk-on-ruby-enterprise-edition/</link>
		<comments>http://blog.phusion.nl/2009/12/15/google-tech-talk-on-ruby-enterprise-edition/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 00:53:40 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=428</guid>
		<description><![CDATA[Last Friday we visited the awesome Googleplex and gave a tech talk there about Ruby Enterprise Edition. This talk elaborates a bit on how REE works under the hood. Many thanks to John Woodell for making this possible!]]></description>
			<content:encoded><![CDATA[<p>Last Friday we visited the awesome Googleplex and gave a tech talk there about Ruby Enterprise Edition. This talk elaborates a bit on how REE works under the hood. Many thanks to John Woodell for making this possible!</p>
<p><a href="http://www.youtube.com/watch?v=ghLCtCwAKqQ"><img src="http://blog.phusion.nl/wp-content/uploads/2009/12/techtalk.jpg" alt="techtalk" title="techtalk" width="600" height="354" class="alignnone size-full wp-image-431" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/12/15/google-tech-talk-on-ruby-enterprise-edition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.7-2009.10 released</title>
		<link>http://blog.phusion.nl/2009/10/26/ruby-enterprise-edition-1-8-7-2009-10-released/</link>
		<comments>http://blog.phusion.nl/2009/10/26/ruby-enterprise-edition-1-8-7-2009-10-released/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 12:20:30 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=400</guid>
		<description><![CDATA[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: A &#8220;copy-on-write friendly&#8221; garbage collector, capable of reducing Ruby on Rails applications&#8217; memory usage by 33% on average. The tcmalloc memory allocator, which lowers overall memory usage and boosts memory [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>Performance enhancements for single-threaded applications (<a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">SIGVTALRM patch</a>) and for Sparc machines (<a href="http://blogs.sun.com/d/entry/ruby_performance_gains_on_sparc">Sparc patch</a>).</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>The <a href="http://sites.google.com/site/brentsrubypatches">MBARI patch set</a>, for improved garbage collection efficiency.</li>
<li>The <a href="http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/">zero-copy context switching patch</a>, included as an experimental feature.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE can be easily installed in parallel to your existing Ruby interpreter, allowing you switch to REE with minimal hassle or risk. REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<dl>
<dt>New version numbering scheme</dt>
<dd>We don&#8217;t use full date version numbers anymore. Instead we now use the release year and a sequence number. To avoid confusion we&#8217;ve given this release the sequence number 10.</p>
<p>The reason for this change is to allow milestone planning in our issue tracker. It&#8217;s kinda inconvenient to assign issues to future milestones if you don&#8217;t know their version numbers.</dd>
<dt>Fixed floating point calculation issues on GCC 4.4</dt>
<dd>GCC 4.4 produces incorrect floating point code because of aliasing issues in the Ruby source code. This causes floating point calculations to generate incorrect results. We&#8217;ve fixed this by compiling REE with -fno-strict-aliasing. <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=2">Issue #2.</a></dd>
<dt>Removed -fno-stack-protector</dt>
<dd>The previous version was compiled with the -fno-stack-protector flag, which disables the stack protector. The stack protector is a compiler feature for reducing the effectiveness of buffer overflow attacks. We disabled the stack protector because the author of the MBARI patches recommended so for performance reasons.</p>
<p>Some systems such as Solaris as well as older Linux versions did not support the -fno-stack-protector flag, causing compilation to fail.</p>
<p>We&#8217;ve found that enabling the stack protector does not cause any noticeable degrade in performance, so we&#8217;ve removed the -fno-stack-protector flag, allowing the platform to decide whether to enable it or not. This not only improves security on platforms where the stack protector is enabled by default, but also fixes the compilation problems that some people were having. <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=3">Issue #3.</a></dd>
<dt>Snow Leopard compatibility issues fixed</dt>
<dd>The tcmalloc memory allocator has some issues with Snow Leopard, so we&#8217;ve disabled tcmalloc on Snow Leopard. It&#8217;s still enabled for Leopard and other supported platforms.</dd>
<dt>Backported a File.open memory leak fix</dt>
<dd>Apparently <a href="http://redmine.ruby-lang.org/issues/show/2009">File.open leaks memory</a>. We&#8217;ve backported the leak fix.</p>
<p>Please note that this fix is <em>not</em> included in the latest upstream Ruby 1.8.7 release (p174). If you&#8217;re not an REE user then we strongly recommend applying this patch yourself.</dd>
<dt>The installer now checks for &#8216;make&#8217;</dt>
<dd>The installer used to fail silently if make isn&#8217;t installed. <a href="http://code.google.com/p/rubyenterpriseedition/issues/detail?id=4">Issue #4.</a></dd>
<dt>Various minor changes</dt>
<dd>
<ul>
<li>Upgraded tcmalloc to version 1.4</li>
<li>The installer now installs the &#8216;pg&#8217; gem instead of &#8216;postgres&#8217;, because &#8216;pg&#8217; is newer, has more features and is under more active maintenance.</li>
<li>The Linux x86_64 bootstrap binary has been recompiled so that it works on systems with a glibc version older than 2.7. This allows the installer to run out-of-the-box on e.g. x86_64 CentOS 5.2.</li>
</ul>
</dd>
</dl>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/10/26/ruby-enterprise-edition-1-8-7-2009-10-released/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.7-20090928 released</title>
		<link>http://blog.phusion.nl/2009/09/29/ruby-enterprise-edition-1-8-7-20090928-released/</link>
		<comments>http://blog.phusion.nl/2009/09/29/ruby-enterprise-edition-1-8-7-20090928-released/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 11:31:51 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=353</guid>
		<description><![CDATA[In the not so distant past we launched a Ruby Enterprise Edition sponsorship campaign. We&#8217;ve been working hard on the code since that time. And although the campaign target hasn&#8217;t been reached, we&#8217;ve decided to release it anyway because we believe that this release is of great importance to the community. Just how important is [...]]]></description>
			<content:encoded><![CDATA[<p>In the not so distant past we launched a Ruby Enterprise Edition <a href="http://blog.phusion.nl/2009/05/27/ruby-enterprise-edition-third-sponsorship-campaign/">sponsorship campaign</a>. We&#8217;ve been working hard on the code since that time. And although the campaign target hasn&#8217;t been reached, we&#8217;ve decided to release it anyway because we believe that this release is of great importance to the community.</p>
<p>Just how important is this release? Well, <a href="http://www.twitter.com/">Twitter</a> has beta tested this release and they&#8217;re reporting roughly <b>30% improvement in throughput</b>. Keep reading to learn more and follow us on <a href="http://twitter.com/phusion_nl">@phusion_nl</a> for the latest updates.</p>
<h2>Summary of changes</h2>
<dl>
<dt>It&#8217;s now based on Ruby 1.8.7-p174</dt>
<dd>
<p>Previous REE releases were based on 1.8.6. We were initially reluctant about switching to 1.8.7: many people reported various incompatibility problems introduced by 1.8.7, and it seemed that alternative Ruby implementors were boycotting 1.8.7. However, the tide has now changed. Rails 3.0 will drop support for Ruby versions earlier than 1.8.7, JRuby had recently decided to support 1.8.7 and OS X Snow Leopard as well as all the Linux distros ship 1.8.7. We&#8217;ve received a lot of requests from the community for a 1.8.7-based version.</p>
<p>In short, everybody is moving towards 1.8.7, and we can&#8217;t afford to stay behind.</p>
<p>We were initially planning to release a final 1.8.6-based version, but after carefully considering the current state of things, we decided to skip the 1.8.6 release and jump directly to 1.8.7. 1.8.7 is also more compatible with 1.9, allowing a smoother transition to future Ruby versions.</p>
</dd>
<dt>The MBARI patches have been integrated</dt>
<dd>Brent Roman’s <a href="http://sites.google.com/site/brentsrubypatches/">MBARI patch set</a> uses a variety of techniques to significantly reduce Ruby’s memory usage. It also adds a bunch of performance optimizations, useful features and bug fixes.</p>
<ul>
<li>
<p>Ruby’s garbage collector scans the C stack conservatively. This means that any data on the C stack that might look like a pointer pointing to a valid Ruby object will be treated like a real pointer, causing the object to be retained during garbage collection. Because of the way Ruby is written and because of compiler optimizations, there may be a lot of such “pointers” on the stack, even when they’re not really pointers but just garbage data that like look pointers.</p>
<p>Brent has refactored and modified many parts of Ruby in order to reduce the possibility of such “garbage pointers” occurring on the stack. As a result, garbage collection will be much more effective. Many objects that would otherwise not have been freed will be freed thanks to the MBARI patches.</p>
<p>As a side-effect of the reduced memory usage, applications typically run faster as well. Not only because applications are less likely to be swapped out, but also because modern hardware’s performance depends greatly on the amount of memory traffic.</p>
</li>
<li>Ruby uses an inefficient, linear time algorithm for extending the stack space when switching context between threads and/or continuations. This is mostly noticeable when you have a lot of threads. Brent replaces this with a constant time algorithm, which is much faster.</li>
<li>It adds the methods __file__ and __line__ to the Method, UnboundMethod and Proc classes. Very useful for inspecting large code bases that make heavy use of metaprogramming. These methods are documented in the <a href="http://www.rubyenterpriseedition.com/documentation.html#_obtaining_the_source_filename_and_line_of_arbitrary_methods_and_blocks">Ruby Enterprise Edition manual</a>.</li>
</ul>
<p>  We&#8217;ve ported his patch set to 1.8.7-p174. Especially Twitter benefited a lot from these patches.
</dd>
<dt>The zero-copy context switching patch have been integrated as an optional feature</dt>
<dd>Joe Damato and Aman Gupta have created a patch which implements <a href="http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/">zero-copy context switching</a> in Ruby&#8217;s threading system. In Ruby 1.8, whenever Ruby switches context to another thread, it has to copy over the entire thread stack. This is very expensive, and the deeper your function calls are nested, the slower it becomes. The zero-copy context switching patch removes the need to copy any stack data; instead, it keeps all thread stacks at different areas in memory and simply changes the stack pointer. In extreme situations, this patch can increase threading performance by as much as 10 times!</p>
<p>Phusion Passenger is not really affected by this patch because its request handling core is not multithreaded, at least not at this moment. But Mongrel is heavily multithreaded and will benefit tremendously from this patch.</p>
<p>We&#8217;ve made this patch compatible with the MBARI patch set, but there are currently some issues with 64-bit platforms, so we&#8217;ve disabled it by default. You can enable it by running the REE installer with <code>--fast-threading</code></dd>
<dt>Various other minor changes</dt>
<dd>
<ul>
<li>When compiling REE, binaries are optimized for size (-Os), not speed. See below for an explanation.</li>
<li>The tcmalloc memory allocator has been upgraded to version 1.3</li>
<li>RubyGems upgraded to version 1.3.5.</li>
<li>The Debian package now installs files to /usr/local, so that one doesn&#8217;t have to mess with $PATH to get things working.</li>
</dd>
</dl>
<h2>In practice</h2>
<p>This release has been beta tested with <a href="http://www.twitter.com/">Twitter</a>. <a href="http://blog.evanweaver.com/articles/2009/09/24/ree/">Evan Weaver reported significant improvements in Twitter&#8217;s throughput</a> after having switched to this REE release.</p>
<p><a href="http://blog.evanweaver.com/articles/2009/09/24/ree/"><img src="http://blog.phusion.nl/wp-content/uploads/2009/09/ree_benchmark.png" alt="REE benchmark by Twitter" title="REE benchmark by Twitter" width="537" height="437" class="alignnone size-full wp-image-357" /></a></p>
<p>Twitter especially benefited from the MBARI patch set. We&#8217;ve found a few unexpected things during the beta testing phase:</p>
<ul>
<li>We&#8217;ve found that optimizing Ruby for code size (compilation with -Os) yields better results that optimizing Ruby for speed (compiling with -O2). Ruby is a very unconventional program and we suspect that optimizing for code size allows more instructions to fit in the CPU instruction cache, resulting in better performance.</li>
<li>Microbenchmarks and synthetic benchmarks such as the <a href="http://github.com/acangiano/ruby-benchmark-suite">Ruby benchmark suite</a> do not show any performance improvements at all, although Twitter was able to measure a significant performance improvement. As always, benchmark results should be taken with a grain of salt.</li>
</ul>
<p>Other major beta testers include <a href="http://37signals.com/">37signals</a> and <a href="http://www.novell.com/">Novell</a>. They&#8217;re still in the progress of testing, and we&#8217;re eager to receive their test results.</p>
<h2>Sponsors</h2>
<p>Special thanks go out to <a href="http://www.lvs.co.uk/">LVS</a> for acting as a gold sponsor for this release:</p>
<blockquote><p>LVS has been building and supplying enterprise platforms for the betting and gaming industry in South East Asia, Europe and the UK for more than 10 years. The team at LVS is a balanced mix of gaming industry specialists, technical experts and entrepreneurial leaders. With offices in London and Gibraltar we directly employ over 40 staff. </p>
<p>Our Advanced Betting Platform (a fully internationalized and localized high-availability platform based on Java and Ruby on Rails) is now regarded as the most technically advanced sports book system available in the World, and has been customised to fit the requirements of companies like Victor Chandler in Gibraltar and La Française des Jeux in France.</p>
<p><a href="http://www.lvs.co.uk/"><img src="http://blog.phusion.nl/wp-content/uploads/2009/09/LVSLogo.png" alt="LVSLogo" title="LVSLogo" width="449" height="150" class="alignnone size-full wp-image-379" style="border: 0" /></a></p></blockquote>
<p>We also thank the following people and organizations for sponsoring this release:</p>
<ul>
<li><a href="http://interestingtimes.net">Matt Gillam</a>, 300.00 USD</li>
<li><a href="http://ukservers.net">Robert Harvey</a>, 250.00 USD</li>
<li><a href="http://aspgems.com">ASPgems SL</a>, 200.00 USD</li>
<li>Jason Lee, 200.00 USD</li>
<li>Sung Jin Won, 200.00 USD</li>
<li>Amedeo Paglione, 100.00 USD</li>
<li><a href="http://mokisystems.com">Bret Berger</a>, 100.00 USD</li>
<li><a href="http://powernav.com">Ernest Ellingson</a>, 100.00 USD</li>
<li><a href="http://mindspring.com">Gavin Stark</a>, 100.00 USD</li>
<li><a href="http://www.hostingplayground.com/">Hosting Playground Inc.</a>, 100.00 USD</li>
<li><a href="http://lukemelia.com">LUCAS MELIA</a>, 100.00 USD</li>
<li><a href="http://tesly.com">Tesly, LLC</a>, 100.00 USD</li>
<li><a href="http://3hv.co.uk">3hv</a>, 50.00 USD</li>
<li>David Balatero, 50.00 USD</li>
<li>Francesc Esplugas Marti, 50.00 USD</li>
<li><a href="http://slackworks.com">Frans Benders</a>, 50.00 USD</li>
<li><a href="http://invisible.ch">Invisible Jens Christian Fischer</a>, 50.00 USD</li>
<li>Layton Wedgeworth, 50.00 USD</li>
<li>LeeCommerce, LLC, 50.00 USD</li>
<li>Mikhail Platov, 50.00 USD</li>
<li><a href="http://revolutionco.com">Revolution Co.</a>, 50.00 USD</li>
<li>Trevor Smith, 50.00 USD</li>
<li><a href="http://stevenberg.net">Steven Berg</a>, 30.00 USD</li>
<li><a href="http://kovyrin.net">Alexey Kovyrin</a>, 25.00 USD</li>
<li>Chris Gaffney, 25.00 USD</li>
<li><a href="http://fthat.com">Cindy Studebaker</a>, 25.00 USD</li>
<li><a href="http://addthree.com">Norman Clarke</a>, 25.00 USD</li>
<li><a href="http://arpnetworks.com">ARP Networks</a>, 20.00 USD</li>
<li><a href="http://bluemars.net">Frank Wöckener</a>, 20.00 USD</li>
<li>Istvan Hoka, 20.00 USD</li>
<li>James Cribbs, 20.00 USD</li>
<li>Luke Randall, 20.00 USD</li>
<li>Roger Pack, 20.00 USD</li>
<li>Trevor Turk, 20.00 USD</li>
<li>Eric DUMINIL, 15.00 USD</li>
<li><a href="http://osesm.com">@bryanl</a>, 10.00 USD</li>
<li><a href="http://divilment.com">declanmcgrath</a>, 10.00 USD</li>
<li>David Dollar, 5.00 USD</li>
<li>Joshua Lund, 5.00 USD</li>
<li>Kieran P, 5.00 USD</li>
</ul>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
<h2>UPDATE: Snow Leopard support</h2>
<p>It looks like tcmalloc has some issues on Snow Leopard, causing the compiler to crash. We&#8217;ve just been able to obtain Snow Leopard last weekend (it had been sold out for several weeks) and we haven&#8217;t gotten around installing it yet.</p>
<p>To install REE on Snow Leopard, you should run the installer with <code>--no-tcmalloc</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/09/29/ruby-enterprise-edition-1-8-7-20090928-released/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.6-20090610 released: fixes BigDecimal DoS vulnerability</title>
		<link>http://blog.phusion.nl/2009/06/10/ruby-enterprise-edition-186-20090610-released-fixes-bigdecimal-dos-vulnerability/</link>
		<comments>http://blog.phusion.nl/2009/06/10/ruby-enterprise-edition-186-20090610-released-fixes-bigdecimal-dos-vulnerability/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 09:26:44 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=270</guid>
		<description><![CDATA[A denial of service vulnerability in Ruby had been found. An attacker could supply a large value to BigDecimal, causing the Ruby interpreter to crash. The following versions of Ruby are affected: Ruby 1.8.6-p368 and all prior versions Ruby 1.8.7-p160 and all prior versions Ruby Enterprise Edition 20090520 and all prior versions The following code [...]]]></description>
			<content:encoded><![CDATA[<p>A denial of service <a href="http://www.ruby-lang.org/en/news/2009/06/09/dos-vulnerability-in-bigdecimal/">vulnerability</a> in Ruby had been found. An attacker could supply a large value to BigDecimal, causing the Ruby interpreter to crash. The following versions of Ruby are affected:</p>
<ul>
<li>Ruby 1.8.6-p368 and all prior versions</li>
<li>Ruby 1.8.7-p160 and all prior versions</li>
<li>Ruby Enterprise Edition 20090520 and all prior versions</li>
</ul>
<p>The following code demonstrates the problem:</p>
<pre>require 'bigdecimal'
BigDecimal("9E69999999").to_s("F")</pre>
<p>We are releasing Ruby Enterprise Edition 1.8.6-20090610, which is an emergency release containing a backport of the fix. All users are advised to upgrade. We have tested this release against RubySpec, the Rails 2.3 test suite and the Phusion Passenger test suite, and everything passes.</p>
<p>REE releases are usually hosted on RubyForge, but it&#8217;s currently down, so we&#8217;re temporarily hosting this release on our own web server. Please note that these links are temporary and will be replaced by RubyForge links once RubyForge is online again. (UPDATE: links point to RubyForge now)</p>
<ul>
<li><a href="http://rubyforge.org/frs/download.php/58677/ruby-enterprise-1.8.6-20090610.tar.gz">Download source code</a></li>
<li><a href="http://rubyforge.org/frs/download.php/58679/ruby-enterprise_1.8.6-20090610_i386.deb">Download x86 Ubuntu package</a></li>
<li><a href="http://rubyforge.org/frs/download.php/58678/ruby-enterprise_1.8.6-20090610_amd64.deb">Download x86_64 Ubuntu package</a></li>
</ul>
<p>To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/06/10/ruby-enterprise-edition-186-20090610-released-fixes-bigdecimal-dos-vulnerability/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition third sponsorship campaign</title>
		<link>http://blog.phusion.nl/2009/05/27/ruby-enterprise-edition-third-sponsorship-campaign/</link>
		<comments>http://blog.phusion.nl/2009/05/27/ruby-enterprise-edition-third-sponsorship-campaign/#comments</comments>
		<pubDate>Wed, 27 May 2009 20:05:55 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=236</guid>
		<description><![CDATA[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: A &#8220;copy-on-write friendly&#8221; garbage collector, capable of reducing Ruby on Rails applications&#8217; memory usage by 33% on average. The tcmalloc memory allocator, which lowers overall memory usage and boosts memory [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>Performance enhancements for single-threaded applications (<a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">SIGVTALRM patch</a>) and for Sparc machines (<a href="http://blogs.sun.com/d/entry/ruby_performance_gains_on_sparc">Sparc patch</a>).</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE can be easily installed in parallel to your existing Ruby interpreter, allowing you switch to REE with minimal hassle or risk. REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.</p>
<h2>Announcing the third sponsorship campaign</h2>
<p>A lot of exciting things are happening in Ruby land. On the one hand we have Ruby 1.9, which is not only much faster than Ruby 1.8, but also tends to <a href="http://eigenclass.org/R2/writings/object-size-ruby-ocaml">use less memory</a> and has a better threading model. Although the Ruby libraries ecosystem is quickly catching up with 1.9, there are still many libraries which are not yet 1.9-compatible, preventing many people from using Ruby 1.9 in production environments.</p>
<p>On the other hand, people such as <a href="http://sites.google.com/site/brentsrubypatches">Brent Roman</a>, <a href="http://timetobleed.com/">Aman Gupta and Joe Damato</a> have made exciting improvements to the Ruby 1.8 codebase in the areas of performance and memory usage. Some of these improvements bring parts of Ruby 1.8 on par with 1.9, while other improvements potentially affect 1.9 as well. These 1.8 improvements allow us to enjoy the benefits of having a better, faster and less memory hungry Ruby interpreter in production environments, without sacrificing compatibility.</p>
<p>That said, these patches are not small, and merging them with each other, as well as with all the existing Ruby Enterprise Edition patches, is not a trivial job. We have not only been working with these people for a while now to get their patches incorporated into Ruby Enterprise Edition, but we have also sent them financial contributions in order to thank them for their excellent work.</p>
<p>In order to be able to continue to help people who improve Ruby, as well as to cover our own development expenses and business expenses, we are pleased to announce the third Ruby Enterprise Edition sponsorship campaign. It is thanks to the <a href="http://blog.phusion.nl/2009/01/13/ruby-enterprise-edition-186-20090113-released-thanks-to-sponsors/">success of the last campaigns</a>, as well as the generosity of the community, that we are able to do this.</p>
<p>Just like the last campaign, this one is public and everyone can participate. This campaign will cover the following work:</p>
<dl>
<dt>Merging Brent Roman&#8217;s MBARI patches into Ruby Enterprise Edition.</dt>
<dd>
<p>Brent Roman&#8217;s <a href="http://sites.google.com/site/brentsrubypatches/">MBARI patch set</a> uses a variety of techniques to significantly reduce Ruby&#8217;s memory usage. It also adds a bunch of performance optimizations, useful features and bug fixes.</p>
<ul>
<li>Ruby&#8217;s garbage collector scans the C stack conservatively. This means that any data on the C stack that might look like a pointer pointing to a valid Ruby object will be treated like a real pointer, causing the object to be retained during garbage collection. Because of the way Ruby is written and because of compiler optimizations, there may be a lot of such &#8220;pointers&#8221; on the stack, even when they&#8217;re not really pointers but just garbage data that like look pointers.
<p>Brent has refactored and modified many parts of Ruby in order to reduce the possibility of such &#8220;garbage pointers&#8221; occurring on the stack. As a result, garbage collection will be much more effective. Many objects that would otherwise not have been freed will be freed thanks to the MBARI patches.</p>
<p>As a side-effect of the reduced memory usage, applications typically run faster as well. Not only because applications are less likely to be swapped out, but also because modern hardware&#8217;s performance depends greatly on the amount of memory traffic.</li>
<li>Ruby uses an inefficient, linear time algorithm for extending the stack space when switching context between threads and/or continuations. This is mostly noticeable when you have a lot of threads. Brent replaces this with a constant time algorithm, which is much faster.</li>
<li>It adds the methods __file__ and __line__ to the Method, UnboundMethod and Proc classes. Very useful for inspecting large code bases that make heavy use of metaprogramming.</li>
<li>It fixes some crashing bugs in Ruby&#8217;s continuations implementation.</li>
</ul>
<p><b>Current status:</b> The MBARI patches partially overlap with our copy-on-write patches, but we have been able to successfully merge the two patch sets together. Merging the result with the other patches, e.g. the RailsBench patches which are also included in REE, is still a work-in-progress, but we expect to be finished very soon.
</dd>
<dt>Merging Joe Damato&#8217;s and Aman Gupta&#8217;s patches into Ruby Enterprise Edition.</dt>
<dd>Joe Damato and Aman Gupta&#8217;s <a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">SIGVTALRM patch</a>, which is already included in the latest Ruby Enterprise Edition release, fixes a Ruby thread scheduler bug which degrades performance once the last thread in the application (except the main thread) has exited. This is especially important in applications which are mostly single-threaded, but may occasionally spawn a thread. This includes all single-threaded applications that use the &#8216;timeout&#8217; library, because it is implemented using threads.</p>
<p>This team has recently also created a patch which <a href="http://timetobleed.com/fix-a-bug-in-rubys-configurein-and-get-a-30-performance-boost/">fixes the performance degradations that occur when &#8211;enable-pthread is enabled</a>, as well as a <a href="http://timetobleed.com/fixing-threads-in-ruby-18-a-2-10x-performance-boost/">zero-copy context switching patch</a>. In Ruby 1.8, whenever Ruby switches context to another thread, it has to copy over the entire thread stack. This is very expensive, and the deeper your function calls are nested, the slower it becomes. The zero-copy context switching patch removes the need to copy any stack data; instead, it keeps all thread stacks at different areas in memory and simply changes the stack pointer. In extreme situations, this patch can increase threading performance by as much as 10 times!</p>
<p>Phusion Passenger is not really affected by this patch because its request handling core is not multithreaded, at least not at this moment. But Mongrel is heavily multithreaded and will benefit tremendously from this patch.</p>
<p><b>Current status:</b> We&#8217;ve tested this patch, and it turns out that it breaks continuations. We&#8217;re working with the authors to solve this issue. Also, parts of this patch overlap with the MBARI patch set. We are currently working on merging them.</dd>
<dt>Documenting the implications for REE users. </dt>
<dd>The MBARI patch set adds a few more API calls for tuning the garbage collector, as well as some configure flags for customizing the manner with which memory consumption is reduced. We will document these things.</dd>
</dl>
<h2>Campaign goal and conditions</h2>
<p>The goal of this campaign is <b>9000 USD</b>. We have a surplus of 642 USD from the last campaign, and we&#8217;ve already factored in this amount.</p>
<p>Once the campaign goal has been reached, we&#8217;ll release the work as soon as it has been finished. Highlights:</p>
<ul>
<li>All sponsors will be given credit on the related REE release announcement on our blog. If the sponsor is an organization then we&#8217;ll link to the website, if available.</li>
<li>The money that we receive through this campaign shall be treated like donations.</li>
<li>An invoice is available if both of the following conditions apply:
<ol>
<li>You are an organization based in the European Union.</li>
<li>You&#8217;ve sent 200 USD or more.</li>
</ol>
</li>
<li>If we receive more money than the campaign goal, then the surplus will be used for the next REE sponsorship campaign.</li>
</ul>
<p>To sponsor this campaign, please click on the following button:<br />
<a href='http://www.pledgie.com/campaigns/4545'><img alt='Click here to lend your support to: Ruby Enterprise Edition third sponsorship campaign and make a donation at www.pledgie.com !' src='http://www.pledgie.com/campaigns/4545.png?skin_name=chrome' border='0' /></a></p>
<p>Thank you for your continued support!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/05/27/ruby-enterprise-edition-third-sponsorship-campaign/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.6-20090520 released</title>
		<link>http://blog.phusion.nl/2009/05/20/ruby-enterprise-edition-186-20090520-released/</link>
		<comments>http://blog.phusion.nl/2009/05/20/ruby-enterprise-edition-186-20090520-released/#comments</comments>
		<pubDate>Wed, 20 May 2009 16:42:51 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=226</guid>
		<description><![CDATA[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: A &#8220;copy-on-write friendly&#8221; garbage collector, capable of reducing Ruby on Rails applications&#8217; memory usage by 33% on average. The tcmalloc memory allocator, which lowers overall memory usage and boosts memory [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>Performance enhancements for single-threaded applications (<a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">SIGVTALRM patch</a>) and for Sparc machines (<a href="http://blogs.sun.com/d/entry/ruby_performance_gains_on_sparc">Sparc patch</a>).</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE can be easily installed in parallel to your existing Ruby interpreter, allowing you switch to REE with minimal hassle or risk. REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<dl>
<dt>&#8220;Virtual timer expired&#8221; bug fixed</dt>
<dd>It turns out that the single threading performance fix (SIGVTALRM patch) that was included in the last release had a bug which caused Ruby to crash with a &#8220;Virtual timer expired&#8221; error in some circumstances. This problem has been fixed, and our sincere apologies for any inconvenience that this may have caused.<br />
If you were experiencing any crash problems, then please upgrade to this release.</dd>
<dt>Other changes</dt>
<dd>There are also some minor documentation and installer improvements.</dd>
</dl>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
<table class="wwr">
<tr>
<td>
<a href="http://www.workingwithrails.com/person/11402-hongli-lai"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Hongli Lai</a>
</td>
<td>
<a href="http://www.workingwithrails.com/person/12429-ninh-bui"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Ninh Bui</a>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/05/20/ruby-enterprise-edition-186-20090520-released/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.6-20090421 released</title>
		<link>http://blog.phusion.nl/2009/04/22/ruby-enterprise-edition-186-20090421-released/</link>
		<comments>http://blog.phusion.nl/2009/04/22/ruby-enterprise-edition-186-20090421-released/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 12:55:47 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=201</guid>
		<description><![CDATA[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: A &#8220;copy-on-write friendly&#8221; garbage collector, capable of reducing Ruby on Rails applications&#8217; memory usage by 33% on average. The tcmalloc memory allocator, which lowers overall memory usage and boosts memory [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements, such as:</p>
<ul>
<li>A &#8220;copy-on-write friendly&#8221; garbage collector, capable of <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">reducing Ruby on Rails applications&#8217; memory usage by 33%</a> on average.</li>
<li>The <a href="http://code.google.com/p/google-perftools/">tcmalloc</a> memory allocator, which lowers overall memory usage and boosts memory allocation speed.</li>
<li>Performance enhancements for single-threaded applications (<a href="http://timetobleed.com/ruby-threading-bugfix-small-fix-goes-a-long-way/">SIGVTALRM patch</a>).</li>
<li>The ability to <a href="http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning">performance tune</a> the garbage collector.</li>
<li>Various analysis and debugging features.</li>
</ul>
<p>REE has been out for about a year now and is already used by many high-profile websites and organizations, such as <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<dl>
<dt>Now based on Ruby 1.8.6-p287</dt>
<dd>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 &#8216;dl&#8217; library.</p>
<p>Unfortunately there wasn&#8217;t enough time to base REE on Ruby 1.8.6-p368, which was released last week. This is planned for a future version.</dd>
<dt>Fixed a possible infinite looping bug in the garbage collector</dt>
<dd>A long-standing, but rare, infinite looping bug in the garbage collector has been fixed. If you&#8217;ve ever seen Ruby Enterprise Edition freezing while using 100% CPU, then that&#8217;s probably this bug. This bug only occurs under <a href="http://izumi.plan99.net/blog/index.php/2009/04/10/hunting-down-obscure-gc-bugs/">very rare circumstances involving deferred running of finalizers</a>.</p>
<p>Users are strongly advised to upgrade to this release for this bug fix alone.</dd>
<dt>Upgraded to tcmalloc 1.2</dt>
<dd>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.</dd>
<dt>Upgraded to RubyGems 1.3.2</dt>
<dd>If you&#8217;ve ever seen an error message in Phusion Passenger along the lines of &#8220;Directory &#8216;/nonexistent&#8217; not found&#8221;, then what you&#8217;ve seen is a bug in RubyGems 1.3.1. This bug has been fixed in RubyGems 1.3.2.</dd>
<dt>Included Sparc optimization patches</dt>
<dd>Darryl Gove&#8217;s and Miriam Blatt&#8217;s <a href="http://blogs.sun.com/d/entry/ruby_performance_gains_on_sparc">Sparc optimization patches</a> are now included. It has been reported that these patches make Ruby significantly faster and more stable on Sparc machines.</dd>
<dt>OpenSSL extension compilation on Gentoo fixed</dt>
<dd>The Ruby OpenSSL extension didn&#8217;t compile correctly on Gentoo. This issue has been fixed by applying a patch by the Gentoo developers.</dd>
<dt>Installer improvements</dt>
<dd>
<ul>
<li>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 &#8211;enable-shared, which is required for some libraries such as RubyCocoa.</li>
<li>Some Solaris compilation problems have been fixed. Patch by Dana Contreras.</li>
<li>The CC, CFLAGS and LDFLAGS environment variables are now respected by the installer itself as well. Patch by Dana Contreras.</li>
</ul>
</dd>
<dt>Documentation improvements</dt>
<dd>Evan Weaver has recently <a href="http://blog.evanweaver.com/articles/2009/04/09/ruby-gc-tuning/">published</a> the garbage collector tuning settings used by Twitter. These settings have been included in the documentation along with the 37signals settings.</p>
<p>In our tests, the Twitter settings result in a 12% performance improvement at the cost of a higher memory usage.</dd>
<dt>64-bit Ubuntu package</dt>
<dd>We now also provide an x86_64 Ubuntu package.</dd>
</dl>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
<table class="wwr">
<tr>
<td>
<a href="http://www.workingwithrails.com/person/11402-hongli-lai"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Hongli Lai</a>
</td>
<td>
<a href="http://www.workingwithrails.com/person/12429-ninh-bui"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Ninh Bui</a>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/04/22/ruby-enterprise-edition-186-20090421-released/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ruby Enterprise Edition 1.8.6-20090201 released</title>
		<link>http://blog.phusion.nl/2009/02/01/ruby-enterprise-edition-186-20090201-released/</link>
		<comments>http://blog.phusion.nl/2009/02/01/ruby-enterprise-edition-186-20090201-released/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 19:51:24 +0000</pubDate>
		<dc:creator>Hongli Lai</dc:creator>
				<category><![CDATA[Ruby Enterprise Edition]]></category>

		<guid isPermaLink="false">http://blog.phusion.nl/?p=74</guid>
		<description><![CDATA[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&#8217;s main benefits are the ability to reduce Ruby on Rails applications&#8217; memory usage by 33% on average, the ability to increase applications&#8217; performance and the inclusion of various analysis and debugging [...]]]></description>
			<content:encoded><![CDATA[<h2>What is Ruby Enterprise Edition?</h2>
<p><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements. REE&#8217;s main benefits are <a href="http://www.rubyenterpriseedition.com/comparisons.html#overall_conclusion">the ability to reduce Ruby on Rails applications&#8217; memory usage by 33%</a> on average, the ability to increase applications&#8217; performance and the inclusion of various analysis and debugging features. The lower memory usage and increased performance are possible because REE includes &#8211; among other enhancements &#8211; 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 <b>New York Times, Shopify and 37signals</b>.</p>
<blockquote><p>&#8220;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 <b>many thousand dollars of savings</b> even at today’s hardware prices.&#8221;<br />
&#8211; <a href="http://blog.leetsoft.com/2008/11/15/passenger">Tobias Lütke</a> (<a href="http://www.shopify.com/">Shopify</a>)</p></blockquote>
<p>And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.</p>
<h2>Changes</h2>
<p>Version 1.8.6-20090201 is a minor bugfix release. The changes are as follows:</p>
<ul>
<li>Fixed a memory corruption bug in the readline library. If you were having problems with readline or irb, try this release.</li>
<li>Preserve file attributes when installing tcmalloc. Symlinks are now properly copied as symlinks.</li>
<li>For those who do not want to or can&#8217;t use the REE installer, there are now <a href="http://www.rubyenterpriseedition.com/documentation.html#_manual_installation_for_experts">manual installation instructions</a> available.</li>
</ul>
<h2>Download &amp; upgrade</h2>
<p>To install Ruby Enterprise Edition, please visit <a href="http://www.rubyenterpriseedition.com/download.html">the download page</a>. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to <a href="http://www.rubyenterpriseedition.com/documentation.html">the documentation</a> for upgrade instructions.</p>
<table class="wwr">
<tr>
<td>
<a href="http://www.workingwithrails.com/person/11402-hongli-lai"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Hongli Lai</a>
</td>
<td>
<a href="http://www.workingwithrails.com/person/12429-ninh-bui"><img src="http://workingwithrails.com/images/tools/compact-small.jpg"/> Ninh Bui</a>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.phusion.nl/2009/02/01/ruby-enterprise-edition-186-20090201-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
