...

.NET 6 Preview 6 發布

2021-07-28

.NET 6 Preview 6 現已發布,此版本是(shì)進入 RC 時(shí)期之(zhī)前的(de)倒數第二個(gè)預覽版,RC 版本将會有兩個(gè) 。官方表示,Preview 6 本身相對較小,Preview 7 将會更大(dà)。在(zài)那之(zhī)後,團隊将進行質量修複,直至 11 月的(de)最終版本發布。

x64 仿真更新

開發團隊已經完成了(le/liǎo)對 macOS 的(de) Apple Silicon 和(hé / huò) Windows 的(de) Arm64 的(de)支持。剩下的(de)就(jiù)是(shì)在(zài) macOS Apple Silicon 和(hé / huò) Windows Arm64 上(shàng)支持 x64 仿真。其需要(yào / yāo)做兩件事來(lái)實現這(zhè)一(yī / yì /yí)點:

  • Side-by-side capable installers

  • 以(yǐ) .NET CLI 爲(wéi / wèi)目标的(de)一(yī / yì /yí)流架構(主要(yào / yāo))支持在(zài)所有場景中使用本機架構 SDK。

在(zài)可以(yǐ)使用 side-by-side capable installers  之(zhī)前(稍後在(zài) .NET 6 中),用戶需要(yào / yāo)安裝所有 x64 版本或所有 Arm64 版本。如果要(yào / yāo)切換,需要(yào / yāo)卸載/删除 Arm64 機器上(shàng)的(de)所有 .NET 版本。

Tools:.NET SDK 可選工作負載改進

添加了(le/liǎo)三個(gè)新的(de)工作負載命令,可實現更好的(de)發現和(hé / huò)管理。

  • dotnet workload search — 列出(chū)可安裝的(de)工作負載。

  • dotnet workload uninstall— 如果不(bù)再需要(yào / yāo)工作負載,請删除指定的(de)工作負載。也(yě)是(shì)節省空間的(de)好選擇。

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

    • 如果你的(de)安裝因互聯網連接斷開而(ér)在(zài)中間失敗,這(zhè)将非常有用。

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

在(zài)之(zhī)前的(de)預覽中,開發團隊添加了(le/liǎo)以(yǐ)下命令:

  • dotnet workload install — 安裝工作負載。

  • dotnet workload list — 列出(chū)已安裝的(de)工作負載。

  • dotnet workload update — 更新已安裝的(de)工作負載。

Libraries:TLS support for System.DirectoryServices.Protocols

Linux 和(hé / huò) macOS 的(de) System.DirectoryServices.Protocols 已經啓用了(le/liǎo) TLS 支持。.NET 用戶現在(zài)可以(yǐ)享受與 LDAP 服務器的(de)安全通信。

Tools: Crossgen2 替換 crossgen

Crossgen2 已被用于(yú)所有現有的(de) crossgen 方案,官方已從 SDK 中删除了(le/liǎo)(舊的(de))crossgen。

Crossgen(1 和(hé / huò) 2)能夠将 IL 預編譯爲(wéi / wèi)本地(dì / de)代碼作爲(wéi / wèi) publishing step。預編譯主要(yào / yāo)有利于(yú)提高啓動率。博客内容指出(chū),Crossgen2 是(shì)一(yī / yì /yí)個(gè)從零開始的(de)實現,已經被證明是(shì)一(yī / yì /yí)個(gè)卓越的(de)代碼生成創新平台。例如,與 crossgen1 相比,crossgen2 可以(yǐ)爲(wéi / wèi)更多的(de) IL 模式生成代碼。

以(yǐ)下 MSBuild 屬性演示了(le/liǎo)如何用 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:改進了(le/liǎo) sync-over-async 的(de)性能

當 sync-over-async 是(shì)線程池工作線程上(shàng)發生的(de)唯一(yī / yì /yí)阻塞工作類型時(shí),此更改默認提高了(le/liǎo)線程注入的(de)速度。有一(yī / yì /yí)些新的(de) AppContext 配置值,可以(yǐ)用來(lái)配置響應 sync-over-async 的(de)線程注入率。

Runtime:W^X memory policy

官方正在(zài)啓用對 W^X memory protection 的(de)支持,這(zhè)是(shì) Apple Silicon machines 的(de)一(yī / yì /yí)項要(yào / yāo)求,也(yě)是(shì)其他(tā)操作系統上(shàng)的(de)一(yī / yì /yí)項有用的(de)安全措施。 W^X 在(zài) .NET 6 的(de)所有其他(tā)環境中是(shì)可選的(de),并且可能是(shì) .NET 7 的(de)所有環境中的(de)默認模式。

CodeGen changelog

Dynamic PGO

  • 添加選項以(yǐ)随機選擇受保護的(de) devirt 類

  • pgo/devirt 診斷改進

LSRA

  • 重構 LSRA heuristics selection

    • 現在(zài),DEBUG 模式包含一(yī / yì /yí)個(gè) COMPlus 變量,LsraOrdering 将讓用戶設置啓發式排序。

    • 調整寄存器的(de)啓發式以(yǐ)選擇最佳的(de)寄存器候選溢出(chū)。

Code quality

  • 消除多餘的(de)"test"指令。

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


來(lái)源:oschina