csharplang/meetings/2015/LDM-2015-05-25.md

55 lines
2.3 KiB
Markdown
Raw Normal View History

# C# Design Meeting Notes for May 25, 2015
Discussion for these notes can be found in https://github.com/dotnet/roslyn/issues/3912.
## Agenda
Today we went through a bunch of the proposals on GitHub and triaged them for our list of features in issue #2136. Due to the vastness of the list, we needed to use *some* criterion to sort by, and though far from ideal we ordered them by number of comments, most to least.
Here's where we landed, skipping things that were already "Strong interest". Some are further elaborated in sections below.
1. Method contracts <*Stay at "Some interest"*>(#119)
2. Destructible types <*Stay at "Probably never"*> (#161)
3. Params IEnumerable <*Stay at "Small but Useful*>(#36)
4. Multiple returns <*Addressed by tuples. Close.*> (#102)
5. More type inference <*Not a coherent proposal. Close*> (#17)
6. Readonly parameters and locals <*Stay at "Some interest"*>(#115)
7. Implicitly typed lambdas <*Add at "Probably never"*>(#14)
8. Immutable types <*Stay at "Some interest*>(#159)
9. Object initializers for immutable objects <*Add at "Some interest"*>(#229)
10. First item is special <*Add at "Never"*>(#131)
11. Array slices <*Keep at "Interesting but needs CLR support"*>(#120)
12. Vararg calling convention <*Merge with params IEnumerable*>(#37)
13. XML Literals <*Add to "Never"*>(#1746)
14. Local Functions <*Move to "Some interest*>(#259)
15. Covariant returns <*Stay at "Some interest*>(#357)
# Params IEnumerable
This needs more thinking - let's not just implement the straightforward design. There are perf issues, for instance, around implementing through the `IEnumerable<T>` interface instead of arrays directly.
# More type inference
Not a coherent proposal. But even if there was one, we probably wouldn't want it in C#.
# Implicitly typed lambdas
These are mostly subsumed by local functions, which we'd rather do. It has some individual usefulness but not much synergy.
# Object initializers for immutable objects
We want to think this together with withers, not sure what form it would take.
# first item in loops is special
We recognize the scenario but it's not worthy of a feature.
# vararg calling convention
Roll it in with params IEnumerable discussion for investigation.
# XML literals
Never! We won't bake in a specific format.