Macbook(M1版)的用戶看過來,.net 6 Preview 6支持Apple Silicon for macOS


本文由葡萄城技術團隊翻譯
轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。

我們很高興發布.NET6預覽的第6版,本次預覽是倒數第二次預覽了。在本次預覽發布之后到最后一次預覽之前,我們會進入RC期,將會有兩個RCs。這個版本本身相對內容較少,而Preview7的內容會更多。在所有預覽發布結束后,我們將持續對問題進行修復,直到11月發布最終版本。請大家一起期待.NET的新版本。

.NET 6 Preview 6下載地址,根據各位的需要下載Linux, ,macOS, and Windows不同版本。

請參閱ASP.NET CoreEF Core.NET MAUI文章,以了解有關web、數據訪問和客戶端場景的新功能的更多詳細信息。

從.NET 6 Preview 6開始,我們已經測試並支持Visual Studio 2022 Preview 2。Visual Studio 2022可以使用專門為.NET 6開發的Visual Studio工具,如.NET MAUI中的開發、C應用程序的熱重新加載、WebForms的新Web Live預覽,以及IDE體驗中的其他性能改進。.net6也已經用visualstudioformac8.9進行了測試。

查看.NET新特性討論

# x64仿真更新

我們已經完成了添加對Apple Silicon for macOS和Arm64 for Windows的支持。剩下的就是支持macOS、Apple Silicon和Windows Arm64上的x64仿真。

需要做以下兩點實現:

  • 安裝並行

  • 使用.NET CLI實現一流體系結構目標,以便在所有場景中啟用本機體系結構SDK。

但是目前不方便的一點是,在並行安裝程序可用之前(在之后的.NET6中),您需要安裝所有x64版本或所有Arm64版本。如果要進行切換,需要卸載/刪除Arm64計算機上的所有.NET版本。

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

我們添加了三個新的工作負載命令,以實現更好的發現和管理。

l  dotnet workload search-列出可安裝的工作負載

l  dotnet工作負載卸載-如果不再需要工作負載,請刪除指定的工作負載。也是節省空間的好選擇

l  dotnet工作負載修復-重新安裝以前安裝的所有工作負載

如果因為網絡連接不好導致安裝失敗,就可以解決這個問題。

可選工作負載由多個工作負載包組成,所以會出現部分負載包安裝成功,部分安裝失敗。

在以前的預覽中,我們添加了以下命令:

  • dotnet workload install-安裝工作負載

  • dotnet workload list-列出已安裝的工作負載

  • dotnet workload update-更新已安裝的工作負載

庫:對System.DirectoryServices.Protocols的TLS支持

已為Linux和macOS的System.DirectoryServices.Protocols啟用TLS支持。它已經為Windows啟用。NET用戶現在可以享受與LDAP服務器的安全通信。

歸功於@iinuwa。

工具:Crossgen2取代crossgen

已為所有現有的crossgen方案啟用了Crossgen2。在這個里程碑中,我們還從SDK中刪除了(舊的)crossgen,舊crossgem不可再訪問,無法使用。

Crossgen(1和2)支持將IL預編譯為本機代碼作為發布步驟。預編譯對啟動的改進有很大幫助。Crossgen2是一個從頭開始的實現,已經被證明是代碼生成創新的高級平台。例如,crossgen2可以為比crossgen1更廣泛的IL模式集生成代碼。

以下MSBuild屬性演示如何使用crossgen2啟用預編譯。

微信截圖_20210716103029.png

庫:Sync-over-async的性能改進

Sync-over-async是阻塞工作的一種常見類型。當線程池工作線程發生時,它會導致飢餓。線程注入的速度過慢可能會延遲其他排隊工作的運行,並且可能會延遲飢餓問題的解決。

當Sync-over-async是線程池工作線程上發生的唯一一種阻塞線程時,此更改在默認情況下提高了線程注入速率。有一些新的AppContext配置值可用於配置線程注入速率,以響應Sync-over-async。

Runtime: W^x內存策略

我們支持對W^ x內存保護。這是Apple Silicon的一項要求,也是其他操作系統的一項重要的安全措施。

此特性具有異常名稱,它應該被讀為“寫獨占執行”。這意味着內存頁可以被標記為讀/寫或讀/執行,但不能是任何包括寫和執行的組合。例如,寫/執行頁會受到緩沖區溢出攻擊的影響。

此特性要求在整個產品進行變更,無論使用的是寫/執行頁。例如,preview 6的一個變化是它要求JIT與我們采用的W^X方案協作。

W^x是蘋果硅片機上macOS的一個要求,在.NET 6的所有其他環境中都是可選的,並且在.NET 7的所有環境中都可能是默認模式。

注意:W^x實現在除Apple Silicon以外的所有環境中都具有與.net6的啟動回歸,它將作為.NET7的一部分解決。由於操作系統支持此場景,Apple Silicon實現沒有這種回歸。

CodeGen 更新日志

在Preview 6中包含以下代碼更改:

## 動態PGO

LSRA

  • 重構LSRA啟發選擇

https://github.com/dotnet/runtime/pull/52832

  1. DEBUG模式包含一個COMPlus變量,LsraOrdering將允許用戶設置啟發式排序

  2. 調整寄存器的啟發式算法,以選擇要溢出的最佳寄存器候選

https://github.com/dotnet/runtime/pull/53853

改進基於這些內容更改:

2.png

3.png

4.png

更多改進:

代碼質量

消除冗余的“測試”指令
https://github.com/dotnet/runtime/pull/53214

總結

這次發布很快就要結束了,大家可以盡快嘗試一下這次Preview6中提到的內容改動。

感謝所有為.NET6發布做出貢獻的人。后續,葡萄城還會繼續為大家帶來更多.net6更新的相關內容分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM