Skip to content
This repository has been archived by the owner on Aug 28, 2019. It is now read-only.

Latest commit

 

History

History
69 lines (44 loc) · 5.53 KB

dotnet-standards.md

File metadata and controls

69 lines (44 loc) · 5.53 KB

.NET Standards

There was a very early realization by the founders of .NET that they were creating a new programming technology that had broad applicability across operating systems and CPU types and that advanced the state of the art of late 1990s (when the .NET project started at Microsoft) programming language implementation techniques. This led to considering and then pursuing standardization as an important pillar of establishing .NET in the industry.

The key addition to the state of the art was support for multiple programming languages with a single language runtime, hence the name Common Language Runtime. There were many other smaller additions, such as value types, a simple exception model and attributes. Generics and language integrated query were later added to that list.

Looking back, standardization was quite effective, leading to .NET having a strong presence on iOS and Android, with the Unity and Xamarin offerings, both of which use the Mono runtime. The same may end up being true for .NET on Linux.

The various .NET standards have been made meaningful by the collaboration of multiple companies and industry experts that have served on the working groups that have defined the standards. In addition (and most importantly), the .NET standards have been implemented by multiple commercial (ex: Unity IL2CPP, .NET Native) and open source (ex: Mono) implementors. The presence of multiple implementations proves the point of standardization.

ECMA 334 - C#

The C# language was standardized as ECMA 334 in 2002 and approved as ISO/IEC 23270 in 2003.

ECMA 334 Resources

ECMA 335 - CLI

Common Language Infrastructure - the formalized basis of .NET -- was standardized as ECMA 335 in 2001 and approved as ISO/IEC 23271 in 2003. The standards have been since updated, to reflect changes in .NET, such as generics.

ECMA 335 Resources

ECMA 335 Partitions with added Microsoft Specific Implementation Notes

ECMA Technical Report 084: Information Derived from Partition IV XML File

ECMA 372 - C++/CLI

The C++/CLI language was standardized as ECMA 372 in 2005.

EMCA 372 is supported by the .NET Framework, but not .NET Core.

ECMA 372 Resources

Shared Source CLI (SSCLI)

Shared Source CLI or "Rotor" was a working implementation for the ECMA-334 (C#) and ECMA-335 (Common Language Infrastructure, or CLI) standards. It was released under a shared source license in 2002, primarily to encourage academic research focused on .NET and to demonstrate viability of .NET on diverse platforms. It was last released in 2006, to align with the .NET Framework 2 release. It is no longer relevant, given that CoreCLR has been released as open source on GitHub.

SSCLI Resources