New and Noteworthy in JRuby 1.1.3

JRuby 1.1.3 has been released a couple of days ago, and I wanted to highlight some of the most interesting changes in this release, from my perspective.

  1. RubyGems 1.2. If you ever installed even a single Ruby gem, you know the blues, it was taking way too long, consuming lots of memory and felt pretty heavyweight. In the past, we even had to increase the memory limits for JRuby up to 500Mb so that RubyGems could work without out of memory errors. Not anymore! RubyGems 1.2 is a fantastic release that speed things up dramatically, and JRuby 1.1.3 comes with it by default. Just try it and you’ll be amazed, I promise! :) Not only that, but RubyGems 1.2 is much easier to customize to suit the needs of particular implementations/platforms, and we’ve taken full advantage of that, eliminating essentially all custom JRuby-specific patches over the RubyGems sources. All in all, kudos to RubyGems team!
  2. Performance. Some of us are obviously obsessed with performance, so there was a lot of work put into that area, yielding out nice results. And the first measurements are pretty encouraging. Here are some of the things that were improved in this release:
    • Interpreter performance is greatly improved (Tom landed a couple of nice bombs on that one!)
    • Core IO performance and memory requirements significantly improved, memory leaks in IO eliminated.
    • Time’s methods are much faster now.
    • Some loops and block invocations improvements. Things like 10000.times {} are faster now.
    • General performance fixes to use faster methods where possible, JIT tweaks, reduced object churn.
    • Memory leaks in RubyArray are fixed.
  3. Compatibility/Conformance. There were *LOADS* or compatibility test fixes, most of them were driven by RubySpec tests and test failures. For StringIO alone, we had fixed at least 50 failures. Then, lots of fixes for Socket, ARGF, IO, Kernel.select, for problems with various empty expressions, etc. I tell you, if you feel serious about some important functionality in Ruby and want it to be properly tested and consistent across ever-growing list of Ruby implementations, there is no other good way but to join the RubySpec revolution!
  4. Usability. New command line options like --server or --client instead of -J-server or -J-client, also --debug and --jdb now functional on Windows. Better out of memory error messages. Some 1.8.7-level improvements, like better Tempfile (with ability to specify the suffix/prefix for the file). Also, some classloader fixes so that JRuby could work better with 3rd party libraries like Spring, XMLDecoder, Activerecord-JDBC drivers shipped via RubyGems, JXTable, etc, would work without clunky workaround (see JRUBY-2495 for more details).

I think, that’s quite enough for 1.5 month work… Enjoy!

5 Responses to “New and Noteworthy in JRuby 1.1.3”

  1. Mike Herrick Says:

    Keep up the great work Vladimir.

  2. MistyLight Says:

    Don’t understand, why people are downmodding this. Is Linus calling people “Wanking Walruses” or “Masturbating Monkeys” more important to programming?

  3. sean Says:

    Re “Rubygems 1.2″: Heh. It’s nice to see people working hard to get a reimplementation of tar and $RUBYLIB to run in less than half a gig of memory…

  4. James Says:

    Hi, I found your blog on this new directory of WordPress Blogs at blackhatbootcamp.com/listofwordpressblogs. I dont know how your blog came up, must have been a typo, i duno. Anyways, I just clicked it and here I am. Your blog looks good. Have a nice day. James.

  5. Bookmarks about Empty Says:

    [...] - bookmarked by 1 members originally found by Rabix99 on 2008-09-11 New and Noteworthy in JRuby 1.1.3 http://blog.emptyway.com/2008/07/21/new-and-noteworthy-in-jruby-113/ - bookmarked by 6 members [...]

Leave a Reply