What’s the differnece between CIL and MSIL?

I was recently asked what the difference between CIL and MSIL is…   the short answer is not much.  They both describe the underlying CPU-independent instruction set the CLR executes after a high level language (C#, VB, C++, Python, Ruby, Pascal, etc) has compiled your source code.  The difference between them is the exact version you are referring to.


CIL –  Common Intermediate Language  – is the term used in the International Standard.  

MSIL –  Microsoft Intermediate Language   – is the product term for the Microsoft implementation of that standard.


Clear as mud?

Comments (2)

  1. Judah says:

    So, are there functional differences? Does MSIL have instructions CIL doesn’t, etc.?

  2. Ben Rush says:

    There are functional differences in the IL as defined by the CIL standard and what Microsoft currently uses (at least, best that I can tell). Takes generics for example; to quote Mr. Juval Lowy, "In .NET 2.0, generics have native support in IL (intermediate language) and the CLR itself." He goes on to describe the differences.

    Source: An Introduction to C# Generics, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/csharp_generics.asp.