Feature Post

Top

.NET: CIL, CTS, CLS, CLR?

What is CIL, and then CTS, or CLS, or CLR? a WTF of abbreviations!

CIL (Common Intermediate Language) is the byte code to which our C# code is compiled. It's the "machine code" of the .NET execution engine.


The CTS (Common Type System) is the representation of types (classes and structures) at the compiled level. Basically, it's saying that all .NET languages will use a common way of representing types (classes and structures).

The CLS (Common Language Specification) is a set of constraints on APIs and a complementary set of requirements on languages. If a library is CLS-compliant (i.e. adheres to all the constraints), then any CLS-compliant language will be able to use that API. Conversely, a CLS-compliant language is guaranteed to be able to use any CLS-compliant library. For example, a CLS-compliant language is guaranteed to support Int32, so the CLS guarantees it's safe for library writers to use Int32 in their API.

While CLR (Common Language Runtime) is just a virtual machine component that runs byte code.
 
If you are interested further, see ECMA C# and Common Language Infrastructure Standards.