World Library  
Flag as Inappropriate
Email this Article

Common Language Infrastructure

Article Id: WHEBN0000007237
Reproduction Date:

Title: Common Language Infrastructure  
Author: World Heritage Encyclopedia
Language: English
Subject: C Sharp (programming language), Common Intermediate Language, Nemerle, .NET Framework, Common Type System
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Common Language Infrastructure

The Common Language Infrastructure (CLI) is an open ISO[1] and ECMA[2] that describes the executable code and runtime environment. 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 .NET Framework and the free and open source Mono and Portable.NET are implementations of the CLI.

Overview

Visual overview of the Common Language Infrastructure (CLI)

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.
The 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 one's not using.
The 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.
The 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

In August 2000, 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." It is common for RAND licensing to require some royalty payment, which could be a cause for concern with Mono. As of January 2013, neither Microsoft nor its partners have identified any patents essential to CLI implementations subject to RAND terms.

As of July 2009,[3] Microsoft added C# and CLI to the list of specifications that the Microsoft Community Promise applies to,[4] 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 published the new edition of the CLI standard,[1][2] which is not covered by the Community Promise.[4]

Implementations

See also

Notes

  1. ^ a b ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)
  2. ^ a b Standard ECMA-335 - 6th edition (June 2012)
  3. ^ "The ECMA C# and CLI Standards - Port 25: The Open Source Community at Microsoft". 2009-07-06. 
  4. ^ a b Covered Specifications | Microsoft Open Specifications

References

  • "Standard ECMA-335, Common Language Infrastructure (CLI)". ECMA International. Retrieved August 31, 2005. 
  • "ISO/IEC 23271, Common Language Infrastructure". ISO. Retrieved September 27, 2006. 
  • "ECMA C# and Common Language Infrastructure Standards". Microsoft Corporation. Retrieved October 13, 2009. 
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 



Copyright © World Library Foundation. All rights reserved. eBooks from World eBook Library are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.