Microsoft's equivalent of the Java Virtual Machine, for the Microsoft .NET platform.

The CLR replaces such infamous Microsoft runtimes as VBRUN, MSVCRT, etc. The single common API will mean, they say, only one API to learn across all Microsoft technologies.

.NET enabled compilers emit both intermediate code (MSIL) and metadata. The latter which provides information that describes the types, members, and references in code. For development, the CLR provides memory allocation, threads and processes, security, and developer services for profiling and debugging. For end users, the CLR provides security, transactions, object pooling, queued components, events, and so on.

Like the Java VM, the CLR provides automated memory management. This frees Microsoft-world COM programmers from the drudgery of reference counting, allowing them to grab a late 90s.

The CLR also provides versioning support that enabled Microsoft to get away from the crippling DLL Hell on Windows platforms.