[virtmach] MS Common Language Runtime

Fergus Henderson fjh@cs.mu.OZ.AU
Tue, 22 Aug 2000 02:40:11 +1000


On 21-Aug-2000, Peter_Murray@allegiance.com.au <Peter_Murray@allegiance.com.au> wrote:
> Has anyone taken a look at the new Microsoft Common Language Runtime?

Yes, I have.  Microsoft funded a number of programming language
research groups to port their languages to Microsoft's new platform.
The Mercury group at the University of Melbourne, of which I am a
part, was one of those.  See
<http://www.cs.mu.oz.au/mercury/information/dotnet/mercury_and_dotnet.html>
for more details.

There's been some discussion of this on the Haskell mailing list
<haskell@haskell.org>, which is archived at
<http://www.mail-archive.com/haskell@haskell.org>.

The MS .NET SDK is available for download from MSDN, and I think the
documentation that is included in that contains a lot of technical
information, e.g. details of the instruction set.

> It seems to be more like Oberon's slim binaries rather than bytecodes.
 
Not really.  I think it is much more like bytecodes.  In particular,
it is based on a binary representation of an intermediate language
(MS IL) that is similar in nature to Java bytecode.

The Microsoft people that I spoke with, in particular Jim Miller
(program manager for the CLR), objected to the use of the term
"bytecode" to describe it.  The specific objection to the use of the
term "bytecode" was that not all of the instructions were encoded as a
single byte.  ``Would you consider x86 machine code to be "bytecode"?'',
Jim asked me.

Microsoft have also been very keen to point out that their intermediate
language is only ever JITted or compiled, never interpreted.
The story is that their dev team did some benchmarks and found that
they could write a JIT compiler that was faster than a bytecode interpreter,
so they didn't feel any need to include a bytecode interpreter, and instead
just ship a couple of different JIT compilers with different trade-offs.

However, personally I still think "bytecode" is the most appropriate
term for describing the binary representation of their IL.  I don't
think the differences are significant enough to warrant inventing a
new term.

I think the main reason that Microsoft don't want their IL
representation labelled as "bytecode" is marketing goals.  Microsoft
have been very studiously avoiding mentioning Java and in particular
avoiding comparing the MS CLR to the Java.  I guess you can draw your
own conclusions from that.

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger fjh@128.250.37.3        |     -- the last words of T. S. Garp.