...

.NET 6 Preview 6 發(fā)布

2021-07-28

.NET 6 Preview 6 現已發(fā)布,此版本是進(jìn)入 RC 時(shí)期之前的倒數第二個預覽版,RC 版本將(jiāng)會(huì)有兩(liǎng)個 。官方表示,Preview 6 本身相對(duì)較小,Preview 7 將(jiāng)會(huì)更大。在那之後(hòu),團隊將(jiāng)進(jìn)行質量修複,直至 11 月的最終版本發(fā)布。

x64 仿真更新

開(kāi)發(fā)團隊已經(jīng)完成(chéng)了對(duì) macOS 的 Apple Silicon 和 Windows 的 Arm64 的支持。剩下的就(jiù)是在 macOS Apple Silicon 和 Windows Arm64 上支持 x64 仿真。其需要做兩(liǎng)件事(shì)來實現這(zhè)一點:

在可以使用 side-by-side capable installers  之前(稍後(hòu)在 .NET 6 中),用戶需要安裝所有 x64 版本或所有 Arm64 版本。如果要切換,需要卸載/删除 Arm64 機器上的所有 .NET 版本。

Tools:.NET SDK 可選工作負載改進(jìn)

添加了三個新的工作負載命令,可實現更好(hǎo)的發(fā)現和管理。

  • dotnet workload search — 列出可安裝的工作負載。

  • dotnet workload uninstall— 如果不再需要工作負載,請删除指定的工作負載。也是節省空間的好(hǎo)選擇。

  • dotnet workload repair — 重新安裝你之前安裝的所有工作負載。

    • 如果你的安裝因互聯網連接斷開(kāi)而在中間失敗,這(zhè)將(jiāng)非常有用。

    • 可選工作負載由多個工作負載包組成(chéng),你可能(néng)已經(jīng)進(jìn)入這(zhè)樣(yàng)一種(zhǒng)狀态,即其中一些安裝成(chéng)功,而另一些安裝失敗。

在之前的預覽中,開(kā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 用戶現在可以享受與 LDAP 服務器的安全通信。

Tools: Crossgen2 替換 crossgen

Crossgen2 已被(bèi)用于所有現有的 crossgen 方案,官方已從 SDK 中删除了(舊的)crossgen。

Crossgen(1 和 2)能(néng)夠將(jiāng) IL 預編譯爲本地代碼作爲 publishing step。預編譯主要有利于提高啓動率。博客内容指出,Crossgen2 是一個從零開(kāi)始的實現,已經(jīng)被(bèi)證明是一個卓越的代碼生成(chéng)創新平台。例如,與 crossgen1 相比,crossgen2 可以爲更多的 IL 模式生成(chéng)代碼。

以下 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:改進(jìn)了 sync-over-async 的性能(néng)

當 sync-over-async 是線程池工作線程上發(fā)生的唯一阻塞工作類型時(shí),此更改默認提高了線程注入的速度。有一些新的 AppContext 配置值,可以用來配置響應 sync-over-async 的線程注入率。

Runtime:W^X memory policy

官方正在啓用對(duì) W^X memory protection 的支持,這(zhè)是 Apple Silicon machines 的一項要求,也是其他操作系統上的一項有用的安全措施。 W^X 在 .NET 6 的所有其他環境中是可選的,并且可能(néng)是 .NET 7 的所有環境中的默認模式。

CodeGen changelog

Dynamic PGO

  • 添加選項以随機選擇受保護的 devirt 類

  • pgo/devirt 診斷改進(jìn)

LSRA

  • 重構 LSRA heuristics selection

    • 現在,DEBUG 模式包含一個 COMPlus 變量,LsraOrdering 將(jiāng)讓用戶設置啓發(fā)式排序。

    • 調整寄存器的啓發(fā)式以選擇最佳的寄存器候選溢出。

Code quality

  • 消除多餘的"test"指令。

完整更新說(shuō)明可查看發(fā)布公告


來源:oschina