Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update

JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update

This item in japanese

JRuby 1.0.3 was made available, another release of the stable JRuby 1.0.x branch. Among fixed bugs, this release fixes some problems with Rails 2.0, which were caused by Rails 2.0 now requiring OpenSSL.

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
rubygems <= 0.9.4 <= 0.9.4, = 1.0 *
rails <= 1.2.6,
>= 2.0.x †
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.

Rate this Article