-
I see discussions of proposals for C# 7.1, but the current draft is C# 6. When discussing new proposals it would be nice to be able to refer to the C# 7.0 draft now that a lot of things have been nailed down. |
Beta Was this translation helpful? Give feedback.
Replies: 19 comments 3 replies
-
As far as I know, there is currently no C# 7.0 spec. @MadsTorgersen explained the current situation in an email to the csharplang mailing list:
|
Beta Was this translation helpful? Give feedback.
-
I was hoping for at least a draft- otherwise, I won't know what's already part of 7 without reading every accepted proposal. It sounds like we won't even have a draft until Mads' steps 1.1 - 2.6 are complete? Concerning the Markdown source- I like it, but there is a serious deficiency to having the primary browsing mechanism be https://github.com/dotnet/csharplang/tree/master/spec. It's split into many files and I can't Ctrl+F and search for a given name or phrase. GitHub's Ideally some dedicated viewing website would exist for this purpose. I suppose a workaround would be to clone the repo and see if VS Code has such a search feature. |
Beta Was this translation helpful? Give feedback.
-
I have created "champion" issues for the C# 7 feature owners to add (stand-alone) specifications to this repo for the features that we added in C# 7. |
Beta Was this translation helpful? Give feedback.
-
Once C# 7 ships within a month, and you have some breathing room, won't it be safe to merge all individual specs into a single C# 7 draft spec? It's not like something could be reversed even today, right? |
Beta Was this translation helpful? Give feedback.
-
@jnm2 The individual specs are not patches to the spec document, so while it would be safe, it would be a large amount of work. Moreover, the checked-in spec is a snapshot that hasn't been reconciled with ECMA (i.e. it was produced independently, and does not include any of the ECMA work for C# 5), so much of the work would be throw-away if done on the current draft. Ultimately, the integration of the language changes will be done in ECMA based on the ECMA draft. As soon as we have an ECMA draft we'll replace this spec with that one. We're not planning to pause our language design work to undertake a throw-away specification effort. To say it another way, we never have breathing room. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the explanation. So what does your team do- you just know which individual 7.0 specs are relevant when discussing 7.1 changes? |
Beta Was this translation helpful? Give feedback.
-
@jnm2 I'm not sure I understand what you're asking but I think the answer is yes. For the docs, we'll pull together specs for the 7.0 features and move them into a 7.0 subdirectory, and add a nice README overview of the changes in C# 7. |
Beta Was this translation helpful? Give feedback.
-
This is something that I've already volunteered to do and builds on the conversion process I wrote to get the initial specs in to markdown a few years ago as a proof of concept. That's what @ljw1004 used to start the version of the VB spec which is now in https://github.com/dotnet/vblang/. |
Beta Was this translation helpful? Give feedback.
-
(Never mind. I just re-read https://github.com/dotnet/csharplang/blob/master/proposals/README.md, which clarified this. These are
Is the implication here that, eventually, there will be a @jnm2, @svick That's correct. What we have in the specs folder now is, I think, really more of a placeholder that's based on the C# 5.0 spec. (Maybe we should move it to a |
Beta Was this translation helpful? Give feedback.
-
So, it's nearly 2019 and there's still no official C# 6.0 nor 7.0 specification to be found anywhere; ECMA-335 remains stubbornly stuck on edition 6, circa C# 5.0/2013. |
Beta Was this translation helpful? Give feedback.
-
Any updates on when the C# 6 draft will be submitted and we can get the C# 7 draft going? I'm curious because my understanding is that the OSP only covers standardized C# versions, which creates a curious (but extremely unlikely) legal uncertainty for 3rd party C# implementations using versions that don't have an official specification. |
Beta Was this translation helpful? Give feedback.
-
@Salgat I haven't heard about the Open Specification Promise before you mentioned it, but as far as I can tell, C# is not among the specifications covered by it. C# is covered by the related, but separate Community Promise, though that page was last updated in 2008 and explicitly says it applies to the 4th Edition of the Ecma C# specification (which describes C# 2.0). So based on just that, even features from C# 3.0-5.0 (which are included in the latest Ecma C# spec), would not be safe. The Roslyn codebase is licensed under the Apache license, which does grant a patent license, but I don't think that would be relevant to a potential reimplementation. Though maybe it's covered by one of the patent promises Microsoft made since then? I'm not sure. |
Beta Was this translation helpful? Give feedback.
-
As a third party vendor that makes parsing products based on the official language specifications, it's be extremely frustrating that we've been asking for updated specs for years now in other GitHub issues and there seems to be no movement on this. In my opinion, keeping the specs and especially the language grammar up to date should be part of any new language release that is made. Now we're at a point where the language grammars for C# and VB are many versions behind the current language versions, which is getting ridiculous. I know documentation isn't "fun" but it's important! |
Beta Was this translation helpful? Give feedback.
-
Our next step is to integrate the recent ECMA C# 5 specification with Microsoft's version, producing a markdown version from which ECMA work can begin to produce a C# 6 and/or 7 specification. We haven't yet rebooted the ECMA work since we completed the C# 5 specification. |
Beta Was this translation helpful? Give feedback.
-
@gafter I'm not sure to understand the conclusion of this conversation. Where can we get Microsoft's version of C# 7.2 and 8.0 specifications? Are the new C# specifications closed sourced? |
Beta Was this translation helpful? Give feedback.
-
You can find specifications in the proposals folder of this repository. However the specifications are standalone specs for each proposal. They are not necessarily complete or up to date, and have not been integrated with the full specification. |
Beta Was this translation helpful? Give feedback.
-
Also note that not all features do have a formal specification. For example allowing Obsolete attribute on property accessors was simple enough to be implemented without any specification. |
Beta Was this translation helpful? Give feedback.
-
Ok thanks for clearing this up |
Beta Was this translation helpful? Give feedback.
-
The current answer to this question is https://github.com/dotnet/csharpstandard. |
Beta Was this translation helpful? Give feedback.
The current answer to this question is https://github.com/dotnet/csharpstandard.