"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 :-).