.NET 6 Preview 6 釋出

2021-07-17 09:01:20

.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"指令。

完整更新說明可檢視。

展開閱讀全文