Common Language Infrastructure

Short description: Open specification for runtime environments

Common Language InfrastructureISO/IEC 23271:2012(E)

Status| Published
Year started| 2000; 26 years ago (2000)
First published| 2001; 25 years ago (2001) (Ecma) and 2003; 23 years ago (2003) (ISO/IEC)
Latest version| Sixth edition
June 2012; 13 years ago (2012-06)
Organization| Developed by: Microsoft, Hewlett-Packard, Intel, and others
Standardized by: Ecma, ISO/IEC
Committee| ISO/IEC JTC 1/SC 22
Domain| Common Language (Cross-platform)
License| RAND
Abbreviation| CLI
Website| ECMA-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]

## Contents

* 1 Overview
* 2 Standardization and licensing
* 3 Implementations
* 4 See also
* 5 Notes
* 6 References
* 7 External links

## Overview

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

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[update], neither Microsoft nor its partners have identified any patents essential to CLI implementations subject to RAND terms.[citation needed]

As of July 2009[update],[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

* .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 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

1. ↑ 1.0 1.1 "ISO/IEC 23271:2012 - Information technology -- Common Language Infrastructure (CLI)". http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=58046.
2. ↑ 2.0 2.1 "ECMA-335". June 2012. https://www.ecma-international.org/publications-and-standards/standards/ecma-335/.
3. ↑ "Introduction to Advanced Windows Store App Development using HTML5 and JavaScript". Oct 15, 2013. https://www.microsoftpressstore.com/articles/article.aspx?p=2199428&seqNum=3.
4. ↑ de Icaza, Miguel (15 Sep 2011). "WinRT demystified". https://tirania.org/blog/archive/2011/Sep-15.html.
5. ↑ Galli, Peter (2009-07-06). "The Ecma C# and CLI Standards". http://port25.technet.com/archive/2009/07/06/the-ecma-c-and-cli-standards.aspx.
6. ↑ v-alje (March 16, 2023). "[MS-DEVCENTLP: Microsoft Community Promise"] (in en-us). https://learn.microsoft.com/en-us/openspecs/dev_center/ms-devcentlp/8b8d1b7a-a10a-4667-9558-6d9c43adf60d.

## References

* "Standard ECMA-335, Common Language Infrastructure (CLI)". Ecma International. https://www.ecma-international.org/publications-and-standards/standards/ecma-335/.
* "ISO/IEC 23271, Common Language Infrastructure". ISO/IEC. http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=42927.
* "Ecma C# and Common Language Infrastructure Standards". Microsoft Corporation. http://msdn.microsoft.com/en-us/netframework/aa569283.aspx.
* "Language independence and language-independent components". Microsoft Learn. December 21, 2022. https://learn.microsoft.com/en-us/dotnet/standard/language-independence.

## External links

* ISO/IEC 23271:2012 Information technology — Common Language Infrastructure (CLI)

* v
* t
* e

Common Language Infrastructure

Architecture|

* Application domain
* Code Access Security
* Common Intermediate Language (CIL)
* CIL instructions
* Common Type System (CTS)
* Platform Invocation Services (P/Invoke)
* Virtual Execution System (VES)

Components|

* Assembly
* Delegate
* Global Assembly Cache (GAC)
* Manifest
* Metadata

Standard
Libraries|

| Kernel Profile|

* Base Class Library (BCL)
* Runtime Infrastructure Library

|

Compact Profile|

* Network Library
* Reflection Library
* XML Library

* Extended Array Library
* Extended Numerics Library
* Parallel Library
* Vararg Library

Implementations|

| Microsoft|

* .NET Framework
* .NET Compact Framework
* .NET Micro Framework
* Shared Source Common Language Infrastructure

|

Other|

* .NET Core
* Mono
* Xamarin.iOS
* Xamarin.Android
* Xamarin.Mac
* Portable.NET

Languages|

| Microsoft|

* C#
* Visual Basic .NET
* C++/CLI
* Managed
* F#
* Q#
* J#
* JScript .NET
* PowerShell

|

Other|

* Axum
* A#
* Boo
* Cobra
* IronScheme
* IronLisp
* IronPython
* IronRuby
* Nemerle
* Oxygene
* Phalanger
* P#
* Scala

Comparison|

* C# and Java
* C# and Visual Basic .NET
* Java and .NET platforms
* Visual Basic and Visual Basic .NET

Organizations|

* .NET Foundation
* DotGNU
* Microsoft
* Xamarin

* v
* t
* e

Standards of Ecma International

Application interfaces|

* ANSI escape code
* Common Language Infrastructure
* Office Open XML
* OpenXPS

File systems (tape)|

* Advanced Intelligent Tape
* DDS
* DLT
* Super DLT
* Holographic Versatile Disc
* Linear Tape-Open (Ultrium-1)
* VXA

File systems (disk)|

* CD-ROM
* CD File System (CDFS)
* FAT
* FAT12
* FAT16
* FAT16B
* FD
* UDF
* Ultra Density Optical
* Universal Media Disc

Graphics|

* Universal 3D

Programming languages|

* C++/CLI
* C#
* Eiffel
* JavaScript (E4X, ECMAScript)
* Dart

Radio link interfaces|

* NFC
* UWB

Other|

* ECMA-35

List of Ecma standards (1961 - Present)

* v
* t
* e

ISO standards by standard number

List of ISO standards / ISO romanizations / IEC standards

1–9999|

* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 9
* 16
* 17
* 31
* -0
* -1
* -2
* -3
* -4
* -5
* -6
* -7
* -8
* -9
* -10
* -11
* -12
* -13
* 128
* 216
* 217
* 226
* 228
* 233
* 259
* 269
* 302
* 306
* 361
* 428
* 500
* 518
* 519
* 639
* -1
* -2
* -3
* -5
* -6
* 646
* 657
* 668
* 690
* 704
* 732
* 764
* 838
* 843
* 860
* 898
* 965
* 999
* 1000
* 1004
* 1007
* 1073-1
* 1155
* 1413
* 1538
* 1629
* 1745
* 1989
* 2014
* 2015
* 2022
* 2033
* 2047
* 2108
* 2145
* 2146
* 2240
* 2281
* 2533
* 2709
* 2711
* 2720
* 2788
* 2848
* 2852
* 3029
* 3103
* 3166
* -1
* -2
* -3
* 3297
* 3307
* 3601
* 3602
* 3864
* 3901
* 3950
* 3977
* 4031
* 4157
* 4165
* 4217
* 4909
* 5218
* 5426
* 5427
* 5428
* 5725
* 5775
* 5776
* 5800
* 5807
* 5964
* 6166
* 6344
* 6346
* 6385
* 6425
* 6429
* 6438
* 6523
* 6709
* 6943
* 7001
* 7002
* 7010
* 7027
* 7064
* 7098
* 7185
* 7200
* 7498
* -1
* 7637
* 7736
* 7810
* 7811
* 7812
* 7813
* 7816
* 7942
* 8000
* 8093
* 8178
* 8217
* 8373
* 8501-1
* 8571
* 8583
* 8601
* 8613
* 8632
* 8651
* 8652
* 8691
* 8805/8806
* 8807
* 8820-5
* 8859
* -1
* -2
* -3
* -4
* -5
* -6
* -7
* -8
* -8-I
* -9
* -10
* -11
* -12
* -13
* -14
* -15
* -16
* 8879
* 9000/9001
* 9036
* 9075
* 9126
* 9141
* 9227
* 9241
* 9293
* 9314
* 9362
* 9407
* 9506
* 9529
* 9564
* 9592/9593
* 9594
* 9660
* 9797-1
* 9897
* 9899
* 9945
* 9984
* 9985
* 9995

10000–19999|

* 10005
* 10006
* 10007
* 10116
* 10118-3
* 10160
* 10161
* 10165
* 10179
* 10206
* 10218
* 10303
* -11
* -21
* -22
* -28
* -238
* 10383
* 10487
* 10585
* 10589
* 10646
* 10664
* 10746
* 10861
* 10957
* 10962
* 10967
* 11073
* 11170
* 11179
* 11404
* 11544
* 11783
* 11784
* 11785
* 11801
* 11898
* 11940 (-2)
* 11941
* 11941 (TR)
* 11992
* 12006
* 12182
* 12207
* 12234-2
* 13211
* -1
* -2
* 13216
* 13250
* 13399
* 13406-2
* 13450
* 13485
* 13490
* 13567
* 13568
* 13584
* 13616
* 14000
* 14031
* 14224
* 14289
* 14396
* 14443
* 14496
* -2
* -3
* -6
* -10
* -11
* -12
* -14
* -17
* -20
* 14644
* 14649
* 14651
* 14698
* 14750
* 14764
* 14882
* 14971
* 15022
* 15189
* 15288
* 15291
* 15292
* 15398
* 15408
* 15444
* -3
* 15445
* 15438
* 15504
* 15511
* 15686
* 15693
* 15706
* -2
* 15707
* 15897
* 15919
* 15924
* 15926
* 15926 WIP
* 15930
* 16023
* 16262
* 16355-1
* 16612-2
* 16750
* 16949 (TS)
* 17024
* 17025
* 17100
* 17203
* 17369
* 17442
* 17799
* 18000
* 18004
* 18014
* 18245
* 18629
* 18916
* 19005
* 19011
* 19092 (-1
* -2)
* 19114
* 19115
* 19125
* 19136
* 19407
* 19439
* 19500
* 19501
* 19502
* 19503
* 19505
* 19506
* 19507
* 19508
* 19509
* 19510
* 19600
* 19752
* 19757
* 19770
* 19775-1
* 19794-5
* 19831

20000+|

* 20000
* 20022
* 20121
* 20400
* 21000
* 21047
* 21500
* 21827:2002
* 22000
* 23270
* 23271
* 23360
* 24517
* 24613
* 24617
* 24707
* 25178
* 25964
* 26000
* 26262
* 26300
* 26324
* 27000 series
* 27000
* 27001
* 27002
* 27006
* 27729
* 28000
* 29110
* 29148
* 29199-2
* 29500
* 30170
* 31000
* 32000
* 37001
* 38500
* 40500
* 42010
* 45001
* 50001
* 55000
* 80000
* -1
* -2
* -3

* Category

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Common Language Infrastructure. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Common_Language_Infrastructure&oldid=4155643"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template