csharplang/meetings/2017/LDM-2017-05-16.md

77 lines
2.4 KiB
Markdown
Raw Normal View History

2017-05-31 00:56:12 +02:00
# C# Language Design Notes for May 16, 2017
2017-06-06 01:32:26 +02:00
## Agenda
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
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
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
# Triage C# 7.1 features that didn't make it
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
## Private protected
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
Almost there, push to 7.2 for completion.
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
## Field-targeted attributes
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
This is a bug fix level change, and very useful. Push to 7.2
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
# Look at C# 7.2 features
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
"Slicing" needs to be split into "ref structs" and "slicing syntax".
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
Push out everything, except
- things that are "in theme" - related to refs, spans, etc.
- things that are almost done (field-targeted attributes, private protected)
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
Keep everything that's in theme until we can sit with the `Span<T>` folks and prioritize.
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
# 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.)
2017-05-31 00:56:12 +02:00
# Triage of championed features
2017-06-06 01:32:26 +02:00
## CallerArgumentExpression
Push to 7.X and start process for getting the attribute in place.
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
## Leading and trailing digit "separators"
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
``` c#
M(0b_1, 0x_A)
```
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
Very low additional value. Would probably help some code generators, and some code layout. Might accept a pull request.
2017-05-31 00:56:12 +02:00
2017-06-06 01:32:26 +02:00
## 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
2017-05-31 00:56:12 +02:00
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.
2017-06-06 01:32:26 +02:00
It would also affect the rest of the ecosystem, which would now have to handle it. Need to coordinate with IDE team.
2017-05-31 00:56:12 +02:00
## `??` and `?.` for pointers
2017-06-06 01:32:26 +02:00
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!
2017-05-31 00:56:12 +02:00
## Non-trailing named arguments
2017-06-06 01:32:26 +02:00
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.
2017-05-31 00:56:12 +02:00
Would need some ide work.