InfoQ

News

JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update

Posted by Werner Schuster on Dec 20, 2007

Community
Java,
Ruby
Topics
Ruby on Rails ,
JRuby
Tags
JRuby ,
SSL ,
Rails
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
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.

No comments

Watch Thread Reply

Educational Content

Rails in the Large: How Agility Allows Us to Build One Of the World's Biggest Rails Apps

Neal Ford shows what ThoughtWorks learned from scaling Rails development: infrastructure, testing, messaging, optimization, performance.

Stuart Halloway on Clojure and Functional Programming

Stuart Halloway discusses Clojure and functional programing on the JVM in depth, and touches on the uses of a number of other modern JVM languages including JRuby, Groovy, Scala and Haskell.

Orion Henry and Blake Mizerany on Heroku

Orion Henry and Blake Mizerany talk about the technology behind Heroku and the benefits of the new add-on system.

Security for the Services World

Chris Riley presents security issues threatening service based systems, examining security threats, presenting measures to reduce the risks, and mentioning available security frameworks.

Navigating The Rapids:Real-World Lessons in Adopting Agile

This talk investigates technical issues encountered when moving to an Agile process.

Codename "M": Language, Data, and Modeling, Oh My!

Don Box and Amanda Laucher present “M”, a declarative language for building data models, domain models or external DSLs. Don Box's demos show some of M’s features and latest changes of the language.

SOA Manifesto - 4 Months After

It is four months since the SOA manifesto was announced; InfoQ interviewed the original author’s to get insight into the motivations and the process behind the initiative.

Memory Barriers and JVM Concurrency

This article explains the impact memory barriers, or fences, have on the determinism of multi-threaded programs.