Content deleted Content added
CodingKoopa (talk | contribs) m Reworded sentence to unambiguously signify that CLS is a subset of CTS, rather than the other way around. |
Changing short description from "open specification for architecture-independent executables and runtime environment" to "Open specification for runtime environments" |
||
(27 intermediate revisions by 17 users not shown) | |||
Line 1:
{{Short description|Open specification
{{Use mdy dates|date=January 2019}}▼
{{Use American English|date=January 2019}}▼
{{Infobox technology standard
| title = Common Language Infrastructure
Line 9 ⟶ 7:
| version_date = {{Start date and age|2012|06}}
| organization = '''Developed by:''' [[Microsoft]], [[Hewlett-Packard]], [[Intel]], and others<br />
'''Standardized by:''' [[Ecma International|Ecma]], [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]]
| related_standards =
| abbreviation = CLI
| ___domain = Common Language ([[Cross-platform]])
| website = {{URL|
| long_name = ISO/IEC 23271:2012(E)
| first_published = {{Start date and age|2001}} (Ecma) and {{Start date and age|2003}} (ISO/IEC)
| committee = [
| license = [[Reasonable and non-discriminatory licensing|RAND]]
}}
The '''Common Language Infrastructure''' ('''CLI''') is an open [[specification]] and [[technical standard]] originally developed by [[Microsoft]] and standardized by [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] ('''ISO/IEC 23271''') and [[Ecma International]] ('''ECMA 335''')<ref name="iso_iec_23271_2012">
The [[metadata]] format is also used to specify the [[API]] definitions exposed by the [[Windows Runtime]].<ref>
==Overview==
[[File:Overview of the Common Language Infrastructure 2015.svg|thumb|280px|Visual overview of the Common Language Infrastructure (CLI)]]
Among other things, the CLI specification describes the following
;The [[Common Type System]] (CTS)
Line 31 ⟶ 29:
:Information about program structure is [[Language-independent specification|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
: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 (CLI)|Standard Libraries]]
▲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.
:A set of libraries providing many common functions, such as file reading and writing. Their core is the [[Standard Libraries (CLI)#Base Class Library|Base Class Library]] (BCL).
==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 International|Ecma]], with [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|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 licensing|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 (software)|Mono]].
|url=http://port25.technet.com/archive/2009/07/06/the-ecma-c-and-cli-standards.aspx
|title=The Ecma C# and CLI Standards
|website=Port 25
|first1=Peter |last1=Galli
|date=2009-07-06
|access-date=September 26, 2009
Line 50 ⟶ 54:
|archive-date=July 9, 2009
|url-status=dead
}}</ref> [[Microsoft]] added [[C Sharp (programming language)|C#]] and CLI to the list of specifications that the [[Microsoft Community Promise]] applies to,<ref>{{Cite
In 2012, Ecma and ISO/IEC published the new edition of the CLI standard
==Implementations==
*[[.NET Framework]] is Microsoft's original commercial implementation of the CLI. It only supports Windows. It was superseded by .NET in November 2020.
*[[.NET]], previously known as .NET Core, is the free and open-source multi-platform successor to .NET Framework, released under the [[MIT License]]
*[[.NET Compact Framework]] is Microsoft's commercial implementation of the CLI for portable devices and [[Xbox 360]].
*[[.NET Micro Framework]] is an open source implementation of the CLI for resource-constrained devices.
*[[Mono (software)|Mono]] is an alternative open source implementation of CLI and accompanying technologies, mainly used for mobile and game development.
*[[DotGNU]] is a decommissioned part of the GNU Project started in January 2001 that aimed to provide a [[free and open source software]] alternative to Microsoft's [[.NET Framework]].
==See also==
Line 73 ⟶ 78:
|title = Standard ECMA-335, Common Language Infrastructure (CLI)
|work = Ecma International
|url =
|access-date =
}}
*{{Cite web
|title = ISO/IEC 23271, Common Language Infrastructure
|work = ISO/IEC
|url = http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=42927
|access-date = September 27, 2006
Line 87 ⟶ 92:
|url = http://msdn.microsoft.com/en-us/netframework/aa569283.aspx
|access-date = October 13, 2009
}}
*{{Cite web
|title = Language independence and language-independent components
|work = Microsoft Learn
|date = December 21, 2022
|url = https://learn.microsoft.com/en-us/dotnet/standard/language-independence
|access-date = May 19, 2023
}}
Line 96 ⟶ 108:
{{ISO standards}}
▲{{Use mdy dates|date=January 2019}}
▲{{Use American English|date=January 2019}}
[[Category:Common Language Infrastructure| ]]
[[Category:Ecma standards]]
|