- Common Language Infrastructure
The Common Language Infrastructure (CLI) is an open specification developed by Microsoft and standardized by ISO and ECMA 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:-
- The Common Type System (CTS)
- A set of data types and operations that are shared by all CTS-compliant programming languages.
- 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 and operating system.
Standardization and licensing
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[who?] of this has led to much controversy, particularly in the case of Mono.
Support for dynamic languages
- The .NET Framework is built on the Common Language Runtime, Microsoft's commercial implementation of the CLI for desktop and server systems, and also encompasses a large collection of programming frameworks and libraries.
- 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.
- Microsoft Silverlight, an implementation for use in web browsers - for Microsoft Windows and Mac OS X.
- Mono development platform is an open source implementation of CLI and accompanying technologies, sponsored by Xamarin.
- Portable.NET, part of the dotGNU project, is a Free Software implementation of ECMA-335 by Free Software Foundation.
- VMKit part of Low Level Virtual Machine toolkit as of version 2.3. Implements very incomplete and alpha stage support of a Virtual Execution System. It is based on DotGNU, Portable.NET corelib and class libraries.
- ^ http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=42927
- ^ http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf
- ^ "The ECMA C# and CLI Standards - Port 25: The Open Source Community at Microsoft". 2009-07-06. http://port25.technet.com/archive/2009/07/06/the-ecma-c-and-cli-standards.aspx.
- ^ Pobar, Joel (2007-01-03). "CLR Dynamic languages under the hood". http://blogs.msdn.com/joelpob/archive/2005/07/01/434728.aspx. Retrieved 2008-01-26.
- "Standard ECMA-335, Common Language Infrastructure (CLI)". ECMA International. http://www.ecma-international.org/publications/standards/Ecma-335.htm. Retrieved August 31, 2005.
- "ISO/IEC 23271, Common Language Infrastructure". ISO. http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=42927. Retrieved September 27, 2006.
- "ECMA C# and Common Language Infrastructure Standards". Microsoft Corporation. http://msdn.microsoft.com/en-us/netframework/aa569283.aspx. Retrieved October 13, 2009.
.NET Framework ArchitectureCommon Language
CLI LanguagesCommon1Other2 Components Other implementations Comparisons Upcoming
Wikimedia Foundation. 2010.