| Common Language Infrastructure | |
|---|---|
| ISO/IEC 23271:2012(E) | |
| Abbreviation | CLI |
| Status | Published |
| Year started | 2000; 26 years ago (2000) |
| First published | 2001; 25 years ago (2001) (Ecma) and 2003; 23 years ago (2003) (ISO/IEC) |
| Latest version | Sixth edition June 2012; 13 years ago (2012-06) |
| Organization | Developed by:Microsoft,Hewlett-Packard,Intel, and others Standardized by:Ecma,ISO/IEC |
| Committee | ISO/IEC JTC 1/SC 22 |
| Domain | Common Language (Cross-platform) |
| License | RAND |
| Website | ECMA-335, ISO/IEC 23271 |
TheCommon Language Infrastructure (CLI) is an openspecification andtechnical standard originally developed byMicrosoft and standardized byISO/IEC (ISO/IEC 23271) andEcma International (ECMA 335)[1][2] that describes executable code and a runtime environment that allowsmultiple high-level languages to be used on differentcomputer platforms without being rewritten for specific architectures. This implies it is platform agnostic. The.NET Framework,.NET andMono are implementations of the CLI.Themetadata format is also used to specify theAPI definitions exposed by theWindows Runtime.[3][4]

Among other things, the CLI specification describes the following five aspects:
In August 2000,Microsoft,Hewlett-Packard,Intel, and others worked to standardize CLI. By December 2001, it was ratified by theEcma, withISO/IEC standardization following in April 2003.
Microsoft and its partners hold patents for CLI. Ecma and ISO/IEC require that all patents essential to implementation be made available under "reasonable and non-discriminatory (RAND) terms." It is common for RAND licensing to require some royalty payment, which could be a cause for concern withMono. As of January 2013[update], neither Microsoft nor its partners have identified any patents essential to CLI implementations subject to RAND terms.[citation needed]
As of July 2009[update],[5]Microsoft addedC# and CLI to the list of specifications that theMicrosoft Community Promise applies to,[6] so anyone can safely implement specified editions of the standards without fearing a patent lawsuit from Microsoft. To implement the CLI standard requires conformance to one of the supported and defined profiles of the standard, the minimum of which is the kernel profile. The kernel profile is actually a very small set of types to support in comparison to the well known core library of default .NET installations. However, the conformance clause of the CLI allows for extending the supported profile by adding new methods and types to classes, as well as deriving from new namespaces. But it does not allow for adding new members to interfaces. This means that the features of the CLI can be used and extended, as long as the conforming profile implementation does not change the behavior of a program intended to run on that profile, while allowing for unspecified behavior from programs written specifically for that implementation.
In 2012, Ecma and ISO/IEC published the new edition of the CLI standard.[1][2]