Mono 支援LoongArch架構

张善友發表於2024-05-18

近期,著名的.NET開源社群Mono正式支援LoongArch(龍架構),目前LoongArch64架構已出現在.NET社群主幹分支上。

image

詳細內容可以跟蹤 https://github.com/mono/mono/issues/21381, 一共分5部分提交:

image

Mono是一個開源的.NET框架實現,它允許開發者在非Windows平臺上執行.NET應用程式。Mono專案是由Xamarin公司(後來被微軟收購)發起的,目的是提供一種跨平臺的.NET執行環境。Mono支援多種作業系統,包括Linux、macOS、Windows以及一些嵌入式系統。它包括一個C#編譯器、一個.NET執行時環境,以及許多.NET類庫。這使得開發人員可以在不同的平臺上使用相同的程式碼基礎,從而提高了開發效率。

Mono的主要特點包括:

  1. 跨平臺:Mono可以在多種作業系統上執行,使得.NET應用程式可以在不同的環境中部署和執行。

  2. 相容性:Mono旨在與.NET Framework和.NET Core保持高度相容,使得已有的.NET應用程式可以輕鬆遷移到其他平臺。

  3. 開源:Mono是開源的,這意味著開發者可以自由地使用、修改和分發它。

  4. 社群支援:Mono有一個活躍的社群,提供支援、文件和資源,幫助開發者解決問題和實現新功能。

Mono在遊戲開發、企業應用、移動應用等領域有著廣泛的應用。由於它的跨平臺特性,許多開發者選擇使用Mono來建立可以在不同裝置上執行的應用程式。此次LoongArch架構得到Mono 開源社群原生支援,.NET-runtime裡面的mono龍芯.NET團隊本地也已經在做最後除錯,最晚6月份提交社群,意味著LoongArch64架構對.NET的支生態支援完善了,.NET開發平臺的軟體生態可以原生移植到LoongArch64平臺部署執行,LoongArch生態建設再次邁出堅實一步,為國際開源軟體發展注入中國自主創新源動力

在過去的兩年裡,龍芯.NET團隊的本地 mono 已經透過了很多 mono 的應用程式測試,即使是由 mono 驅動的 unity3D 也可以在 LoongArch64-linux 上執行。有一些截圖圖片。#21381 (評論)

image


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)

image

釋出的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)

相關文章