InfoQ

News

JRuby Roundup: 1.1.3, rcov4jr, Rubinius MVM and FFI

Posted by Werner Schuster on Jul 23, 2008 03:15 PM

Community
Java,
Ruby
Topics
RubyGems ,
Runtimes ,
JRuby ,
Software Testing
Tags
JRuby ,
RCov ,
Rubinius ,
MVM
JRuby 1.1.3 has been released, with JRuby versions available for download at Codehaus. The major changes in this maintenance release, from the release notes:
- 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?

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.