Staying true to our "Conference-driven development schedule," this release is in conjunction with RailsConf '09, where IronRuby was demonstrated running real Rails applications and deploying them on IIS. A ton of work has been done in this release to get real Ruby programs running well, like RubyGems, Rake, Sinatra, and Rails.
Special thanks to Daniele Alessandri, Jirapong Nanta, and Ray Vernagus, who contributed code during this release, and everyone else who has submitted bugs, updated the wikis, or built software on-top of IronRuby.
What’s in the Release?
A big language feature of this past release was adaptive compilation; the ability to start-up quicker with a fast interpreter, and then compile code that gets interpreted more than two times. This brought Rails startup time down from 89 seconds to 34 seconds, giving Rails approximately 2.5x quicker startup. Since this compiles “hot” code, your Rails application will get faster after an initial set of requests. There is a lot more to do for performance, but this was a great accomplishment.
Here are some more interesting changes:
- Removes ClrString. CLR strings are referred to as System::String
- Removes IronRuby library. "require 'IronRuby'" is no longer needed; IronRuby module is now a built-in module.
- Integer/Float operations for all CLR primitive numeric types
- System::Char and System::String methods so that they behave like an immutable UTF-8 encoded string
- Improves handling of BOM in 1.8 mode
- Debugger visualizer for RubyObject so that VS will display the result of to_s in the Watch window.
- Adds support for .NET operators (op_* special methods)
- Implements bitwise operators on flag enums
- Precompilation of simple Ruby method invocations
- Improves performance for file IO#read method. Previously we were 10x slower than MRI, now we are approx. 1.5-times faster.
- Tons of fixes to File, String, Array, and other built-in types to drive up RubySpec and Ruby application test-suite pass-rates.
For detailed information, please see the CHANGELOG (which is much more verbose now. including all commit messages for the release … not just syncing to head of tfs)
- "ir script\server" causes a YAML parser error
- "igem install rails" fails
- yield fails in eval'd code
- Generic type conversion from Fixnum to Integer
- Pathname#cleanpath messes up the pathname
- Array#hash should properly handle recursive arrays
- ci_files set needed in mspec config
- autoload does not use File::SEPARATOR
- Time class instance
- __FILE__ doesn't return a canonicalized path
- … and various old RubyForge bugs during the move to CodePlex
IronRuby passed the 80% mark on RubySpec during this release:
You can see more IronRuby statistics on http://ironruby.info.
Also during this release IronRuby has been running other Ruby applications test-suites as part of individual developer tests and in continuous integration, such as RubyGems, Rails (including ActiveRecord, ActiveSupport, ActionPack), and Rake.
The next release will push harder on application compatibility, especially Cucumber (which has been the most requested application), Rails, and all the other frameworks being tested currently.
Also, the feature which makes IronRuby stand out, .NET integration, has next-to-no documentation, so that will large focus during this next release as well. Keep an eye on http://ironruby.net/Documentation/.NET, but as I said, is very sparse at the moment.