今天,釋出了.NET 5.0 Preview7。這是倒數第二個預覽版本(在轉移到RC之前)。此時,大多數功能應該已經非常接近完成了。Single file和ARM64 intrinsics是兩個花費了最長時間來完成的功能,當然Preview 8中已經在正軌上了。請參閱 .NET 5.0 Preview 4文章以獲得更多的版本資訊。
ASP.NET Core和EF Core也在今天釋出。
您可以下載適用於Windows,macOS和Linux的.NET 5.0 Preview 7:
- Installers and binaries
- Container images
- Snap installer
- Release notes
- Known issues
- GitHub issue tracker
你需要使用Visual Studio 2019 16.7來使用.NET 5.0。現在Visual Studio for Mac 上也支援.NET 5.0。安裝最新版本的C# extension來使用.NET 5.0和Visual Studio Code。
Performance
Stephen Toub最近釋出了他在 .NET 5 中的效能改進,這是他的系列中的最新一篇。他涵蓋了大約250個面向效能的拉請求,這些改進甚至會讓那些密切關注.NET Core效能的人感到驚訝。
System.Text.Json
我們已經在新的JSON API中新增了可用性特性。以下是預覽7的新特性(更多將在預覽8中出現)。
- [重大更改]序列化時可以忽略值型別屬性的預設值- 可用於降低序列化和連線成本。
- 序列化時能夠處理迴圈引用 - 現在預計API形狀將是最終的。
Garbage Collection (GC)
GC現在通過GC公開最近收集的詳細資訊。GC.GetGCMemoryInfo方法,它返回一個GCMemoryInfo結構體。GCMemoryInfo提供關於機器記憶體、堆記憶體和最近收集的資訊,或者你指定的垃圾收集型別的最新收集——短暫的、完全阻塞的或者後臺垃圾收集。
使用這個新API最有可能的用例是用於日誌記錄/監視,或者指示裝入器平衡器應該停止機器的旋轉以請求一次完整的GC。它還可以通過減少快取的大小來避免容器硬限制。
另一個很小但有影響的變化是,將昂貴的記憶體復位操作推遲到低記憶體的情況下。我們希望這些策略上的更改能夠降低GC延遲(以及GC CPU的一般使用)。
RyuJIT
RyuJIT是.NET的彙編程式碼生成器,針對Intel和ARM晶片。RyuJIT的大部分投資都集中在效能上。
- 總體改進
- 啟用省略某些邊界檢查 — Credit @nathan-moore
- 用C#重寫後優化Enum.CompareTo — 現在的效能與以前的c++相當。
- 改進了struct的暫存器分配 — Enregister multireg lclVars
- 刪除冗餘零初始值的改進
- 尾重複改進
- 基於堆疊的結構複製CQ修復
- 刪除冗餘的零初始化後清除沒有使用的欄位賦值
- ARM64硬體內部特性和API優化
- 實現大多數“按元素”的內含函式
- 實現fcvtxn, fcvtxn2, sqabs, sqneg, suqadd, usqadd intrinsics — #38010, #38110
- 優化SpanHelpers.IndexOf(byte),SpanHelpers.IndexOf(char)
- 優化 SpanHelpers.IndexOfAny(byte)
- 優化 WithLower, WithUpper, Create, AsInt64, AsUInt64, AsDouble
- 優化 AsVector, AsVector128, GetUpper, As and WithElement
Closing
請告訴我們您使用Preview 7的經驗。現在分享你的反饋還不晚。我們已經接近釋出的尾聲了,但實際上我們現在更關注質量,因為我們基本上已經完成了特性開發。
在預覽8之後,我們計劃在最終釋出之前釋出兩個RCs。RCs將擁有“上線”許可證,這意味著它們將在生產中得到支援。在這一點上,我們從預覽1開始就在.NET上執行.NET站點(5.0上50%;3.1版本的50%),它工作得很好。
原文:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-7/