Developers at the Queensland University of Technology are working on a Ruby compiler that will allow the language to be supported on the .NET platform. Liz Tay speaks with Wayne Kelly, project leader and senior lecturer at the university's School of Software Engineering and Data Communications, about the Gardens Point Ruby.NET project and his interest (or lack thereof) in Ruby, and .NET.
What are the long term goals of the project, and how far are you from achieving this?
We aim to achieve complete semantic compatibility for all programs written entirely in Ruby. This includes use of the building classes and modules but not other Standard libraries commonly shipped with Ruby - unless they are implemented entirely in Ruby.
Our solution will be fully compiled and produce entirely managed and verifiable .Net code.
Following that, we will work on improving interoperability between Ruby and .Net (such as allowing programs written in other .Net languages to conveniently use Ruby.Net code and vice versa), and optimization of special cases so that our implementation runs faster.
We hope to be close to achieving compatibility by the end of this year and will complete interoperability and optimization goals sometime next year.
Why are these goals important?
The .Net platform was designed to support many different programming languages so that developers could choose to use their favourite source language while still providing high levels of interoperability between components implemented in different languages. All these languages are also able to make use of a large collection of libraries, used for example to connect to databases, process XML, help implement Web applications, and the like.
So, to existing .Net programmers, the Gardens Point Ruby compiler adds Ruby to the set of languages they can make use of to develop .Net applications.
Ruby is an increasingly popular language with many fanatic users.
For existing Ruby programmers, the Gardens Point Ruby compiler provides them with access to the facilities of the .Net platform and libraries, including, for example, a rich API for developing Windows forms applications.
The fact that .Net is managed (and so provides sandboxed type security) is also very important in some security-critical scenarios - for example implementing SQL Server stored procedures using fully verifiable .Net code.
This is why we aim to generate only fully verifiable managed code with no native invokes to untrusted code.
One of the wider research goals is to investigate support for dynamic languages on mainstream managed execution environments and to consider how interoperability might be achieved, especially with other dynamic languages such a Phyton.
How long has your team been working on this project for?
I started work on the project in early 2005. The project is co-directed by Professor John Gough and myself. John organized the project proposal and funding with Microsoft, and I have led most of the day-to-day development with John providing higher level guidance.
I led the initial implementation efforts.
How did you get involved in Ruby and .Net?
My research interests lie mainly in the area of parallel computing. The main way I got into Ruby is in the area of parallel computing; the way it's usually done is using a special compiler [like Ruby] to convert sequential code into parallel form.
We've been doing research related to Ruby from around 2000. Our faculty was invited by Microsoft to create compilers for .Net before it was released to the public, so we had a relationship with Microsoft from the pre-testing days.
The original project was to create a Perl compiler and we hadn't had much experience with Ruby before this, but after the project with Perl and .Net we decided to go with Ruby instead. It's cleaner.
I wasn't actually involved in the decision making. John Gough did all the communication with Microsoft.
What are your favourite languages? Have you any special interest in Ruby?
I've done most programming in C#.
I'm not sure if I want to admit this to the Ruby world, but I wouldn't list Ruby as one of my favourite languages - I'm not a big fan of dynamic languages.
But others love it, and there's certainly a demand for it. There is a very fanatical following in terms of the language. In the real world, there are many people who can't wait for us to get this done.
The reason why Microsoft wanted this done is to test that .Net would work with dynamic languages. So this project, from a research point of view, is to investigate what the issues are in compiling dynamic languages on the .Net platform.
What are you currently working on?
We're still trying to complete the implementation. What was released in June was incomplete; we need to work on it so that it supports all Ruby functions.
I'm currently working on getting a few benchmark applications running so we can get an idea of our baseline performance. The shootout benchmark was easily accessible so I've just grabbed those.
Have you made any significant progress or encountered any difficulties since the last beta release of your Gardens Point Ruby .Net compiler?
The release was in June, no. Progress has been relatively slow since then due to other commitments. (If only I didn't have to teach :)
When will the next version be released, and do you still expect to achieve a version with fully semantic compatibility by the end of the year?
We will definitely have the next version out by the end of the year. We may release earlier versions if we feel we have made sufficient progress.
We hope the version at the end of the year will have full semantic compatibility but we are probably a bit behind schedule due to other commitments.
We currently have a couple of casual research assistants working on the project, but we could do with a few more - so, if anyone in the Brisbane area would like a job ...