-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Process] What we learned in C# 7 #960
Comments
@jskeet Here's the basic outline for my thoughts on some process updates for C# 8. It covers a bit of 4.3 and 4.4 in the agenda. |
In terms of using LangVersion, we'll need to check whether we're relying on later-than-C#-8 features like top-level statements or global using directives - but that's fixable, of course. Proposed workflow sounds feasible - let's discuss it in the meeting. |
LangVersion: I've just tried setting LangVersion to 8.0 in the projects - 490 out of 497 tests fail :( Basically we use top-level statements and implicit using directives, neither of which are available in C# 8. That's not to say it's all infeasible though - we can potentially add the "standard" using directives to the templates instead. Not being able to use top-level statements is trickier though. Several examples using the "standalone-console" template could probably use "code-in-main" instead, but I suspect not all could. For reference, top-level statements were introduced in C# 9, and implicit using directives were introduced in C# 10. As an experiment, I've tried:
At that point, we have only 27 failures, many of which I suspect could be fixed by adding a using directive. Does that sound like an avenue worth pursuing? (We could look at how many standalone-console examples could use code-in-main as well, to increase the number of samples being compiled against the right version...) |
Re: LangVersion: It sounds like it's more work than it's worth in general. As we work on feature areas where there a numerous changes between 8.0 and the current version, we can make those samples use the target version when we have value. Ref safety features comes to mind. Patterns might be another area, although I think those are fairly well known. |
Discussion from Oct 4 meeting:
One goal for the next meeting will be to make a decision on each PR regarding the general direction of the PR, and close those PRs that we decide are not the direction we intend to take. We agree on the process going forward, so closing as completed. |
Updated process for ECMA standardization for C# 8
This issue captures observations from moving to GitHub / Markdown / public for the C# 7.3 standard. It identifies some suggestions where we can improve.
Overall, the process was an improvement. It was easier to have multiple tasks running in parallel, assigned to different members of the committee. We built a number of tools to help automate some of our tasks. We also had more early feedback from others regarding our work.
Friction points
There are three main friction points that slowed our work:
The third slowed us down the most. There were a few underlying causes:
More of the suggestions relate to removing that friction.
Suggestions
The first item is already addressed; we have PRs for the C# 8.0 features.
Suggestion: Use
LangVersion
to improve test fidelity.The second items suggests one small change. I propose we update our test harness to validate programs by specifying the
<LangVersion>
element to match the C# version we're working on. (In this case, C# 8.0). That would help us spot when we accidentally spec a feature that comes in a future version. Note:<LangVersion>
isn't perfect, but it's very close. I propose this change in the Pre-C# 8.0 milestone.Suggestion: We review each of the draft V8 PRs in the early C# 8 cycle.
We made significant progress quickly by merging the large PRs, and creating issues to address the remaining comments in additional PRs. (Some of those are in the Pre-C# 8 milestone.)
The following workflow may make us more efficient:
The reason for these ideas is to get more of the features merged, even if not perfect. That gives us more flexibility in many ways:
The text was updated successfully, but these errors were encountered: