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

1.8 KiB

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.