Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  



























Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 Standardization and licensing  





3 Implementations  





4 See also  





5 Notes  





6 References  





7 External links  














Common Language Infrastructure






العربية
Català
Čeština
Dansk
Deutsch
Español
فارسی
Français

Bahasa Indonesia
Italiano
Magyar
Nederlands

Polski
Português
Русский
Slovenščina
Српски / srpski
Svenska

Türkçe
Tiếng Vit

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 


















From Wikipedia, the free encyclopedia
 


Common Language Infrastructure
ISO/IEC 23271:2012(E)
AbbreviationCLI
StatusPublished
Year started2000; 24 years ago (2000)
First published2001; 23 years ago (2001) (Ecma) and 2003; 21 years ago (2003) (ISO/IEC)
Latest versionSixth edition
June 2012; 12 years ago (2012-06)
OrganizationDeveloped by: Microsoft, Hewlett-Packard, Intel, and others
Standardized by: Ecma, ISO/IEC
CommitteeISO/IEC JTC 1/SC 22
DomainCommon Language (Cross-platform)
LicenseRAND
WebsiteECMA-335,
ISO/IEC 23271

The Common Language Infrastructure (CLI) is an open specification and technical standard originally developed by Microsoft and standardized by ISO/IEC (ISO/IEC 23271) and Ecma International (ECMA 335)[1][2] that describes executable code and a runtime environment that allows multiple high-level languages to be used on different computer platforms without being rewritten for specific architectures. This implies it is platform agnostic. The .NET Framework, .NET and Mono are implementations of the CLI. The metadata format is also used to specify the API definitions exposed by the Windows Runtime.[3][4]

Overview[edit]

Visual overview of the Common Language Infrastructure (CLI)

Among other things, the CLI specification describes the following five 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 the developer is not using.
The Common Language Specification (CLS)
The CLS, a subset of the CTS, are rules to which components developed with/for the supported languages must adhere.
They apply to consumers (developers who are programmatically accessing a component that is CLS-compliant), frameworks (developers who are using a language compiler to create CLS-compliant libraries), and extenders (developers who are creating a tool such as a language compiler or a code parser that creates CLS-compliant components).
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.
In the CLI standard initially developed by Microsoft, the VES is implemented by the Common Language Runtime (CLR).
The Standard Libraries
A set of libraries providing many common functions, such as file reading and writing. Their core is the Base Class Library (BCL).

Standardization and licensing[edit]

In August 2000, Microsoft, Hewlett-Packard, Intel, and others worked to standardize CLI. By December 2001, it was ratified by the Ecma, with ISO/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 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,[5] Microsoft added C# and CLI to the list of specifications that the Microsoft 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]

Implementations[edit]

See also[edit]

Notes[edit]

  1. ^ a b "ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)". ISO. Archived from the original on July 2, 2023.
  • ^ a b "ECMA-335". ECMA International. June 2012. Archived from the original on October 16, 2023.
  • ^ "Introduction to Advanced Windows Store App Development using HTML5 and JavaScript". Microsoft Press Store. October 15, 2013. Archived from the original on March 30, 2023.
  • ^ de Icaza, Miguel (September 15, 2011). "WinRT demystified". Archived from the original on November 30, 2023.
  • ^ Galli, Peter (July 6, 2009). "The Ecma C# and CLI Standards". Port 25. Archived from the original on July 9, 2009. Retrieved September 26, 2009.
  • ^ v-alje (March 16, 2023). "[MS-DEVCENTLP]: Microsoft Community Promise". Microsoft Learn. Retrieved May 1, 2023.
  • References[edit]

    External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Common_Language_Infrastructure&oldid=1227130077"

    Categories: 
    Common Language Infrastructure
    Ecma standards
    IEC standards
    ISO standards
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    Use mdy dates from January 2019
    Use American English from January 2019
    All Wikipedia articles written in American English
     



    This page was last edited on 3 June 2024, at 22:05 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki