[Closed] [ruby-core:59728] Ruby 2.1.0 in Production: known bugs and patches

Issue #9470 has been updated by Yui NARUSE.

Status changed from Open to Closed

All bug fixes are merged in r44847

Backport #9470: [ruby-core:59728] Ruby 2.1.0 in Production: known bugs
and patches

  • Author: Hiroshi SHIBATA
  • Status: Closed
  • Priority: Normal
  • Assignee:
  • Category:
  • Target version:
  • ruby -v: 2.1.0

reminder memo: copy from ruby-core:59728. original author is tmm1

Last week, we upgraded the github.com rails app to ruby 2.1.0 in 
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 
release 2.1.1 sooner rather than later, as some of the bugs are quite 
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
  affects some payment processing gems
  workaround patch by @phasis:

- SizedQueue not working
  #9302, #9343, #9396
  patches by @normalperson:

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

- funny-falcon's st.c pool allocator

- funny-falcon's method cache patch
  proposed for trunk in #9262

- optimized Hash#[] and Hash#[]= with string literals
  merged to trunk in #9382 (r44551)

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