2016/08/04 (木) の朝方、Gafter 先生の Pull-Request が master にマージされ、それにより Roslyn の開発状況/進捗 (Language Feature Status) が更新されました。
以下はその引用です。
C# 7 / Visual Basic 15 に搭載予定
Feature Branch State Address of Static none Feature Specification Binary Literals master Finishing Digit Separators master Finishing Local Functions master Finishing Type switch master Finishing Ref Returns master Finishing Tuples master Finishing Out var master Finishing ValueTask master Finishing C# 8 / Visual Basic 16 以降で搭載予定
Feature Branch State Async Main none Feature Specification Source Generation master Prototyping Throw Expr features/patterns Prototyping private protected features/privateProtected Prototyping Non-null Ref Types features/NullableReferenceTypes Prototyping Better Betterness none Feature Specification Records features/records Feature Specification With Exprs features/records Feature Specification Pattern Matching features/patterns Prototyping
C# 7 で搭載見込みの機能は実装完了しているものすべてを記事にしていますので、ご興味があればご覧ください。
変更点
diff から見るに、これまでとの差分はザッと以下のような感じです。
機能 | 概要 | 変更点 |
---|---|---|
Out var | out 引数に渡す変数を宣言と同時に生成 | プロトタイプ完了 |
ValueTask | 非同期メソッドの戻り値を任意型に | プロトタイプ完了 |
Async Main | Main 関数で async/await を許可 | 搭載見送り |
Source Generation | コード生成による処理の差し込み | 搭載見送り |
Throw Expr | 例外を式でも投げられるように | 搭載見送り |
個人的にかなり残念なのは Source Generation の搭載が見送り項目になったことです。実はこの機能、6 月中は master
ブランチに入っていたのですが 2016/07/01 のコミットで features/source-generators
に逃がされました。
数日かけて実際に動きも (ほぼほぼ全部) 調べてブログ記事を書き終えたのが 2016/06/30 の深夜。社内で @neuecc 先生に「こんな機能が来そうじゃモン!」と夜な夜な話して「いざ公開じゃー!」と思ったところで機能削除されて意気消沈していました...(´;ω;`)
ちなみにここに書いてあることは記事執筆時点 (2016/08/05) での状況であって最終的な確定事項ではないのでご注意ください。とは言え最近は Visual Studio 15 Preview 4 のリリース準備も着々と進んでいるようですし、C# 7 の fix がだいぶ近づいているのかなぁという気がしないでもないです。