Common Language Infrastructure

related topics
{math, number, function}
{system, computer, user}
{language, word, form}
{work, book, publish}

The Common Language Infrastructure (CLI) is an open specification developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft .NET Framework and the free and open source implementations Mono and Portable.NET. The specification defines an environment that allows multiple high-level languages to be used on different computer platforms without being rewritten for specific architectures.



Among other things, the CLI specification describes the following four aspects:-

All compatible languages compile to Common Intermediate Language (CIL), which is an intermediate language that is abstracted from the platform hardware. When the code is executed, the platform-specific VES will compile the CIL to the machine language according to the specific hardware.

Standardization and licensing

In August 2000, Microsoft, Hewlett-Packard, Intel, and others worked to standardize CLI. By December 2001, it was ratified by the ECMA, with ISO standardization following in April 2003.

Microsoft and its partners hold patents for CLI. ECMA and ISO require that all patents essential to implementation be made available under "reasonable and non-discriminatory (RAND) terms", but interpretation of this has led to much controversy, particularly in the case of Mono.

As of July 2009[1]. Microsoft applied C# and CLI under the Community Promise, which, in certain situations, protects software developers from Microsoft software patents.

Support for dynamic languages

The Common Language Infrastructure currently has no built-in support for Dynamically typed languages because the existing Common Intermediate Language is statically typed[2].

The Dynamic Language Runtime is an ongoing effort to bring this support to the CLR.

Full article ▸

related documents
Metcalfe's law
Dining cryptographers protocol
Data element
Entropy encoding
Bit error ratio
Poem code
Filter (Unix)
Random access
Escape character
Sequential access
Zombie process
IBM Business System 12
Name server
Lint (software)
Binary symmetric channel
Z notation
List of Fourier-related transforms
Common Language Runtime
Online algorithm
ABC (programming language)
Hurwitz polynomial
De Bruijn-Newman constant
The Third Manifesto