本文由葡萄城技術團隊翻譯
轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
我們很高興發布.NET6預覽的第6版,本次預覽是倒數第二次預覽了。在本次預覽發布之后到最后一次預覽之前,我們會進入RC期,將會有兩個RCs。這個版本本身相對內容較少,而Preview7的內容會更多。在所有預覽發布結束后,我們將持續對問題進行修復,直到11月發布最終版本。請大家一起期待.NET的新版本。
.NET 6 Preview 6下載地址,根據各位的需要下載Linux, ,macOS, and Windows不同版本。
請參閱ASP.NET Core、EF Core和.NET MAUI文章,以了解有關web、數據訪問和客戶端場景的新功能的更多詳細信息。
從.NET 6 Preview 6開始,我們已經測試並支持Visual Studio 2022 Preview 2。Visual Studio 2022可以使用專門為.NET 6開發的Visual Studio工具,如.NET MAUI中的開發、C應用程序的熱重新加載、WebForms的新Web Live預覽,以及IDE體驗中的其他性能改進。.net6也已經用visualstudioformac8.9進行了測試。
查看.NET新特性討論。
# x64仿真更新
我們已經完成了添加對Apple Silicon for macOS和Arm64 for Windows的支持。剩下的就是支持macOS、Apple Silicon和Windows Arm64上的x64仿真。
需要做以下兩點實現:
-
安裝並行
-
使用.NET CLI實現一流體系結構目標,以便在所有場景中啟用本機體系結構SDK。
但是目前不方便的一點是,在並行安裝程序可用之前(在之后的.NET6中),您需要安裝所有x64版本或所有Arm64版本。如果要進行切換,需要卸載/刪除Arm64計算機上的所有.NET版本。
工具:.NET SDK可選工作負載的改進
我們添加了三個新的工作負載命令,以實現更好的發現和管理。
l dotnet workload search-列出可安裝的工作負載
l dotnet工作負載卸載-如果不再需要工作負載,請刪除指定的工作負載。也是節省空間的好選擇
l dotnet工作負載修復-重新安裝以前安裝的所有工作負載
如果因為網絡連接不好導致安裝失敗,就可以解決這個問題。
可選工作負載由多個工作負載包組成,所以會出現部分負載包安裝成功,部分安裝失敗。
在以前的預覽中,我們添加了以下命令:
-
dotnet workload install-安裝工作負載
-
dotnet workload list-列出已安裝的工作負載
-
dotnet workload update-更新已安裝的工作負載
庫:對System.DirectoryServices.Protocols的TLS支持
已為Linux和macOS的System.DirectoryServices.Protocols啟用TLS支持。它已經為Windows啟用。NET用戶現在可以享受與LDAP服務器的安全通信。
歸功於@iinuwa。
工具:Crossgen2取代crossgen
已為所有現有的crossgen方案啟用了Crossgen2。在這個里程碑中,我們還從SDK中刪除了(舊的)crossgen,舊crossgem不可再訪問,無法使用。
Crossgen(1和2)支持將IL預編譯為本機代碼作為發布步驟。預編譯對啟動的改進有很大幫助。Crossgen2是一個從頭開始的實現,已經被證明是代碼生成創新的高級平台。例如,crossgen2可以為比crossgen1更廣泛的IL模式集生成代碼。
以下MSBuild屬性演示如何使用crossgen2啟用預編譯。
庫:Sync-over-async的性能改進
Sync-over-async是阻塞工作的一種常見類型。當線程池工作線程發生時,它會導致飢餓。線程注入的速度過慢可能會延遲其他排隊工作的運行,並且可能會延遲飢餓問題的解決。
當Sync-over-async是線程池工作線程上發生的唯一一種阻塞線程時,此更改在默認情況下提高了線程注入速率。有一些新的AppContext配置值可用於配置線程注入速率,以響應Sync-over-async。
Runtime: W^x內存策略
我們支持對W^ x內存保護。這是Apple Silicon的一項要求,也是其他操作系統的一項重要的安全措施。
此特性具有異常名稱,它應該被讀為“寫獨占執行”。這意味着內存頁可以被標記為讀/寫或讀/執行,但不能是任何包括寫和執行的組合。例如,寫/執行頁會受到緩沖區溢出攻擊的影響。
此特性要求在整個產品進行變更,無論使用的是寫/執行頁。例如,preview 6的一個變化是它要求JIT與我們采用的W^X方案協作。
W^x是蘋果硅片機上macOS的一個要求,在.NET 6的所有其他環境中都是可選的,並且在.NET 7的所有環境中都可能是默認模式。
注意:W^x實現在除Apple Silicon以外的所有環境中都具有與.net6的啟動回歸,它將作為.NET7的一部分解決。由於操作系統支持此場景,Apple Silicon實現沒有這種回歸。
CodeGen 更新日志
在Preview 6中包含以下代碼更改:
## 動態PGO
- 添加選項以選擇保護的DEVITET類隨機選擇
https://github.com/dotnet/runtime/pull/53399 - PGO/DEVILT診斷改進
https://github.com/dotnet/runtime/pull/53247
LSRA
- 重構LSRA啟發選擇
https://github.com/dotnet/runtime/pull/52832
-
DEBUG模式包含一個COMPlus變量,LsraOrdering將允許用戶設置啟發式排序
-
調整寄存器的啟發式算法,以選擇要溢出的最佳寄存器候選
https://github.com/dotnet/runtime/pull/53853
改進基於這些內容更改:
更多改進:
代碼質量
消除冗余的“測試”指令
https://github.com/dotnet/runtime/pull/53214
總結
這次發布很快就要結束了,大家可以盡快嘗試一下這次Preview6中提到的內容改動。
感謝所有為.NET6發布做出貢獻的人。后續,葡萄城還會繼續為大家帶來更多.net6更新的相關內容分享。