Content deleted Content added
No edit summary |
Changing short description from "open specification for architecture-independent executables and runtime environment" to "Open specification for runtime environments" |
||
(47 intermediate revisions by 26 users not shown) | |||
Line 1:
{{Short description|Open specification
{{Infobox technology standard
{{Use mdy dates|date=January 2019}}▼
{{Use American English|date=January 2019}}▼
| status = Published
| year_started = {{Start date and age|2000}}
The '''Common Language Infrastructure''' ('''CLI''') is an open [[specification]] (technical standard) developed by [[Microsoft]] and standardized by [[International Organization for Standardization|ISO]] and [[Ecma International|Ecma]]<ref name="iso_iec_23271_2012">[http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=58046 ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)]</ref><ref name="ecma_355_2012">[http://www.ecma-international.org/publications/standards/Ecma-335.htm Standard ECMA-335 - 6th edition (June 2012)]</ref> 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 Core]] and [[Mono (software)|Mono]] are implementations of the CLI.▼
| version = Sixth edition
| 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|https://www.ecma-international.org/publications-and-standards/standards/ecma-335/|ECMA-335}},<br />{{URL|https://www.iso.org/standard/58046.html|ISO/IEC 23271}}
| long_name = ISO/IEC 23271:2012(E)
| first_published = {{Start date and age|2001}} (Ecma) and {{Start date and age|2003}} (ISO/IEC)
| committee = [[ISO/IEC JTC 1/SC 22]]
| 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 14 ⟶ 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 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 (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 33 ⟶ 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
*[[.NET
*[[.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==
*[[Standard Libraries (CLI)]]
*[[List of CLI languages]]
*[[.NET Standard]]
==Notes==
Line 55 ⟶ 78:
|title = Standard ECMA-335, Common Language Infrastructure (CLI)
|work = Ecma International
|url =
|
}}
*{{Cite web
|title = ISO/IEC 23271, Common Language Infrastructure
|work = ISO/IEC
|url = http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=42927
|
}}
*{{Cite web
Line 68 ⟶ 91:
|work = Microsoft Corporation
|url = http://msdn.microsoft.com/en-us/netframework/aa569283.aspx
|
}}
*{{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
}}
==External links==
*{{Official|https://www.iso.org/standard/58046.html|ISO/IEC 23271:2012 Information technology — Common Language Infrastructure (CLI)}}
{{Common Language Infrastructure}}
Line 75 ⟶ 108:
{{ISO standards}}
▲{{Use mdy dates|date=January 2019}}
▲[[Category:Common Language Infrastructure]]
▲{{Use American English|date=January 2019}}
[[Category:Common Language Infrastructure| ]]
[[Category:Ecma standards]]
[[Category:IEC standards]]
|