.NET 6 Preview 6 現已釋出,此版本是進入 RC 時期之前的倒數第二個預覽版,RC 版本將會有兩個 。官方表示,Preview 6 本身相對較小,Preview 7 將會更大。在那之後,團隊將進行品質修復,直至 11 月的最終版本釋出。
x64 模擬更新
開發團隊已經完成了對 macOS 的 Apple Silicon 和 Windows 的 Arm64 的支援。剩下的就是在 macOS Apple Silicon 和 Windows Arm64 上支援 x64 模擬。其需要做兩件事來實現這一點:
- 以 .NET CLI 為目標的一流架構(主要)支援在所有場景中使用本機架構 SDK。
在可以使用 side-by-side capable installers 之前(稍後在 .NET 6 中),使用者需要安裝所有 x64 版本或所有 Arm64 版本。如果要切換,需要解除安裝/刪除 Arm64 機器上的所有 .NET 版本。
Tools:.NET SDK 可選工作負載改進
新增了三個新的命令,可實現更好的發現和管理。
dotnet workload search
— 列出可安裝的工作負載。dotnet workload uninstall
— 如果不再需要工作負載,請刪除指定的工作負載。也是節省空間的好選擇。dotnet workload repair
— 重新安裝你之前安裝的所有工作負載。- 如果你的安裝因網際網路連線斷開而在中間失敗,這將非常有用。
- 可選工作負載由多個工作負載包組成,你可能已經進入這樣一種狀態,即其中一些安裝成功,而另一些安裝失敗。
在之前的預覽中,開發團隊新增了以下命令:
dotnet workload install
— 安裝工作負載。dotnet workload list
— 列出已安裝的工作負載。dotnet workload update
— 更新已安裝的工作負載。
Libraries:TLS support for System.DirectoryServices.Protocols
Linux 和 macOS 的 System.DirectoryServices.Protocols 已經啟用了 TLS 支援。.NET 使用者現在可以享受與 LDAP 伺服器的安全通訊。
Tools: Crossgen2 替換 crossgen
Crossgen2 已被用於所有現有的 crossgen 方案,官方已從 SDK 中刪除了(舊的)crossgen。
Crossgen(1 和 2)能夠將 IL 預編譯為原生程式碼作為 publishing step。預編譯主要有利於提高啟動率。部落格內容指出,Crossgen2 是一個從零開始的實現,已經被證明是一個卓越的程式碼生成創新平臺。例如,與 crossgen1 相比,crossgen2 可以為更多的 IL 模式生成程式碼。
以下 MSBuild 屬性演示瞭如何用 crossgen2 啟用預編譯:
<!-- Enable pre-compiling native code (in ready-to-run format) with crossgen2 -->
<PublishReadyToRun>true</PublishReadyToRun>
<!-- Enable generating a composite R2R image -->
<PublishReadyToRunComposite>true</PublishReadyToRunComposite>
Libraries:改進了 sync-over-async 的效能
當 sync-over-async 是執行緒池工作執行緒上發生的唯一阻塞工作型別時,此更改預設提高了執行緒注入的速度。有一些新的 AppContext 設定值,可以用來設定響應 sync-over-async 的執行緒注入率。
Runtime:W^X memory policy
官方正在啟用對 W^X memory protection 的支援,這是 Apple Silicon machines 的一項要求,也是其他作業系統上的一項有用的安全措施。 W^X 在 .NET 6 的所有其他環境中是可選的,並且可能是 .NET 7 的所有環境中的預設模式。
CodeGen changelog
Dynamic PGO
- 新增選項以隨機選擇受保護的 devirt 類
- pgo/devirt 診斷改進
LSRA
- 重構 heuristics selection
- 現在,DEBUG 模式包含一個 COMPlus 變數,LsraOrdering 將讓使用者設定啟發式排序。
- 調整暫存器的啟發式以選擇最佳的暫存器候選溢位。
Code quality
- 消除多餘的"test"指令。
完整更新說明可檢視。