作者 |PaulKrill
編譯 | 鄭麗媛
頭圖 | CSDN 下載自視覺中國
出品 | CSDN(ID:CSDNnews)
以下為譯文:
為了統一.NET平臺,.NET 5改進了RyuJIT中代碼質量、垃圾收集和JSON序列化等功能。
Preview 8
微軟已經發布了功能完整的.NET 5的第8個預覽版,除了bug修復外,幾乎所有的功能都是最終版本。.NET 5中 .NET Framework和.NET Core已合併,旨在一統.NET平臺。最新版本預計將於2020年11月10日正式發布。
日前,.NET 5的第8個預覽版在8月25號已發布。而在11月的正式版發布前,還將有兩個候選版本發布。
.NET 5更高層次的目標包含提供統一的.NET SDK體驗,即在所有.NET 5應用程式中使用一個BCL(基類庫),並支持跨多個作業系統的本地和web應用程式。一個.NET 5本地應用程式項目將使用這些平臺上的本地控制項來支持Windows、Microsoft Duo (Android)和Apple iOS等目標。
.NET 5的其他目標還有:允許構建高性能的雲應用程式、在BCL中實現更快的算法、運行時中為容器提供更好地支持、以及對HTTP3的支持。.NET 5.0通過Mono的運行時和.NET庫,將支持WebAssembly二進位格式,還提供了一組可為空的引用類型注釋。
Preview 7
此前,.NET 5 的第7個預覽版在7月21日發布。彼時,關於第7個預覽版的公告確認了在.NET 5中有約250個面向性能的請求,而這對於關注.NET 核心性能的人而言會是一個驚喜。
以下是.NET 5第7個預覽版公告中提到的其他新增功能和改進:
在序列化時,新的System.text.json JSON API提供了忽略值類型屬性的默認值的功能,這有助於減少序列化和線路成本。還為System.text.json添加了在序列化時處理循環引用的功能,預計現在的API就將是最終版本。
垃圾回收將使用GetGCMemoryInfo方法公開最近收集的詳細數據,該方法返回GCMemoryInfo結構。GCMemoryInfo會提供關於機器、堆內存和最近收集的信息,或者是指定的GC類型的最新收集(臨時、完全阻塞或後臺)的信息。這個API很有可能會用於日誌記錄/監視,或者為請求完整的GC向負載平衡器發出停止旋轉機器的指示。同時,為了將昂貴的重置內存操作推遲到低內存情況下,還更改了另一項GC。
Ryujit是.NET的彙編代碼生成器,其增強的功能包括:取消某些邊界檢查、尾部重複改進,以及為消除冗餘零初始化而進行的改進。Ryujit還具有ARM64硬體內在特性和API優化功能。
Preview 6
6月25日發布的.NET 5第6個預覽版,刪除了對WinRT(Windows運行時)的內置支持,WinRT是用於構建通用Windows平臺應用程式的API集合。這是一個很重要的變化,因為使用WinRT的.NET Core 3.x應用程式都必須重新編譯。.NET和Windows團隊一直在竭力改變WinRT在Windows上的工作方式,所以用.NET 5中的C#/ WinRT工具鏈代替WinRT支持。C#/ WinRT是一個NuGet-packaged的工具包,為C#提供WinRT投影支持。
.NET 5 第6個預覽版中的其他變化:
.NET 5第6個預覽版SDK支持Windows ARM64設備上的Windows Form,並繼續在Windows ARM64上添加對Windows Presentation Foundation的支持。
RyuJIT代碼質量改進包括為消除冗餘的零初始化,進行結構處理和優化。此外,在ARM64硬體內在優化以及改進ARM64生成的代碼(減小代碼大小)方面也取得了進展。
平臺支持計劃已更新。
Preview 5
6月10日發布的.NET 5第5個預覽版包含以下新功能:
RyuJIT JIT編譯器可以更快,更方便地使用尾調用助手。一旦JIT發現需要一個助手來執行尾調用,它就會在運行時尋求幫助。對於RyuJIT,ARM64硬體內在特性也一直在不斷進步。RyuJIT還有其他的改進:在影響正則表達式編譯和提高英特爾架構性能的情況下提高了速度。
啟用了對帶有.NET代碼調用的本機二進位文件的導出。此功能的構建塊是承載了對UnManagedCallersOnlyAttribute的API支持。本機導出項目允許公開自定義本機出口。它不需要像COM這樣的高級互操作技術,而且是跨平臺的。
DirectoryServices.Protocols的使用正在往Linux和MacOS擴展。
現在支持Alpine 3.12 Linux發行版。
.NET預覽5.0版本可以從dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下載。
Preview 4
5月19日發布的.NET 5 第4個預覽版加入了以下新功能:
支持C#9和F#5語言。
改進了F#使用的尾調用的性能。
改善了ToUpperInvariant,string.ToLowerInvariant和相關模式的性能。
改進了HTTP 1.1和HTTP 2性能。
改進了呼叫計數機制。
內部通用字典的動態擴展,消除了通用代碼對性能的影響。
固定對象堆以減少堆碎片。
基於新文件發布類型的文件應用程式,從二進位文件開始執行應用程式。
.NET第4個預覽版可以從dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下載。
Preview 3
4月23日發布的.NET 5第3個預覽版中的增強功能包括:
更新了用於管理位值數組的BitArray類,以包括使用ARM64內部特性對ARM64進行硬體加速的實現。微軟表示,BitArray的性能改進是尤為重要。另外,在CLR中實現了棧上替換(OSR),可以允許在方法執行期間更改當前正在運行的方法執行的代碼,而這些方法在棧上處於活動狀態。為了改善分層編譯的性能特徵,這個功能現在已經成為x64上的實驗性選擇功能。RyuJIT的另一個增強功能改進了作為「尾調用」位置調用中參數的結構的代碼質量。預計RyuJIT也會提供更好的泛型性能。
System.Txt.Json中添加了對保留引用的支持,從而可以對JSON序列化進行引用循環處理。另外,JsonSerializer現在支持不可變的類和結構。也可以支持空值處理。
.NET SDK現在將在項目文件中給定.NET Framework目標框架的情況下,自動引用NETFramework.ReferenceAssemblies NuGet包。通過此更改,可以在未安裝.NET Framework目標包的計算機上構建.NET Framework項目。這個改進特定於定向包,沒有考慮其他可能的項目依賴關係。
Preview 2
4月2日發布的.NET 5第2個預覽版中的增強功能包括:
為提高生成的機器代碼的質量,對RyuJIT進行了許多更改,包括更高效地消除重複的零初始化以及更早地調用nullable優化。
現在,可以在標記上一代對象實時保留的gen0 / 1對象時,在不同線程上進行伺服器垃圾回收。在某些GC線程比其他線程標記時花費時間更長的情況下,通過跨線程竊取工作可以縮短一點 GC 暫停時間。此外,為允許收集器分別管理固定對象,固定對象堆(POH)的一部分功能已經完成,即垃圾回收內的一部分。這避免了固定對象對世代堆的負面影響。
Preview 1
3月16日發布的第1個預覽版包括了正則表達式性能以及RyuJIT中代碼質量的改進。
.NET 5將於2020年11月發布,該版本將包括:
ASP.NET Core,一個用於Web應用程式的開源框架;
實體框架核心數據訪問技術;
WinForms;
WPF(Windows Presentation Foundation);
Xamarin行動應用程式設備模型;
ML.NET。
最後
微軟在提供了.NET 5 SDK預覽版和附帶的運行預覽版的同時,表示,.NET 5將提供一個統一的平臺來構建任何類型的應用程式。另外,微軟將使用Azure負載平衡將流向.NET網站的流量的一半定向到.NET 5版本,用作測試用例。
微軟建議開發人員使用.NET Core 3.1構建新應用程式,然後將其遷移到.NET5,並指出只要支持Windows,.NET Framework應用程式可以一直保留在.NET Framework上。
原文:https://www.infoworld.com/article/3533053/whats-new-in-microsoft-net-5.html
本文為 CSDN 翻譯,轉載請註明來源出處。