Updated: 11/5/2005; 6:03:29 PM.
Chris Double's Radio Weblog
        

Tuesday, January 28, 2003

David Simmons has a write up on his web site about delays on his implementation of SmallScript for .NET (named S#). It's a fascinating read as it gives some information on what it's like to create a high performance dynamic language implementation under .NET.

"Specifically, I had always known that using IL to craft up dynamic dispatch implementations under .NET would not perform as well native Smalltalk/S# AOS jitters. Microsoft people and I had already discussed this issue at some length back in 1999-2000. We all understood and agreed that once demonstrable “right-answers” existed, the IL and .NET facilities could be upgraded – where eventually the political push became one involving ROTOR.

When I originally designed the mechanisms in 1999, there were some additional features in .NET which were dropped due to design/ship date requirements and some political/managerial communication snafu. I.e., I was the only person using a specific feature and the powers that be, in the schedule crunch, cut the feature because we had some communication snafu about the feature being “critical”."

...

Once I had that work done I was then able to throw out gobs and gobs of yucky C# and IL code that had to be pre-generated to handle the various explosive combinatorics cases required for dynamic multi-method selector namespace dispatch [with other meta-goodies thrown in for good measure].

Now I was able to dynamically generate the dispatcher mechanisms [which are generally a very sparse matrix of the previous static compilation combinatoric explosion]. The size of the Net.Reflection.DLL dropped by a couple hundred kb, etc.

Even better, my new .NET dispatchers were acceptably close to the performance of my own AOS.IL jitters in S#.AOS. Translated, this means that it is now faster than any interpreted Smalltalk, and within a couple of cycles [of AOS performance] on a per dispatch decisions point basis. The difference between S#.NET dynamic dispatch/call performance C#.NET static dispatch performance is very reasonable [roughly within 6-15 cycles] per call. It could be directly cycle-for-cycle competitive if my S#.AOS jitter mechanisms were incorporated into Microsoft’s .NET jitters.

So it certainly sounds possible to have a fast dynamic language implementation under .NET. It also sounds hard :-).


11:10:35 PM      

© Copyright 2005 Chris Double.
 
January 2003
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Dec   Feb



Click here to visit the Radio UserLand website.

Listed on BlogShares

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.