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

葡萄城技術團隊發表於2021-07-16

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

我們很高興釋出.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更新的相關內容分享。

相關文章