11月の.NET Confでリリースが予定されているされた .NET 5 関連の新機能をできるだけまとめてみました。ASP.NET CoreとEF Coreは除いています。
リリースにあわせていくつか更新しています。
そしてそんな .NET 5に興味のある方はぜひこちらのイベントにご参加ください。
.NET 5 のダウンロード
.NET 5 のリリースモデル、ロードマップなど
- リリースは、メジャー、マイナー、サービス更新の3種類から構成されます。
- .NET 5が「Current」リリースで、1年後にリリース予定の.NET 6が「LTS」となる予定。その後、1年ごとに「Current」「LTS」を交互にリリース予定。
- Currentは次のメジャーもしくはマイナーリリースがでて3か月、LTSのサポートは3年もしくは次のLTSが出てから1年の長いほう(つまり、最低3年間はサポート)。
- サポートはマイクロソフトが提供するサポートおよびコミュニティによるサポートが提供されます。Red Hatなどが提供するもの(RHEL向け.NETなど)は別途サポートが提供される場合があります。
- .NET Framework は4.8が最後のメジャーリリース。ただし、Windowsから削除する予定はなく、サポートとサービス提供は継続予定。
.NET 5のアップデート
- C# 9とF# 5へアップデート
- コンパイル時にコード生成を可能にするC# Source Generatorの導入
- Target Framework (TFM)はクロスプラットフォームなものとOS固有のものを表すものの大きく2種類へ
- .NETがAPIとして提供しているのに特定のOS(特にWindows)のみで動作するAPI(例えば
Registry.CurrentUser
)に対して、使用を検出するアナライザーとコードフィクサーを提供する - さまざまなパフォーマンス改善
- 文字列処理・正規表現やネットワーク関連などの改善 GitHubのissue
- 95%パーセンタイル以上(P95+)でも予測可能で一貫したパフォーマンスが得られるようにする改善 Improving P95+ latency · Issue #37534 · dotnet/runtime · GitHub
- GC、JITなどの改善
- ARM64対応
- 配布オプションの追加
- ClickOnceでのクライアントアプリの展開
- 単一の実行ファイルへの対応
- コンテナイメージサイズの縮小とcgroup v2への対応
- Server Coreイメージの追加
- JsonSerializer の改善 JsonSerializer improvements in .NET 5 · Issue #41313 · dotnet/runtime · GitHub
- null許容参照型のアノテーション導入の官僚 Annotate remainder of .NET Core assemblies for nullable reference types · Issue #2339 · dotnet/runtime · GitHub
- .NET5の一部としてWinRT APIをサポート
- ネイティブコード運用の改善
- IEEE 754のbinary16 に対応する数値型としてHalf typeの導入
- self-contained(自己完結型)アプリケーションの配布サイズを小さくするための アプリケーショントリミングの導入
- アプリケーションコードの潜在的なバグを見つける分析機能を.NET SDKにデフォルトで導入
- オブザーバビリティ(OpenTelemetry)やマイクロサービス(Tye)対応への取り組みを進める
破壊的変更については以下のドキュメントでまとめられています。