Create LDM-2019-08-26.md

This commit is contained in:
Mads Torgersen 2019-12-13 12:09:35 -08:00
parent 93cec651e3
commit 9e33b76fcd

View file

@ -0,0 +1,102 @@
# 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 seperately, 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.