Mono 支持LoongArch架構

近期,著名的.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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章