ピックアップRoslyn 4/12
C# Design Meeting Notes for Mar 24, 2015
https://github.com/dotnet/roslyn/issues/1898
今回は、これまで C# 7.0 に向けて提案されてきた内容について、issue ページでの議論の結果、今後どう取り組んでいくかを「色分け」(信号の青(green)、黄、赤の3色に)しています。
- 青: 興味あり、引き続き検討
- 黄: 何か取り組むべきものはあるけども、既存提案の方式ではやらない
- 赤: たぶんやらない
何がどう色分けされたかというと:
- ref returns and locals <青> (#118)
- readonly locals and parameters <青> (#115)
- Method contracts <青> (#119)
- Does not return <青> (#1226)
- Slicing <青> (#120)
- Lambda capture lists <黄 – ラムダ式に属性を付けれるようにするだけでたぶん解決> (#117)
- Immutable types <黄 – 今の形ではやらない。けど何かしらの保証方法は考えたい> (#159)
- Destructible types <黄 – 決定論的な破棄処理自体には興味あり> (#161)
- Move <赤> (#160)
- Exception contracts <赤>
- Static delegates <赤>
- Safe fixed-size buffers in structs <赤> (#126)
6番くらいまではもうちょっと詳細な現状説明あり。
ここでは、気になったところだけ:
2. に関して、「readonly var」の短縮形は、今のところ val が有力らしい… 僕は v だけ打って後は IntelliSense 補完で var を書いてるんで、個人的には val はやめてほしい… 英語的には val が一番自然に見えるらしいんですけども。
4. に関して、never 型(絶対に例外を投げて終わるか、永久ループで終わるメソッドの戻り値に指定する型)を導入する方向で進んでいます。この型が指定できるようになると、「throw ステートメント」を「throw 式」に変えれるというメリットもあります。つまり、() => throw new Exception() みたいなラムダ式も書けるようになります(今は、こういう式が書けない。throw が式じゃないので)。
C# Language Design Review, Mar 25, 2015
https://github.com/dotnet/roslyn/issues/1921
C#チームは最近、Design ミーティングの方法を少し変えたみたいです(開発速度を上げる目的)。C# チームの一部だけが集まって個別機能について話す会を週に1・2回、そして、全員が集まってレビューする会を月に1回程度行うつもりだそうです。で、そのレビュー会の第1回をやったそうで、これはその議事録。
今回は以下のような議題。
- Overall direction
- Nullability features
- val / readonly
- ref return / locals
- Never type
- Method contracts
- Slices
- Performance and reliability features
- Tuples
- Records
- Pattern matching
前節の #1898 とも被るので「詳しくはそっちを見て」で済ませてる項目も結構ありますが。
全体的な方向性、「野心的に、難しい問題を解決していこうという合意は得られた」としています。
おまけ: corefx-progress
https://github.com/dotnet/corefx-progress
「ピックアップRoslyn」内で紹介するのもなんですが、今回は他の .NET プロジェクトの話をついでに紹介。
今、.NET Core の標準ライブラリは、オープンソース化作業のまっただ中にあるわけですが。そのオープンソース化作業の進捗状況を見えるようにするために、この corefx-progress リポジトリを作ったそうです。1リポジトリ使って、これから公開予定のAPI、公開が完了したAPI、その差分をアセンブリごとに取れるようにしています。
コメントを残す