Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Ruby and .NET Destined For Each Other?

Ruby and .NET Destined For Each Other?


Lately it seems like a new Ruby on .NET progress is announced every week.


Early last week, Pascal Hurni announced Brite, a Ruby compiler/interpreter written in Ruby that outputs MSIL. A Ruby program compiled with Brite takes the form of an Assembly relying on the Brite runtime. The Brite project is in very early stages of development, but builds on various older projects and academic work. The website has comprehensive information about the whole topic of Ruby on .NET including analysis of the issues and challenges inherent in the effort.


Last week, 4th-year CS student Wilco Bauwer formally presented his 2-month old IronRuby project at RubyEnRails 2006. Wilco is an experienced .NET developer from the Netherlands who has worked for Microsoft and is known for his contributions to the Atlas AJAX framework for ASP.NET.

IronRuby is a from-scratch Ruby interpreter/compiler written in C#. (The Iron naming scheme follows the example of IronPython, a CLR-based implementation of Python for .NET and Mono that actually executes code faster than the standard Python interpreter.)


In March, Queensland University of Technology announced work on their Ruby.NET project, expected to deliver a public beta release in late 2006.

The project homepage include a well-written technical overview:

We will support separate compilation of individual Ruby source files into dlls or .exes as well as a compile-load-and-run option to achieve behaviour identical to the existing Ruby interpreter.

Ruby’s dynamic semantics mean that variables are not typed and methods can be dynamically added and removed from Ruby classes. So in general, Ruby method invocation cannot rely entirely on the CLR’s normal dynamic dispatch mechanisms. We instead explicitly represent Ruby classes, methods etc as CLR objects and implement a custom Ruby call interface that locates the appropriate Ruby method to call based on Ruby’s inheritance and mixin semantics.

The Ruby.NET project is receiving technical and financial support directly from Microsoft, which is perhaps an indicator of future plans to officially roll Ruby support into the .NET platform.


Last, but not least, RubyCLR is arguably the most mature Ruby on .NET implementation out there and is being actively developed by John Lam, who blogs about his progress on a regular basis. His RubyCLR project, hosted on RubyForg, is quite far along and is described as:

A high-performance Ruby to .NET bridge that allows seamless integration of CLR and Ruby objects in the same Win32 process. Use it to create rich client applications using the Windows Forms or Windows Presentation Foundation libraries.

John has shown the community some promising achievements with RubyCLR lately, including integration of Rails' ActiveRecord object-relational mapping layer with Windows Forms data binding and high-fidelity two way binding to CLR objects. An article about RubyCLR from John is coming soon on InfoQ.

Rate this Article