InfoQ

News

Ruby.NET 0.8 release

Posted by Werner Schuster on Jun 06, 2007 10:00 AM

Community
.NET,
Ruby
Topics
Dynamic Languages,
.NET Framework
Tags
RubyDotNet,
CLR,
C#,
IronRuby
Ruby implementations are a dime a dozen nowadays. There are already two implementations of Ruby for the JVM (JRuby and XRuby), and .NET is catching up as well. IronRuby has caused a lot of buzz in the past month, but until it's released in late July 2007, it's not known just how complete it'll be.

Gardens Point Ruby.NET compiler, from a team around Dr. Wayne Kelly and Prof. John Gough at the Queensland University of Technology, on the other hand, has been available since June 2006. It works by compiling Ruby code to Microsoft Intermediate Language (MSIL, the instruction set of the .NET CLR ), which is then executed by the CLR.

There's an interesting relationship between IronRuby and Ruby.NET. John Lam, developer of IronRuby, mentions that IronRuby actually uses parts of Ruby.NET:
We licensed the Ruby.net codebase earlier this year, and we are using the scanner and parser from Ruby.net in IronRuby today. This helped us bootstrap our efforts, and we know that we have acquired a good scanner and parser that is already highly compliant with MRI[.]
A compliant Ruby parser is a big part of a Ruby implementation, and using Ruby.NET's parser surely saves the IronRuby team a lot of work.

Ruby.NET's new 0.8 release adds important functionality:
Since the last release we have added support for interoperability with other .NET languages, so that components developed using other .NET languages can conveniently use classes implemented using Ruby.NET and vice versa.
An example for this is shown with a Ruby class that's used in C# code. The Ruby class:
class Person
 def init(name, age)
 @name = name
  @age = age
 end
 def print()
 puts "#{@name} is #{@age}"
 end
end

Using this from C#:
Person bruce = new Person();
bruce.init("Bruce", 42);
bruce.print();

This works in the other direction (Ruby using .NET classes) too. Another interesting remark in the 0.8 release notes:
We will soon be moving to a more traditional open source model of community contribution to our code base and will be calling for volunteer developers. If anyone has any experience in managing that kind of process, we'd be interested in your input.
In light of recent doubts about IronRuby, and the the fact that over the past year, many Ruby runtime developers have been hired to work on their projects (JRuby, XRuby, Rubinius, IronRuby), .NET Open Source developers with an interest in Ruby might want to look into this.

No comments

Reply

Exclusive Content

VMware Infrastructure 3 Book Excerpt and Author Interview

VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.

Using Ruby Fibers for Async I/O: NeverBlock and Revactor

Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.

Agile and Beyond - The Power of Aspirational Teams

Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.

Neal Ford On Programming Languages and Platforms

Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.

Future Directions for Agile

David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.

Nick Sieger on JRuby

Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.