The C# compilers have been open source since 2014, now in the dotnet/roslyn repository. The dotnet/csharplang split off to provide a dedicate public space for the innovation and evolution of the C# language. Now, dotnet/csharpstandard completes the group, providing a public space for the ongoing work to document the standard for the latest C# language versions.
Welcome dotnet/csharpstandard
Moving the standards work into the open, under the .NET Foundation, makes it easier for standardization work. Everything from language innovation and feature design through implementation and on to standardization now takes place in the open. It will be easier to ask questions among the language design team, the compiler implementers, and the standards committee. Even better, those conversations will be public.
The end result will be a more accurate standard for the latest versions of C#.
Opening the process
The ECMA C# standards committee, TC-49-TG2 is still responsible for creating the proposed standard for the C# language. What changes is that work now happens in the open, under the .NET Foundation. You can see work in progress on the standard text for C# 6. This work merges the draft spec currently hosted in the csharplang
repository with the current C# 5.0 standard text. Work on incorporating the C# 7 features is taking place as well. See the C# 7 draft branch for progress.
The addition of dotnet/csharpstandard
means there are now three different repositories related to the C# language. Each has a well-defined purpose:
dotnet/csharplang
is for language design and evolution efforts.dotnet/roslyn
is for the implementation of the compilers and related tools.dotnet/csharpstandard
is for the creation of the standard text that describes the C# language.
The addition of dotnet/csharpstandard
to the .NET Foundation means we can direct work to the correct place more easily. You’ll see the following changes over the coming months:
- Issues in
dotnet/csharplang
anddotnet/docs
for the spec text will move to the newdotnet/csharpstandard
repository.- This will take place during the next month or two.
- The C# spec on docs.microsoft.com will be replaced with the version from the standards committee.
- This will take place once all C# 6 pull requests have been reviewed and merged in the standards repo.
- The C# 6 draft spec will be removed from the
dotnet/csharplang
repo.- This will take place once the proposed C# 6 draft is published on docs.microsoft.com.
You can participate by reviewing the PRs, opening issues for changes that aren’t covered, and helping refine the language in PRs.
Thank you
Moving the standards work into a public repository took the cooperation of the members of the C# standards committee, the chair, vice-chair and secretary of ECMA TG49, and the .NET Foundation board. We invite you to participate by identifying issues, reviewing proposed text, and suggesting improvements. We’re excited to move this work into the open, and invite all of you along.
Documenting the language is welcome news. However, I don't understand the difference in purpose between csharplang and csharpstandard. At face value, the repositories appear to have similar content. For example, both describe the C# language. Both have documentation for expressions, here and here. Both are marked version 6. But, between these repositories, expressions.md differ significantly, not just in markdown formatting, but in content. Which is more up-to-date on describing version 6? Currently, C# is at...
Ken,
We are working on fixing this situation. The reason csharplang and csharpstandard have different text is because of the way the C# spec documents diverged while the standardization process was dormant between V2 and V5.
Right now: csharplang's main branch more accurately has all of V6. csharpstandard has PRs that will bring them together. The branch has our current working draft for V6. We haven't finished all the features yet.
We're working hard to catch up,...
Glad to hear as well!!!
Two things…
First – Bill, I don’t like your profile photo.
Second – I really am skeptical and think this is Microsoft playing catch up with Oracle on Java. :-/
Edit: Old article about this if anyone cares to read it: https://www.zdnet.com/article/what-is-ecma-and-why-microsoft-cares/
CsharpStandard is a very very bad marketing name.
It's like netstandard: NOBODY UNDERSTAND WHAT IS THE DIFFERENCE BETWEEN NET .NET CORE 2.0 3.1 .NET STANDARD 1 2 ....ETC.
Before trying to always make a triple axel and trying to not fall on the ice like an arrogant champion ice dance, please associates real developers and architects to all the naming décisions made by the F***ing Marketing Department.
The naming convention for NET since .NET Standard and .NET CORE...
Are you crazy Christophe? You want them to put the compilers in a “compilers” folder, the docs in a “docs” folder, and the specs in a “specs” folder? Oh wait, that’s entirely sensible! Come on Microsoft, you know this makes much more sense.
This announcement is about the C# language specification and the ECMA standard that describes it (ECMA-334). This has little to do with the products .NET standard/core/etc., except that they both contain the word “standard” with different meanings.
What is so hard to understand ?
Is this Microsoft Marketing Department asking?
No… ?
Glad to hear this 🙂
Are there any comparable efforts to allow the community to help update the CLR standard definitions? So much of the work that has gone into updating the C# language, and the work that is continuing to be put into evolving it, would be significantly easier if we weren't still locked into the restrictive CLR 2.0 IL and metadata architecture.
Look at the insane mass of complexity and gibberish that is the current proposal for "shapes,"...
Absolutely agree, CLR is long overdue for evolution.
Definitely agree. If possible avoid silos and enable community to develop special need solutions.