Friday, March 20, 2009

IronRuby 0.3 Released

ironruby-400

I’m pleased to announce a new release of IronRuby: IronRuby 0.3!

Download IronRuby 0.3

You can also check out the source code for this release

Staying true to our “Conference-driven development schedule,” this release is in conjunction with MIX ‘09, where Silverlight 3 Beta and ASP.NET MVC 1.0 were announced, to name a few. John Lam spoke at MIX today at 12:30pm in Las Vegas about using dynamic languages in Silverlight for testing, scripting, and application building. And some ASP.NET MVC with IronRuby is thrown in there too.

The demos are also available for download here. Check out http://github.com/jschementi/mix09 for information on what the demos are, and how to use them. Also, throughout the day I will be posting walk-through-style posts about each major usage of dynamic languages in Silverlight.

Now that that’s out of the way, what did we do in this release?

RubySpec

IronRuby passes approximately 80% of RubySpec, the best test suite Ruby has today. IronRuby is best at language compatibility, passing 95% of those tests, but worse on the standard libraries with a pass-rate of 77%. Overall the pass-rate as gone up approximately 10% since the last release, and there hasn’t been a major library push since getting Rails running. For IronRuby 1.0, that number is going to be as high as possible, and we’ll ensure that by continuing to work with the RubySpec project to improve the test suite.

IronRuby.info shows up-to-date RubySpec statistics about IronRuby.

.NET inter-operation

Since this release is around MIX, and John’s talk is going to be focused around Silverlight and ASP.NET MVC, it seems like a great time to polish IronRuby’s .NET interop. For example, the release enables calling generic methods, implementing interfaces with IronRuby, and better conversions between .NET and Ruby types. We’ve also started to build a .NET interop test suite, using the same infrastructure RubySpec uses (MSpec), to provide a executable specification of how IronRuby and .NET play together. There will also be a written specification showing what these .NET interop features are good for, but not for this release.

For more specifics of what this release contains, checkout out the CHANGELOG.txt in the binary download.

What’s with the version number?

IronRuby is going to be a bit unconventional-Microsoft (as if that’s something new) and simply release 0.x releases (and maybe 0.x.x if needed) until it gets to 1.0, rather than release something with “Alpha”, “Beta”, or “RTW” attached to the name. That being said, 0.3 is a complete underestimation of where IronRuby is; it’s definitely more than 30% completed. We’ll move through the point releases rather fast, compared to the 7 months it took to get 0.1 (Alpha 1) releases, and another 3-4 months for (Alpha 2). Any maybe even skip some numbers along the way.

What’s next?

While the .NET interop testing/specing work will continue, the next releases will be much more focused on getting real Ruby applications running well; whether they be already existing apps/frameworks like Rails, RubyGems, Rake, etc, or new applications that people are building with IronRuby. We’re starting to run the gems, rake, and rails tests with IronRuby, and this type of discovery with more Ruby libraries will drive what we work on next.

In short, expect to see more binary releases, more often. Until then, Download IronRuby 0.3!

3 comments:

C.J. said...

and still building on linux:

http://ironruby.colliertech.org/integrity/

Darren Torpey said...

So how long until IronRuby could be used with XNA?

Jeff Ward and I are working on porting the Angel prototyping engine to XNA (we're calling it AngelXNA -- clever, I know)

Angel proper has been integrating Python scripting support. That's a smart choice for them: Python is very popular among C++ game programmers and the language works well with C++.

But as you know, I'm much more keen on Ruby.

If it's nothing but a pipe dream, no problem -- we'll probably end up using Lua or some other nice option, but I figured I'd ask THE MAN HIMSELF in case the news is better than I fear. =)

Jimmy Schementi said...

@darren

XNA is a interesting situation: short answer is IronRuby "probably" works with XNA today, but only on Windows, not on the XBox or Zune. That won't always be true though.

The reason it doesn't work on the XBox/Zune/etc is because the XBox uses a compacted version of the CLR and .NET framework, the same one that is on mobile phones, and they don't have the compiler APIs needed to emit source code at runtime (the System.Reflection.Emit namespace), so any language using the DLR's code generation will not run.

However, if the language had an interpreter, non-dependent on emitting instructions at runtime, then it could run anywhere. Such an interpreter (for all DLR languages, and a Ruby-specific interpreter) are being worked on.

Hosting either IronRuby and IronPython in the same application is trivial; they use the same hosting API. Send me mail (jimmysch@microsoft.com) if you still want to explore using Ruby or Python on .NET, and I can help you out.