From: Aman Gupta Date: 2014-01-12T18:29:58-08:00 Subject: [ruby-core:59728] Ruby 2.1.0 in Production: known bugs and patches --001a11c342384b8d3504efd0db55 Content-Type: text/plain; charset=ISO-8859-1 Last week, we upgraded the github.com rails app to ruby 2.1.0 in production. While testing the new build for rollout, we ran into a number of bugs. Most of these have been fixed on trunk already, but I've documented them below to help anyone else who might be testing ruby 2.1 in production. @naruse I think we should backport these patches to the ruby_2_1 branch and release 2.1.1 sooner rather than later, as some of the bugs are quite critical. I'm happy to offer any assistance I can to expedite this process. - Struct#send(:setter=, rhs) does not return rhs #9353 (r44501) breaks the faraday gem - Array#uniq behavior change #9340 (r44512) affects the sass gem - Timeout behavior change #9354 (r44517, r44518, r44519) #9380 (r44523) breaks the faraday gem - [BUG] assertion failure in socket.c #9352 (r44490, r44496) breaks the excon gem - segfault in method() usage #9334, #9313, #9310, #9326, #9337 #9315 (r44455, r44458, r44510, r44527, r44552, r44553) segv inside activesupport4 and other gems - Hash lookup with #hash and #eql broken #9381 (r44525, r44534, r44537) - bigdecimal division issue #9316 affects some payment processing gems workaround patch by @phasis: https://github.com/github/ruby/commit/1e778b3b20 - SizedQueue not working #9302, #9343, #9396 patches by @normalperson: https://bugs.ruby-lang.org/attachments/download/4113 https://bugs.ruby-lang.org/attachments/download/4140 In addition to the bugfix patches above, we're running the following performance patches in production. These have proven quite stable in our environment, so I encourage you to try them if you're running a large ruby app. - funny-falcon's st.c density patch https://github.com/github/ruby/commit/1e025cbd2f - funny-falcon's st.c pool allocator https://github.com/github/ruby/commit/3d37e2b5a3 - funny-falcon's method cache patch https://github.com/funny-falcon/ruby/compare/trunk...class_local_cache proposed for trunk in #9262 - optimized Hash#[] and Hash#[]= with string literals https://github.com/github/ruby/commit/86946e72d7 merged to trunk in #9382 (r44551) Aside from the bugs above, our upgrade to 2.1 was very smooth. I'm happy to report that github.com is now running faster (and with less GC overhead) than ever before. Aman --001a11c342384b8d3504efd0db55 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Last week, we upgraded the github.com rails app to ruby 2.1.0 in production.
Wh= ile testing the new build for rollout, we ran into a number of bugs. Most o= f
these have been fixed on trunk already, but I've documented them b= elow to help
anyone else who might be testing ruby 2.1 in product= ion.

@naruse I think we should backport these patc= hes to the ruby_2_1 branch and
release 2.1.1 sooner rather than later, as some of the bugs are quite = critical.
I'm happy to offer any assistance I can to expedite= this process.

- Struct#send(:setter=3D, rhs) does= not return rhs
=A0 #9353 (r44501)
=A0 breaks the faraday gem

=
- Array#uniq behavior change
=A0 #9340 (r44512)
<= div>=A0 affects the sass gem

- Timeout behavior ch= ange
=A0 #9354 (r44517, r44518, r44519)
=A0 #9380 (r44523)
<= div>=A0 breaks the faraday gem

- [BUG] assertion f= ailure in socket.c
=A0 #9352 (r44490, r44496)
=A0 break= s the excon gem

- segfault in method() usage
=A0 #9334, #9313= , #9310, #9326, #9337
=A0 #9315 (r44455, r44458, r44510, r44527, = r44552, r44553)
=A0 segv inside activesupport4 and other gems

- Hash lookup with #hash and #eql broken
=A0 = #9381 (r44525, r44534, r44537)

- bigdecimal divisi= on issue
=A0 #9316
=A0 affects some payment processing = gems
=A0 workaround patch by @phasis:
=A0 =A0 https://github.com/github/ruby/co= mmit/1e778b3b20

- SizedQueue not working
=
=A0 #9302, #9343, #9396
=A0 patches by @normalperson:
= =A0 =A0 ht= tps://bugs.ruby-lang.org/attachments/download/4113
=A0 =A0 https://bugs= .ruby-lang.org/attachments/download/4140

In addition to the bugfix patches above, we're runn= ing the following
performance patches in production. These have p= roven quite stable in our
environment, so I encourage you to try = them if you're running a large ruby app.

- funny-falcon's st.c density patch
=A0 <= a href=3D"https://github.com/github/ruby/commit/1e025cbd2f">https://github.= com/github/ruby/commit/1e025cbd2f

- funny-falc= on's st.c pool allocator
=A0 https= ://github.com/github/ruby/commit/3d37e2b5a3

- = funny-falcon's method cache patch
=A0 https://github.= com/funny-falcon/ruby/compare/trunk...class_local_cache
=A0 proposed for trunk in #9262

- optimized H= ash#[] and Hash#[]=3D with string literals
=A0 https://github.com/github/ruby/c= ommit/86946e72d7
=A0 merged to trunk in #9382 (r44551)

Aside f= rom the bugs above, our upgrade to 2.1 was very smooth. I'm happy to
report that github.com is now run= ning faster (and with less GC overhead) than
ever before.

=A0 Aman
--001a11c342384b8d3504efd0db55--