JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update
Nick Sieger, JRuby team member, reports another change in JRuby 1.0.3:
Normally a 1.0.3 release would not be all that exciting, but during this cycle, trunk’s internal API (upon which several JRuby extensions depend) started to diverge. Unfortunately, this forced us to face a decision: either fork and maintain two versions of every extension (one for 1.0.x and one for 1.1 and beyond), or break backwards compatibility. We ended up choosing the latter, prefering a single schism to parallel version hell.In light of this, Nick continues with a useful table showing which Ruby libraries and Gems work with which JRuby version:
1.0 - 1.0.2, 1.1b1 1.0.3, 1.1b2 Library rubygems <= 0.9.4 <= 0.9.4, = 1.0 * rails <= 1.2.6,
>= 2.0.x †
any activerecord-jdbc <= 0.6 >= 0.7 jruby-openssl <= 0.0.5 >= 0.1 goldspike 1.3 1.4 mongrel any ‡ 1.1.2
Notice that Rails 2.0 works with all versions, albeit on JRuby versions on the left hand side of the table (1.0 - 1.0.2, 1.1b1), jruby-openssl <= 0.5 needs to be installed.
In JRuby 1.1 news, the work spent on improving the Regular Expression support and performance seems to be paying off. Tim Bray shows run times for a utility written in Ruby, run under different Ruby versions. The last two lines (excerpted here) show a very recent performance improvement in JRuby 1.1 (lower values are better):
Elapsed User System JRuby 1.1b 62.5 63.4 1.3 JRuby trunk 43.5 44.5 1.0
The JRuby trunk is a checkout of the source from 17th December 2007, whereas the JRuby 1.1b was released a few weeks ago. The considerable difference is explained by JRuby's Charles Nutter in a comment on Tim's article:
The improvement between JRuby 1.1b1 and trunk is almost entirely due to Marcin Mielczynski's amazing port of Oniguruma to the JVM. For the first time we have a real byte-based regex engine, which means JRuby regex performance just got a huge boost.