Joshua Ballanco
E8a419959139f3f505b49bb95f7e7afe?d=retro
Ranked 65 in Phase 1 with 42 unique views, 8 counted upvotes and 7 counted downvotes

About the author

I only recently "crossed the pond" and am looking forward to engaging more with the European programming community. As Ruby has been my language of choice for almost 9 years now, (and seeing as how the Ruby community is one of the best communities around!) what better way than to attend EuRuKo.

A Tale of Two Rubies

It was the best of runtimes, it was the worst of runtimes, it was the summer of alternative Ruby compatibility, it was the winter of poorly specified behavior – in short, it was the very reason why having more than one Ruby implementation is so important.

Our story begins, innocently enough, with an attempt to port a Rails app to JRuby. In the land of JRuby, a bug in 1.9 compatibility appears. It almost isn't worth a second look, and a fix is fashioned easily enough, but we will take a second look because that is our nature. Our narrative then turns to the more subtle setting of C Ruby (a.k.a. MRI), where we discover that this JRuby bug has pointed us in the direction of poorly specified behavior in the oldest of Rubies.

Two more patches later (including a clever workaround to avoid the potential of a stack overflow), and the moral of our story emerges. Even if you never intend to use an alternate Ruby implementation, having multiple implementations of Ruby will ultimately make Ruby a better language.


Previous Next