.NET 6 Preview 6 Released
宣布 .NET 6 Preview 6
Richard 2021 年 7 月 14 日
我們很高興發布 .NET 6 Preview 6。Preview 6 是我們進入 RC 時期之前的倒數第二個預覽版。將有兩個 RC 版本。此版本本身相對較小,而 Preview 7 會更大一些。在那之后,我們將進行質量修復,直到 11 月的最終版本。我們期待一個非常好的新的 .NET 版本。
您可以下載適用于 Linux、macOS 和 Windows 的.NET 6 Preview 6。
安裝程序和二進制文件
容器鏡像
Linux 軟件包
發行說明
API 差異
已知的問題
GitHub 問題跟蹤
有關 Web、數據訪問和客戶端方案的新增功能更多詳細信息,請參閱 ASP.NET Core、EF Core 和 .NET MAUI 帖子。
從 .NET 6 Preview 6 開始,我們已經測試并支持了Visual Studio 2022 Preview 2,Visual Studio 2022使您能夠利用為 .NET 6 開發的 Visual Studio 工具,例如在 .NET MAUI 中進行開發、用于 C# 應用程序的熱重載、用于 WebForms 的新 Web 實時預覽以及您的 IDE 體驗中的其他性能改進。.NET 6 還通過 Visual Studio for Mac 8.9 進行了測試。
查看新的對話帖子,以深入了解工程師對最新 .NET 功能的討論。
x64 仿真更新
我們已經完成了對 macOS 的 Apple Silicon 和 Windows 的 Arm64 的支持。剩下的就是在macOS Apple Silicon和Windows Arm64上支持 x64 仿真。我們需要做兩件事來實現這一點。
Side By side 安裝程序
以 .NET CLI為目標的一流架構(主要)支持在所有場景中使用原生架構 SDK。
在可以使用 side by side 安裝程序之前(不久在 .NET 6 中),您需要安裝所有 x64 版本或所有 Arm64 版本。如果要切換,需要卸載/刪除 Arm64 機器上的所有 .NET 版本。這是不幸的,但這是我們現在所處的位置。
工具:.NET SDK 可選工作負載改進
我們添加了三個新的工作負載命令,可實現更好的發現和管理。
dotnet workload search — 列出可安裝的工作負載。
dotnet workload uninstall— 如果不再需要工作負載,請刪除指定的工作負載。也是節省空間的好選擇。
dotnet workload repair
重新安裝您之前安裝的所有工作負載。
如果您的安裝因互聯網連接斷開而在中間失敗,這將非常有用。
可選工作負載由多個工作負載包組成,您可能已經進入這樣一種狀態,其中一些安裝成功,而另一些安裝失敗。
在之前的預覽中,我們添加了以下命令:
dotnet workload install — 安裝工作負載。
dotnet workload list — 列出已安裝的工作負載。
dotnet workload update — 更新已安裝的工作負載。
庫:TLS 支持 System.DirectoryServices.Protocols
對于 Linux 和 MacOS System.DirectoryServices.Protocols TLS支持已經啟用了。它也已經為 Windows 啟用。.NET 用戶現在可以享受與 LDAP 服務器的安全通信了。
感謝@iinuwa。
工具:Crossgen2 替換 crossgen
Crossgen2已為所有現有的 crossgen 場景啟用。在我們之后的里程碑里,我們還從 SDK 中刪除了(舊的)crossgen。它不再可訪問且無法使用。
Crossgen(1 和 2)支持在發布步驟中將 IL 預編譯為本機代碼。預編譯主要有利于改善啟動。Crossgen2 是一個從頭開始的實現,已被證明是代碼生成創新的卓越平臺。例如,crossgen2 可以為比 crossgen1 更廣泛的 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>庫:改進了sync-over-async性能
sync-over-async 是一種常見的阻塞工作類型。當它發生在線程池工作線程上時,它會導致線程池饑餓。緩慢的線程注入可能會延遲其他排隊工作的運行,并可能延遲解決饑餓問題。
默認情況下,當異步同步是線程池工作線程上發生的唯一阻塞工作類型時,此更改提高了線程注入的速度。有一些新的AppContext配置值可用于配置響應異步同步的線程注入率。
運行時:W^X 內存策略
我們正在啟用對W^X 內存保護的支持。這是 Apple Silicon 機器的一項要求,也是其他操作系統上的一項有用的安全措施。
此功能的名稱有點不正常。它應該讀作“寫獨占執行”。這意味著一個內存頁可以被標記為讀/寫或讀/執行,但不能包括寫和執行的任何組合。例如,寫入/執行頁面容易被緩沖區溢出攻擊所利用。
此功能需要在整個產品中進行更改,無論在哪里使用寫入/執行頁面。例如,Preview 6 包含一項更改,要求JIT 與我們采用的 W^X 方案配合。
W^X 是 Apple Silicon 機器上 macOS 的要求,在 .NET 6 的所有其他環境中是可選的,并且可能是 .NET 7 的所有環境中的默認模式。
注意:W^X 實現在 .NET 6 的所有環境中都有一個啟動回歸,但 Apple Silicon 除外。它將作為 .NET 7 的一部分解決。由于操作系統對此方案的支持, Apple Silicon 實現沒有這種回歸。
CodeGen 變更日志
以下代碼生成更改包含在 Preview 6 中。
動態 PGO
添加選項以隨機選擇受保護的 devirt 類 https://github.com/dotnet/runtime/pull/53399
pgo/devirt 診斷改進 https://github.com/dotnet/runtime/pull/53247
LSRA
重構 LSRA啟發式選擇 https://github.com/dotnet/runtime/pull/52832
現在,調試模式包含一個 COMPlus 變量,LsraOrdering 將讓用戶設置啟發式排序。
調整寄存器的啟發式以寄存器候選中選擇出最佳的一個。https://github.com/dotnet/runtime/pull/53853
以下改進基于這些更改。
更多改進:
Windows x86
Windows x64
通用
代碼質量
消除多余的“測試”指令 https://github.com/dotnet/runtime/pull/53214
關閉
發布很快就會來到并即將結束。我們很快將只處理最緊迫的反饋,接近我們用于服務版本的相同錯誤水平。如果您一直在等待一些反饋或尚未嘗試 .NET 6,請立即嘗試。這是你影響發布的最后機會。
感謝所有為 .NET 6 成為另一個偉大版本做出貢獻的人。
感謝您成為 .NET 開發人員。
總結
以上是生活随笔為你收集整理的.NET 6 Preview 6 Released的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式之桥接
- 下一篇: Serilog 最佳实践