3 KiB
C# Language Design Notes for Aug 26, 2019
Agenda
Triage of newly championed issues. Features that we may consider are placed in the milestone where we will look at them again. Listed here by target milestone.
Milestone 8.X
We are unsure if there will be an 8.1 release or we will go straight to C# 9.0. In the latter case we will triage this bucket and move things to 9.0 or later.
#883 Zero and one-element tuples
We don't have a good syntax for one-tuples.
But in deconstruction and pattern matching there is less of a syntax problem.
What does (3)
mean? It is a constant 3. If you want a tuple literal, you can just give it a name - that is unambiguous. (_: 3)
might become the common pattern, though _
isn't a discard for tuple element names.
Could consider splitting the feature and doing only one-element tuples in literals and deconstruction.
Milestone 9.0
This is the next major release (as C# 8.0 is a done deal at this point). Putting features in this milestone doesn't mean that we will do them here! It just means that we will consider them in this timeframe - possibly to be rejected or pushed out at that point.
#146
There's something to this, but instead of marking separately, we think it is paired with allowing nullary constructors on structs . For those we would warn on uses of default(S)
that we can detect, similar to nullability.
#812
Could work with conjunctive patterns. An alternative would be a range-like syntax.
#1792, #1793, #1502
Let's keep ironing out annoying limitations in this space
#1881
Should think also of UTF8
For Memory<char>
etc we would probably continue to require you to go through Span<char>
etc.
#2585
Fits well with a "math" push, and should align with that.
Milestone X.0
These would be major features, and we don't expect to consider them for C# 9.0.
#339
This is a very fundamental feature, and we're not sure we have compelling scenarios. Possibly the next thing to look at after "type classes" in the advanced type features category.
#1047
This is probably in pattern matching's future somewhere, though we won't be ready for it in 9.0.
#538
Probably requires runtime work, and the scenarios don't currently justify that.
#2545 (Blocked)
We keep not moving on this. We'd need a good understanding with EF
Milestone X.X
These would be minor features which we don't expect to consider until after 9.0.
#2608
Fine, but doesn't rise to priority
Rejected
#301
This is subsumed by "extension everything" and the other proposals in that ilk. We do understand and support the scenario, but don't want the specific feature.
#1033
Rejected. The assignment should happen explicitly in the body, and the compiler can warn if you forget.
#1586
It shipped and it's in unsafe. We're ok with it.
#2383
The language is what it is at this point, and it is not worth doing work to "fix" it. However we should add a warning wave warning on the initializers saying they won't ever be called.