日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 7 预览版2 的亮点之 NativeAOT 回顾

發布時間:2023/12/4 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 7 预览版2 的亮点之 NativeAOT 回顾 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

.NET 中備受追捧和期待已久的功能NativeAOT終于出現在本周的.NET 7 預覽版2中,該項目的工作仍在繼續,該版本將 NativeAOT 從實驗性的 dotnet/runtimelab repo 中移出合并進入穩定的運行時庫 dotnet/runtime repo,但尚未在 dotnet SDK 中添加足夠的支持,以使用 NativeAOT 發布項目。完成此操作后,可以對實際測試進行完善了。

.NET NativeAOT 編譯器脫離實驗性質正式跟隨 .NET 7 Preview 2 發布到了官方 nuget 源:https://www.nuget.org/packages/Microsoft.DotNet.ILCompiler 。

從現在開始,7.0.0-* 版本基本可以放心用在生產環境。我們可用開始嘗試修剪我們的應用程序,并確保沒有剪裁警告。剪裁是 NativeAOT 的要求。GitHub 問題 .NET 7 中的 NativeAOT #61231 顯示了正在檢查的初始工作以及第一階段的剩余工作:

NativeAOT 這個功能的完整支持真是不容易,具體怎么用可用參考 hez2010的文章:通過 .NET NativeAOT 實現用戶體驗升級。

這里來回顧一下這個歷程:具體內容來自知乎的hez2010 的整理的內容 https://www.zhihu.com/question/472875939 :

Native AOT (2021.1~2021.7)的進展:

  • 托管類型系統的完善,支持了泛型接口的默認方法實現,但是還是不支持接口的泛型默認方法實現,因為這部分要對類型系統做很多的改動。

  • COM 支持基本做完了,因此現在的 Native AOT 已經可以成功編譯和運行 winforms 程序了(需要 COM Wrapper),WPF、WinUI 和 UWP 也在實驗中,但是 WPF 涉及到 C++/CLI,這部分無法靜態鏈接進去,不太可能獲得 Native AOT。

  • 泛型虛方法懶實例化(GVM Instantiation),不需要在編譯的時候就實例化所有的泛型虛方法,而是留在運行時第一次調用時來做,這么做不僅不會損失性能,而且還能節省大量的編譯后體積,并避免泛型虛方法遞歸實例化導致的編譯時無限遞歸展開問題。但是并沒有完全解決無限泛型遞歸的問題,由于并行編譯沒法使用強聯通分量算法進行檢測。

  • 支持了動態調用標注,然后對 .NET 6 的 BCL 進行了標注,因此大多數情況即使基礎庫某些方法里用到了反射創建類型,也不會出現運行時找不到代碼的問題,因為框架自己做了標注,編譯的時候編譯器就能知道并生成代碼,而無需人工編寫大量的 rd.xml 標注信息。

  • 目前正在添加托管類型系統對靜態虛方法的支持(已有 PR)。

  • 目前正在添加對 PS4/PS5 等平臺的支持(緩慢進展,可以運行起來簡單程序了)。

  • 目前正在添加對 WASM 平臺的支持(緩慢進展,可以運行起來簡單程序了)。

  • 支持了 ARM64 平臺。

  • 支持了靜態鏈接依賴項。

  • 支持使用 .NET 6 的靜態 PGO 數據做優化編譯。

  • 編譯速度的改善也是能明顯看得到的,以前的舊版本 CoreRT 編譯個程序動輒十分鐘半小時,現在基本半分鐘一分鐘都能搞定。

2021/8/12 更新:

  • 正在添加對 ARMv7 平臺的支持(已有 PR)

  • 正在添加對接口泛型方法默認實現的支持(已有 PR)

  • 2021/8/14 更新:

  • 接口泛型方法默認實現已支持,因此 efcore 可以用 NativeAOT 了

  • 泛型虛擬方法解析速度有所提升(大概 8%),編譯時間更短了

  • 2021/8/17 更新:

  • NativeAOT 在 .NET 6 上計劃的內容已經完成,已經可以穩定使用,另外可能會在 .NET 7 脫離實驗正式發布

  • ARMv7 平臺支持已接近完成

  • 2021/8/24 更新:

  • NativeAOT 編譯器版本已提升至 7.0.0-*

  • 2021/9/6 更新:

  • 正在適配安卓

  • LLVM 從 6 升級到 12

  • 完善?IDynamicInterfaceCastable?支持,對 COM 的支持度進一步改善

  • 2021/9/17 更新:

  • 支持了模塊初始化器

  • 正在添加對 x86 的支持

  • 2021/12/6 更新:

  • Native AOT 轉正正式提上 .NET 7 計劃

  • 2021/12/15 更新:

  • Native AOT 代碼正式合并入 .NET 主線并啟用了構建

  • 無限泛型展開導致無法編譯的問題已經解決

  • 2022/3/17 更新:

    ?? 1. 正式在.NET 7 Preview 2博客文章中宣布可用。?

    ?? 2. WPF 開始了 AOT 改造:?https://github.com/dotnet/wpf/pull/6171

    總結

    以上是生活随笔為你收集整理的.NET 7 预览版2 的亮点之 NativeAOT 回顾的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。