In the past couple of months I’ve been working on a Ruby interpreter for the .NET CLR, a project very similar to IronPython. Both Jim Hugunin’s impressive results, my interest for the .NET CLR and the popularity of Ruby were my main motivation to begin this journey.
While most of this will be a very incremental process, my minimal goals are to:
- Implement the Ruby language, including support for all of its semantics
- Support at least the CLS (Common Language Specification)
- Implement both an (interactive) interpreter and a standalone compiler
- Get a deep understanding of the CLR
- Surpass Jim Hugunin’s results ;)
At this moment things are going pretty well. I’ve implemented some of the basics of the language and worked on the integration with the CLR. Current progress includes but is not limited to:
- OO (modules, classes, inheritance, polymorphism, etc.)
- Mixins
- CLR integration (use .NET types, derive from them, override methods, etc.)
- Dynamic methods (dynamically add or change a method implementation)
- Ruby file includes
Simultaneously with working on the implementation, I am writing a paper for a college assignment. This paper will be about some of the features that .NET provides, what problems I came across, how I approached them, etc. I will publish this paper once it’s done and/or blog about topics that I discuss in this paper.
Unfortunately I can not work on this project full-time. However, I hope to be able to release some early bits in 1 or 2 months. At some point, source will be included as well. For now, you’ll have to do with some screenshots that show some of the current progress: