From: Emiel van de Laar Date: 2004-05-28T04:00:42+09:00 Subject: Re: RubySharp and MorphR Robert, * Robert Feldt (feldt@ce.chalmers.se) wrote: > Hi, > > I created a web page for the theses of the student projects I have > talked about on the list during the last couple of months. Not all pdf > are up yet but hopefully I'll have the time to add them before going on > a 3-week vacation (with no/little Internet connection!) tomorrow. > > Feedback and comments appreciated. > > http://www.pronovomundo.com/htu/theses2004/ > > Jan-?ke Hedstr?m, "RubySharp ? A Ruby to CIL Compiler" [snip] My current internship requires me to dig inside the CLR as well and have been curious about a Ruby to CIL compiler. I must say it was a true joy reading Jan's thesis. I believe he conveyed his work really well. I do have a minor correction that I would like to point out. On page 11 of the PDF (there are no page numbers) Jan writes: Limitations of interfaces are that they cannot derive from classes or other interfaces and they cannot have instance methods. The fact is that interfaces can indeed derive from other interfaces. I doubt this would have been useful during his project though. Perhaps you could inform Jan about this. Here is an example... emiel@chyrellos:~/csharp> expand -t4 quux.cs using System; interface IFoo { void Foo(); } interface IBar : IFoo { void Bar(); } class Quux : IBar { public Quux() { // } public void Foo() { Console.WriteLine("foo"); } public void Bar() { Console.WriteLine("bar"); } static void Main() { Quux q = new Quux(); q.Foo(); q.Bar(); } } ...and the relevant CIL: .class interface private auto ansi abstract 'IFoo' { // method line 1 .method public virtual hidebysig newslot abstract instance default void 'Foo' () cil managed { // Method begins at RVA 0x0 } // end of method IFoo::instance default void 'Foo' () } // end of type IFoo .class interface private auto ansi abstract 'IBar' implements IFoo { // method line 2 .method public virtual hidebysig newslot abstract instance default void 'Bar' () cil managed { // Method begins at RVA 0x0 } // end of method IBar::instance default void 'Bar' () } // end of type IBar Cheers, Emiel -- Emiel van de Laar PGP pubkey: %finger emiel@il.fontys.nl