IronRuby and the Road to 1.0
IronRuby was originally announced by Microsoft at MIX'07 and two years later developers are wondering where is version 1.0. InfoQ interviewed John Lam My in January of 2008, where John indicated the team was looking for release in the second half of the year, but that did not materialize.
As developers, we know things always take longer than you think they will.
Jimmy Schementi, Program Manager for Microsoft on the IronRuby project, recently gave a talk titled “IronRuby 0.9” at OSCON 2009 where he outlined the progress Microsoft has made moving toward IronRuby 1.0. IronRuby has gone through much development since our talk with John Lam in early 2008. There some key updates worth reviewing:
Released at the beginning of July 2009 it marks a significant milestone in moving the language forward. Jimmy points out on his blog:
Performance has been a major focus to this release, getting startup time quicker and optimizing built-in types. There has been more progress with Ruby compatibility (Cucumber works!) and .NET interop.
The focus of Jimmy’s OSCON talk was around this release which includes the last set of major features the implementation will see, which he outlined in a recent blog post and includes some key components of IronRuby and what they should mean to developers.
Cross-platform, cross-browser Ruby implementation:
Whenever people hear .NET [they first think about a top-level domain, but when in the context of “Microsoft”] they immediately think “Windows”. But Miguel and the Mono team have shown that isn’t reality. They’ve built a open-source implementation of .NET which runs on Linux, Mac OS, and also Windows. They are also building a open-source Silverlight 2 implementation, called Moonlight, allowing Silverlight applications to run on Linux browsers supporting Mozilla’s plug-in architecture; Silverlight 2 runs on Intel Macs and Windows. Since IronRuby runs on .NET and Silverlight, it also runs on Mono and Moonlight.
Because IronRuby integrates directly with .NET, you can use any existing .NET code from IronRuby. This means that any frameworks, be them Windows Forms, Windows Presentation Foundation (WPF), or GTK(#), can be used from IronRuby because .NET and Mono [respectively] have CLI bindings for these frameworks. Mono even has a Windows Forms implementation that translates to GTK, so the same application can run unmodified on both implementations.
Dynamic and Static language interop:
IronRuby has great integration with the .NET framework APIs, so C#/VB code can be called from IronRuby without it feeling like “interop”. C# can also call IronRuby through the Dynamic Language Runtime (DLR) Hosting APIs. However, in .NET 4.0 dynamic method dispatch is part of C#, so calling IronRuby from C# is just as easy as a C# method call. Being that IronRuby is built on the DLR, it can interoperate with other DLR languages just as easily, so Python and Ruby play along nicely today, and future DLR languages as well.
Performance improvements are measurable including Ruby on Rails startup time going from 80+ seconds to about 20 seconds. Also noted is currently where IronRuby fairs running RubySpec test suite:
Compatibility is really good at this point. We run the RubySpec test suite, passing at (85%) and the test suites from popular Ruby frameworks, including Rails, Rake, RSpec, and RubyGems, on every check-in, and can run pretty substantial Rails applications. Increasing compatibility bugs will definitely be the focus of the point releases approaching 1.0.
Performance is also being measured against other Ruby implementations, such as MRI:
Performance is also in a very good place. This past version has pushed on the Ruby benchmark suite, and now we are >= 2x better than MRI on almost all benchmarks. Those numbers will be published on http://ironruby.info around the same time IronRuby 0.9 comes out.
When will IronRuby 1.0 be released? It will depend on the community. Improvements will be made to 0.9 in point releases (0.9.1, 0.9.2, etc) until the community decides it is ready to be called, IronRuby 1.0.
More information about IronRuby, downloading, contributing or finding support can be found on the IronRuby website.