.NET 6 Preview 6 發(fā)布
.NET 6 Preview 6 現(xiàn)已發(fā)布,此版本是進入 RC 時期之前的倒數(shù)第二個預覽版,RC 版本將會有兩個 。官方表示,Preview 6 本身相對較小,Preview 7 將會更大。在那之后,團隊將進行質(zhì)量修復,直至 11 月的最終版本發(fā)布。
x64 仿真更新
開發(fā)團隊已經(jīng)完成了對 macOS 的 Apple Silicon 和 Windows 的 Arm64 的支持。剩下的就是在 macOS Apple Silicon 和 Windows Arm64 上支持 x64 仿真。其需要做兩件事來實現(xiàn)這一點:
以 .NET CLI 為目標的一流架構(主要)支持在所有場景中使用本機架構 SDK。
在可以使用 side-by-side capable installers 之前(稍后在 .NET 6 中),用戶需要安裝所有 x64 版本或所有 Arm64 版本。如果要切換,需要卸載/刪除 Arm64 機器上的所有 .NET 版本。
Tools:.NET SDK 可選工作負載改進
添加了三個新的工作負載命令,可實現(xiàn)更好的發(fā)現(xiàn)和管理。
dotnet workload search
— 列出可安裝的工作負載。dotnet workload uninstall
— 如果不再需要工作負載,請刪除指定的工作負載。也是節(jié)省空間的好選擇。dotnet workload repair
— 重新安裝你之前安裝的所有工作負載。如果你的安裝因互聯(lián)網(wǎng)連接斷開而在中間失敗,這將非常有用。
可選工作負載由多個工作負載包組成,你可能已經(jīng)進入這樣一種狀態(tài),即其中一些安裝成功,而另一些安裝失敗。
在之前的預覽中,開發(fā)團隊添加了以下命令:
dotnet workload install
— 安裝工作負載。dotnet workload list
— 列出已安裝的工作負載。dotnet workload update
— 更新已安裝的工作負載。
Libraries:TLS support for System.DirectoryServices.Protocols
Linux 和 macOS 的 System.DirectoryServices.Protocols 已經(jīng)啟用了 TLS 支持。.NET 用戶現(xiàn)在可以享受與 LDAP 服務器的安全通信。
Tools: Crossgen2 替換 crossgen
Crossgen2 已被用于所有現(xiàn)有的 crossgen 方案,官方已從 SDK 中刪除了(舊的)crossgen。
Crossgen(1 和 2)能夠?qū)?IL 預編譯為本地代碼作為 publishing step。預編譯主要有利于提高啟動率。博客內(nèi)容指出,Crossgen2 是一個從零開始的實現(xiàn),已經(jīng)被證明是一個卓越的代碼生成創(chuàng)新平臺。例如,與 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 是線程池工作線程上發(fā)生的唯一阻塞工作類型時,此更改默認提高了線程注入的速度。有一些新的 AppContext 配置值,可以用來配置響應 sync-over-async 的線程注入率。
Runtime:W^X memory policy
官方正在啟用對 W^X memory protection 的支持,這是 Apple Silicon machines 的一項要求,也是其他操作系統(tǒng)上的一項有用的安全措施。 W^X 在 .NET 6 的所有其他環(huán)境中是可選的,并且可能是 .NET 7 的所有環(huán)境中的默認模式。
CodeGen changelog
Dynamic PGO
添加選項以隨機選擇受保護的 devirt 類
pgo/devirt 診斷改進
LSRA
重構 LSRA heuristics selection
現(xiàn)在,DEBUG 模式包含一個 COMPlus 變量,LsraOrdering 將讓用戶設置啟發(fā)式排序。
調(diào)整寄存器的啟發(fā)式以選擇最佳的寄存器候選溢出。
Code quality
消除多余的"test"指令。
完整更新說明可查看發(fā)布公告。