近期,著名的.NET開源社群Mono正式支援LoongArch(龍架構),目前LoongArch64架構已出現在.NET社群主幹分支上。
詳細內容可以跟蹤 https://github.com/mono/mono/issues/21381, 一共分5部分提交:
Mono是一個開源的.NET框架實現,它允許開發者在非Windows平臺上執行.NET應用程式。Mono專案是由Xamarin公司(後來被微軟收購)發起的,目的是提供一種跨平臺的.NET執行環境。Mono支援多種作業系統,包括Linux、macOS、Windows以及一些嵌入式系統。它包括一個C#編譯器、一個.NET執行時環境,以及許多.NET類庫。這使得開發人員可以在不同的平臺上使用相同的程式碼基礎,從而提高了開發效率。
Mono的主要特點包括:
跨平臺:Mono可以在多種作業系統上執行,使得.NET應用程式可以在不同的環境中部署和執行。
相容性:Mono旨在與.NET Framework和.NET Core保持高度相容,使得已有的.NET應用程式可以輕鬆遷移到其他平臺。
開源:Mono是開源的,這意味著開發者可以自由地使用、修改和分發它。
社群支援:Mono有一個活躍的社群,提供支援、文件和資源,幫助開發者解決問題和實現新功能。
Mono在遊戲開發、企業應用、移動應用等領域有著廣泛的應用。由於它的跨平臺特性,許多開發者選擇使用Mono來建立可以在不同裝置上執行的應用程式。此次LoongArch架構得到Mono 開源社群原生支援,.NET-runtime裡面的mono龍芯.NET團隊本地也已經在做最後除錯,最晚6月份提交社群,意味著LoongArch64架構對.NET的支生態支援完善了,.NET開發平臺的軟體生態可以原生移植到LoongArch64平臺部署執行,LoongArch生態建設再次邁出堅實一步,為國際開源軟體發展注入中國自主創新源動力。
在過去的兩年裡,龍芯.NET團隊的本地 mono 已經透過了很多 mono 的應用程式測試,即使是由 mono 驅動的 unity3D 也可以在 LoongArch64-linux 上執行。有一些截圖圖片。#21381 (評論)
2021年9月,龍芯中科向.NET社群提交了LoongArch架構支援計劃,.NET社群對LoongArch架構的原生支援工作正式啟動。2021年12月龍芯中科向社群正式提交了完整的LoongArch架構原始碼,之後龍芯中科與.NET社群保持密切溝通,聯合社群開發者對LoongArch64架構支援原始碼進行了詳細檢視、深入討論和多輪修改迭代。2022年4月,基礎的執行時架構程式碼全部透過社群技術評審,進入主幹開發分支,LoongArch成為.NET社群原生支援的全新CPU架構。2024年5月,Mono 部分的程式碼也進入主分支,LoongArch 全面支援了舊世界(.NET Framework) 和新世界(.NET 5+),後續,龍芯團隊將進一步最佳化提升LoongArch架構效能,完善.NET各類開發框架在LoongArch的支援,更好地為LoongArch平臺的.NET開發者和使用者服務。
龍芯平臺.NET,是龍芯公司基於開源社群.NET獨立研發適配的龍芯版本,我們會長期進行安全更新和錯誤修復,並持續進行效能最佳化。龍芯開源社群專門開設了.NET頻道:龍芯上的.NET | 龍芯開源社群 (loongnix.cn)
釋出的LoongArch64架構的Mono6.13.0-1是基於社群main分支在LA上適配的,對應社群開發版本6.13.0。
關鍵更新:
增加3C5000 Server系統安裝包mono-6.13.0-1.loongarch64.rpm。
完善ABI相關實現。
完善tailcall、abcrem最佳化問題。
完善profile、Soft Debugger功能。
修復若干bug, 進一步提升Mono 6.13在LoongArch64架構上的穩定性。
預設為JIT執行模式,也可手動切換為解釋執行模式(--interpreter),暫不支援AOT特性。
龍芯LoongArch64版Mono 6 下載地址。安裝方法請見Mono6安裝說明。
接下來我們就來安裝體驗一下Mono 6.13:
geffzhang@geffzhang-pc:~/下載$ sudo apt install ./mono-6.13.0-1_loongarch64.deb
[sudo] geffzhang 的密碼:
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
下列軟體包是自動安裝的並且現在不需要了:
cracklib-runtime libaribb24-0 libbasicusageenvironment1
libboost-python1.67.0 libcddb2 libcrack2 libdbusmenu-qt5-2 libdvbpsi10
libebml4v5 libfam0 libgpgmepp6 libgroupsock8 libhfstospell10 libixml10
libkf5auth-data libkf5auth5 libkf5codecs-data libkf5codecs5
libkf5completion-data libkf5coreaddons-data libkf5coreaddons5 libkf5crash5
libkf5service-data libkf5sonnet5-data libkf5sonnetcore5 libkf5sonnetui5
libkf5widgetsaddons-data libkf5widgetsaddons5 libkf5windowsystem-data
libkf5windowsystem5 liblivemedia64 libmad0 libmatroska6v5
libopenmpt-modplug1 libphonon4qt5-4 libplacebo7 libpolkit-qt5-1-1
libprotobuf-lite17 libproxy-tools libpwquality-common libpwquality1
libqt5concurrent5 libqt5qmlworkerscript5 libqt5texttospeech5
libresid-builder0c2a libsdl-image1.2 libsidplay2 libspatialaudio0
libspeechd2 libupnp13 libxcb-xv0 libyaml-cpp0.6 qml-module-qtquick-window2
qml-module-qtquick2 qtspeech5-speechd-plugin
使用'sudo apt autoremove'來解除安裝它(它們)。
下列軟體包將被升級:
mono-6.13
升級了 1 個軟體包,新安裝了 0 個軟體包,要解除安裝 0 個軟體包,有 0 個軟體包未被升級。
需要下載 0 B/80.4 MB 的歸檔。
解壓縮後會消耗 0 B 的額外空間。
獲取:1 /home/geffzhang/下載/mono-6.13.0-1_loongarch64.deb mono-6.13 loongarch64 6.13.0-1 [80.4 MB]
(正在讀取資料庫 ... 系統當前共安裝有 239607 個檔案和目錄。)
準備解壓 .../mono-6.13.0-1_loongarch64.deb ...
正在解壓 mono-6.13 (6.13.0-1) 並覆蓋 (6.13.0) ...
正在設定 mono-6.13 (6.13.0-1) ...
正在處理用於 man-db (2.8.5-2.1) 的觸發器 ...
geffzhang@geffzhang-pc:~/下載$ whereis mono
mono: /usr/bin/mono /usr/lib/mono /usr/etc/mono /usr/share/man/man1/mono.1
geffzhang@geffzhang-pc:~/下載$ mono --version
Mono JIT compiler version 6.13.0 (loongarch64-dev-6.0/e7cece7bde0 2024年 04月 19日 星期五 07:02:19 UTC)
Loongson's version 6.13.0-1
Copyright (C) Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: normal
Notifications: epoll
Architecture: loongarch64
Disabled: none
Misc: softdebug
Interpreter: yes
Suspend: preemptive
GC: sgen (concurrent by default)