76 lines
2.4 KiB
Markdown
76 lines
2.4 KiB
Markdown
# C# Language Design Notes for May 16, 2017
|
|
|
|
## Agenda
|
|
|
|
1. Triage C# 7.1 features that didn't make it
|
|
2. Look at C# 7.2 features
|
|
3. GitHub procedure around new design notes and proposals
|
|
4. Triage of championed features
|
|
|
|
|
|
# Triage C# 7.1 features that didn't make it
|
|
|
|
## Private protected
|
|
|
|
Almost there, push to 7.2 for completion.
|
|
|
|
## Field-targeted attributes
|
|
|
|
This is a bug fix level change, and very useful. Push to 7.2
|
|
|
|
|
|
# Look at C# 7.2 features
|
|
|
|
"Slicing" needs to be split into "ref structs" and "slicing syntax".
|
|
|
|
Push out everything, except
|
|
- things that are "in theme" - related to refs, spans, etc.
|
|
- things that are almost done (field-targeted attributes, private protected)
|
|
|
|
Keep everything that's in theme until we can sit with the `Span<T>` folks and prioritize.
|
|
|
|
|
|
# GitHub procedure around new design notes and proposals
|
|
|
|
We should use issues as a notification mechanism for when design notes and proposals are completed. Revisions are comments on the same issue.
|
|
|
|
(This has now been adopted for design notes back to Mar 15, 2017.)
|
|
|
|
|
|
# Triage of championed features
|
|
|
|
## CallerArgumentExpression
|
|
|
|
Push to 7.X and start process for getting the attribute in place.
|
|
|
|
## Leading and trailing digit "separators"
|
|
|
|
``` c#
|
|
M(0b_1, 0x_A)
|
|
```
|
|
|
|
Very low additional value. Would probably help some code generators, and some code layout. Might accept a pull request.
|
|
|
|
## Static delegates
|
|
|
|
Delegates require, generally, 2 allocations, and are crappy for interop. Static delegates are typed `IntPtr`s, essentially.
|
|
`ValueAction` and `ValueFunc`. Lot of asks from CoreRT, for PInvoke etc. Of course they won't be able to close over anything, so they'd require significant language support.
|
|
|
|
## Namespace XML doc comments
|
|
This is hard to take as a community contribution: it's primarily about the IDE behavior. Not all of that may even be open source today.
|
|
It would also affect the rest of the ecosystem, which would now have to handle it. Need to coordinate with IDE team.
|
|
|
|
## `??` and `?.` for pointers
|
|
|
|
Probably lo-pri to make this pleasant. But nothing against it. This seems suitable for up-for-grabs.
|
|
|
|
The syntax should probably be `?->`. For double pointers, you're out of options!
|
|
|
|
|
|
## Non-trailing named arguments
|
|
|
|
Helps selectively use parameter names for readability. Would relieve people from bending over backwards to put name-prone parameters last. Also would make it work better with params.
|
|
|
|
Would need some ide work.
|
|
|
|
|