JRuby Roundup: 1.1.3, rcov4jr, Rubinius MVM and FFI
- RubyGems 1.2
- Greatly improved interpreter performance
- jrubyc compiler usability improvements and bug fixes
- Reduced memory usage and object churn
- Dozens of IO-related and core class RubySpec fixes + reduced memory for IO
- ThreadGroup fixes to resolve Mongrel "dead thread" issues
- New options/properties for tweaking JIT, thread pooling, and more
- Block invocation performance improvements
- Much faster Time performance
- Much better support for --debug
- Mentioning that context classloader fix would be nice (since it quite user visible, and many users seen/asked for it). JRUBY-2495
- 82 issues resolved since JRuby 1.1.2
Vladimir Sizikov provides some more information about the changes in JRuby 1.1.3, such as the improvements that come from shipping Ruby Gems 1.2:
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.The number of JRuby libraries and integration support keeps on growing. A new project aims to provide support for Rubinius Foreign Function Interface (FFI). The first mention comes from Charles Nutter in a mail to the jruby-dev list:
Welcome Wayne Meissner! Wayne is one of the primary folks behind JNA, which has totally saved us (chmod, symlink, other posix, UNIX sockets, and more). He's also implemented jruby-ffi, which should have its first release soon...and manages to pass many specs for Rubinius's fully FFI-based zlib.rb.Wayne Meissner is now a JRuby committer. The Github mirror of the JRuby repository shows a recent commit with the message "Merge branch 'ffi'", and a search for 'ffi' in the commit messages allows to track progress of the FFI support.
Rcov is a popular code coverage tool. Rcov doesn't work on JRuby because it uses native extensions to get notified when a method is invoked. The rcov4jr, hosted in the jruby-extras repository is an attempt to provide rcov on JRuby.
Finally, Charles Nutter has ported the Rubinius MVM API to JRuby. The commit of the JRuby port of the Rubinius MVM API (at the Github mirror of the JRuby repository) shows what's available. InfoQ covered the work on Ruby MVM implementations before.
What MRI-only Ruby libraries do you miss on JRuby?
Mike Hartington Jul 26, 2015