Common Language Infrastructure
From Wikipedia, the free encyclopedia
The Common Language Infrastructure (CLI) is an open specification (published under ECMA-335 and ISO/IEC 23271) developed by Microsoft that describes the executable code and runtime environment that form the core of a number of runtimes including the Microsoft .NET Framework, 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.
The CLI is a specification, not an implementation, and is often confused with the Common Language Runtime (CLR), which contains aspects outside the scope of the CLI specification.
Among other things CLI specification describes the following four aspects:
- The Common Type System (CTS)
- A set of types and operations that are shared by all CTS-compliant programming languages.
- Metadata
- Information about program structure is language-agnostic, so that it can be referenced between languages and tools, making it easy to work with code written in a language you are not using.
- Common Language Specification (CLS)
- A set of base rules to which any language targeting the CLI should conform in order to interoperate with other CLS-compliant languages. The CLS rules define a subset of the Common Type System.
- Virtual Execution System (VES)
- The VES loads and executes CLI-compatible programs, using the metadata to combine separately generated pieces of code at runtime.
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.
Contents |
[edit] 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 of 2003.
While Microsoft and their 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."
[edit] Support for dynamic languages
The Common Language Infrastructure has currently no built-in support for Dynamically typed languages, because the existing Common Intermediate Language is statically typed[1].
The Dynamic Language Runtime is an ongoing effort to bring this support to the CLR.
[edit] Implementations
- Microsoft .NET Framework contains Microsoft's commercial implementation of the CLI for desktop systems, but also encompasses a larger collection of resources, libraries, and tools.
- Shared Source Common Language Infrastructure is a reference implementation of the CLI available from Microsoft, under the Shared source licensing program.
- .NET Compact Framework is Microsoft's commercial implementation of the CLI for portable devices and Xbox 360.
- Net60 is redFIVElabs' commercial implementation of .NET Compact Network on Symbian-based devices.
- Microsoft Silverlight, an implementation for use in web browsers - for Microsoft Windows and Mac OS X.
- Mono development platform is a popular open source implementation of CLI and accompanying technologies, sponsored by Novell.
- Portable.NET, part of the dotGNU project, is another open-source implementation.
[edit] Notes
[edit] References
- Standard ECMA-335, Common Language Infrastructure (CLI). ECMA International. Retrieved on Aug 31, 2005.
- ISO/IEC 23271, Common Language Infrastructure. ISO. Retrieved on Sep 27, 2006.
|