csharplang/meetings/2018/LDM-2018-04-02.md
2018-04-06 10:44:01 -07:00

60 lines
1.8 KiB
Markdown

# C# Language Design Review Apr 2, 2018
***Warning: These are raw notes, and still need to be cleaned up. Read at your own peril!***
# C# 8.0
Tag with needs runtime support or ecosystem support
Process: make it more clear where we are. Help people understand when beating on a feature would be wasting their time.
# Nullable
Make sure we work backwards to understand how long it takes to build the whole experience.
## Dotted names
We probably have a good level of invalidation.
## Type strengthening
Based on null state and `!`. Should definitely keep that.
## !
Because `!` only applies "right here", it is ok to also silence warnings recursively. But we should not consider automatically flowing `!` on the given execution path then, because you may not always want to silence all warnings on the variable subsequently.
## Unannotated assemblies
Maybe there should be a warning that you are referencing unannotated assemblies.
## Tracking non-null variables and "W" warnings
Understand the motivation. This is ok.
## Type parameters
Unconstrained may be either nullable or nonnullable, so we have to be defensive. That's quite restrictive, but probably right.
## Structural relationships
In TypeScript there are more type relationships because of structural types. We don't even get to first base here.
# Ranges
## Open
Sure about syntax? Should there be `*` instead?
## From end
Indexing from end is probably more common in Python than any ranges at all! Cutting that off with `-x` syntax is a shame.
If we weren't doing `^`, just do ranges with positive numbers. Solve the "from end" problem in general or not at all.
## Conclusion
If indexing and multiple dimensions are in the core syntax, might as well do the whole enchilada. Optimize in compiler when using `^` on arrays and strings.