The Common Language Runtime (CLR) provides a managed execution environment for .NET programs. It performs memory management, security and type safety. When code is run under the CLR, compilers first convert source code to Microsoft Intermediate Language (MSIL) which is then compiled to native machine code. The CLR also defines the Common Type System (CTS) and Common Language Specification (CLS) to allow interoperability between .NET languages.