C# Language Design Notes for 2019
Overview of meetings and agendas for 2019
Dec 18, 2019
C# Language Design Notes for Dec 18, 2019
- Pure null checks
var?
Dec 16, 2019
C# Language Design Notes for Dec 16, 2019
- Switch Expression as a Statement Expression (continued) (Neal, Fred)
- Triage
Dec 11, 2019
C# Language Design Notes for Dec 11, 2019
- Design review feedback
Dec 9, 2019
(not yet transcribed)
- https://github.com/dotnet/csharplang/issues/2850 Proposed changes for pattern-matching (continued) (Neal)
- https://github.com/dotnet/csharplang/issues/2860 Switch Expression as a Statement Expression (Neal)
Dec 4, 2019 (Design Review)
(not yet transcribed)
Nov 25, 2019
C# Language Design Notes for Nov 25, 2019
- Revisit unconstrained
T?
(Mads, Jared)
Nov 20, 2019
(not yet transcribed)
- https://github.com/dotnet/csharplang/issues/2911 Utf8 String Literals (Neal)
- https://github.com/dotnet/csharplang/issues/2850 Proposed changes for pattern-matching (continued) (Neal)
Nov 18, 2019
C# Language Design Notes for Nov. 18, 2019
- Proposed changes for pattern-matching
Nov 13, 2019
C# Language Design Notes for Nov 13, 2019
- Discriminated unions
- Improve analysis of
[MaybeNull]T
values
Nov 11, 2019
C# Language Design Notes for Nov 11, 2019
- Confirm removal of warning calling a method that returns
[MaybeNull]T
- Allow interpolated string constant
- Enhancing the Common Type Specification
- Type pattern
- Simple name binding with target type
Oct 30, 2019
C# Language Design Notes for Oct 30, 2019
- Function Pointer syntax
- Enhancing the Common Type Specification
Oct 28, 2019
C# Language Design Notes for Oct 28, 2019
- Discard parameters in lambdas and other methods
- Enhancing the common type algorithm
Oct 23, 2019
C# Language Design Notes for Oct 23, 2019
- New primitive types
https://github.com/dotnet/csharplang/issues/435
Oct 21, 2019
C# Language Design Notes for Oct 21, 2019
- Records
- Init-only members
- Static lambdas
Sep 18, 2019
C# Language Design Notes for Sep 18, 2019
Triage:
-
Proposals with complete designs:
- https://github.com/dotnet/csharplang/issues/1888 Champion "Permit attributes on local functions"
- https://github.com/dotnet/csharplang/issues/100 Champion "Target-typed new expression"
-
Target typing and best-common-type features:
- https://github.com/dotnet/csharplang/issues/2473 Proposal: Target typed null coalescing (??) expression
- https://github.com/dotnet/csharplang/issues/2460 Champion: target-typed conditional expression
- https://github.com/dotnet/csharplang/issues/881 Permit ternary operation with int? and double operands
- https://github.com/dotnet/csharplang/issues/33 Champion "Nullable-enhanced common type"
Sep 16, 2019
C# Language Design Notes for Sep 16, 2019
- Support for Utf8 strings
- Triage remaining features out of the 8.X milestone
Sep 11, 2019
C# Language Design Notes for Sep 11, 2019
- Close https://github.com/dotnet/roslyn/issues/37313
- Triage new proposed 9.0 features
- Finish triaging away 8.X milestone
Sep 4, 2019
C# Language Design Notes for Sep 4, 2019
- AllowNull on properties https://github.com/dotnet/roslyn/issues/37313
Aug 28, 2019
C# Language Design Notes for Aug 28, 2019
- Triage language features
Jul 22, 2019
C# Language Design Notes for July 22, 2019
- Discuss the new records proposal
Jul 17, 2019
C# Language Design Notes for July 17, 2019
-
Triage, see https://github.com/dotnet/csharplang/projects/4
- Triage championed features https://github.com/dotnet/csharplang/projects/4#column-4649189
- Triage milestones
Jul 10, 2019
C# Language Design Notes for July 10, 2019
- Empty switch statement
[DoesNotReturn]
attribute- Revisiting the
param!
null-checking feature
May 15, 2019
C# Language Design Notes for May 15, 2019
- Close on nullable attributes (Mads and Steve)
May 13, 2019
C# Language Design Notes for May 13, 2019
- Close on desired rules for warning suppressions and
#nullable
interacting
Apr 29, 2019
C# Language Design Notes for Apr 29, 2019
- Default interface implementations and
base()
calls - Async iterator cancellation
- Attributes on local functions
Apr 24, 2019
C# Language Design Notes for Apr 24, 2019
MaybeNull and related nullable reference type attributes
Apr 22, 2019
C# Language Design Notes for Apr 22, 2019
- Inferred nullable state from a finally block
- Implied constraint for a type parameter of a partial?
- Target-typed switch expression
- DefaultCancellationAttribute and overriding/hiding/interface implementation
Apr 15, 2019
C# Language Design Notes for Apr 15, 2019
- CancellationToken in iterators
- Implied nullable constraints in nullable disabled code
- Inheriting constraints in nullable disabled code
- Declarations with constraints declared in #nullable disabled code
- Result type of
??=
expression - Use annotation context to compute the annotations?
- Follow-up decisions for pattern-based Index/Range
Apr 3, 2019
C# Language Design Notes for Apr 3, 2019
- Ambiguous implementations/overrides with generic methods and NRTs
- NRT and
dynamic
Apr 1, 2019
C# Language Design Notes for Apr 1, 2019
-
Pattern-based Index/Range translation
-
Default interface implementations: Is object.MemberwiseClone() accessible in an interface?
Mar 27, 2019
C# Language Design Notes for Mar 27, 2019
-
Switch expression syntax
-
Default interface implementations
-
Reabstraction
-
Explicit interface abstract overrides in classes
-
object.MemberwiseClone()
-
static int P {get; set}
semantics -
partial
on interface methods
-
-
?
on unconstrained generic paramT
Mar 25, 2019
C# Design Review Notes for Mar 25, 2019
We brought in the design review team to look at some of our recent and open decisions in C# LDM.
- Nullable reference types: shipping annotations
- Pattern-based indexing with
Index
andRange
- Cancellation tokens in async streams
Mar 19, 2019
C# Language Design Notes for March 19, 2019
We held a live LDM during the MVP summit with some Q&A about C# 8 and the future
Topics:
- Records
- "Extension interfaces"/roles
- Macros
- IAsyncEnumerable
- "Partially automatic" properties
- More integration with reactive extensions
Mar 13, 2019
C# Language Design Notes for March 13, 2019
- Interface "reabstraction" with default interface implementations
- Precedence of the switch expression
or
keyword in patterns- "Pure" null tests and the switch statement/expression
Mar 6, 2019
C# Language Design Notes for March 6th, 2019
- Pure checks in the switch expression
- Nullable analysis of unreachable code
- Warnings about nullability on expressions with errors
- Handling of type parameters that cannot be annotated
- Should anonymous type fields have top-level nullability?
- Element-wise analysis of tuple conversions
Mar 4, 2019
C# Language Design Notes for March 4, 2019
- Nullable user studies
- Interpolated string and string.Format optimizations
Feb 27, 2019
C# Language Design Notes for Feb 27, 2019
- Allow ObsoleteAttribute on property accessors
- More Default Interface Member questions
Feb 25, 2019
C# Language Design Notes for Feb 25, 2019
- Open issues in default interface methods (https://github.com/dotnet/csharplang/issues/406).
- Base calls
- We currently have open issues around
protected
,internal
, reabstraction, andstatic
fields among others.
Feb 20, 2019
C# Language Design Notes for Feb 20, 2019
- Nullable Reference Types: Open LDM Issues https://github.com/dotnet/csharplang/issues/2201
Feb 13, 2019
C# Language Design Notes for Feb 13, 2019
- Nullable Reference Types: Open LDM Issues https://github.com/dotnet/csharplang/issues/2201
Jan 23, 2019
C# Language Design Notes for Jan 23, 2019
Function pointers (Updated proposal)
Jan 16, 2019
C# Language Design Notes for Jan 16, 2019
- Shadowing in lambdas
- Pattern-based disposal in
await foreach
Jan 14, 2019
C# Language Design Notes for Jan 14, 2019
- Generating null-check for
parameter!
https://github.com/dotnet/csharplang/pull/2144
Jan 9, 2019
C# Language Design Notes for Jan 9, 2019
- GetAsyncEnumerator signature
- Ambiguities in nullable array type syntax
- Recursive Patterns Open Language Issues https://github.com/dotnet/csharplang/issues/2095
Jan 7, 2019
C# Language Design Notes for Jan 7, 2019
Nullable:
- Variance in overriding/interface implementation
- Breaking change in parsing array specifiers