Content deleted Content added
Infobox completed. |
Changing short description from "open specification for architecture-independent executables and runtime environment" to "Open specification for runtime environments" |
||
(36 intermediate revisions by 20 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
| status = Published
| year_started = {{Start date and age|2000}}
| version =
| version_date = {{Start date and age|2012|
| organization = '''Developed by:''' [[Microsoft]], [[Hewlett-Packard]], [[Intel]], and others<br />
'''Standardized by:''' [[Ecma International|Ecma]], [[International Organization for Standardization|ISO]]
| 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]]
The [[metadata]] format is also used to specify the [[API]] definitions exposed by the [[Windows Runtime]].<ref>{{cite web| url = https://www.microsoftpressstore.com/articles/article.aspx?p=2199428&seqNum=3| title = Introduction to Advanced Windows Store App Development using HTML5 and JavaScript |website=Microsoft Press Store |date=Oct 15, 2013 |url-status=live |archive-url=https://web.archive.org/web/20230330075408/https://www.microsoftpressstore.com/articles/article.aspx?p=2199428&seqNum=3 |archive-date= Mar 30, 2023 }}</ref><ref>{{cite web| url = https://tirania.org/blog/archive/2011/Sep-15.html| title = WinRT demystified |first1=Miguel |last1=de Icaza |date=15 Sep 2011 |url-status=live |archive-url=https://web.archive.org/web/20231130221232/https://tirania.org/blog/archive/2011/Sep-15.html |archive-date= Nov 30, 2023 }}</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 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 48 ⟶ 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 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 71 ⟶ 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 85 ⟶ 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 94 ⟶ 108:
{{ISO standards}}
▲{{Use mdy dates|date=January 2019}}
▲{{Use American English|date=January 2019}}
[[Category:Common Language Infrastructure| ]]
[[Category:Ecma standards]]
|