今天小編分享的科學經驗:轉用國產編程語言!MoonBit進入北大計算機學院研究生課程,LLVM後端編譯器同步發布,歡迎閱讀。
國產編程語言MoonBit 月兔,進入北大研究生課堂!
在人工智能驅動全球技術競賽的當下,國產基礎軟體的自主化進程正邁向深水區。
作為這一進程中的代表性力量,MoonBit 月兔以 " 快速、簡單、可拓展 " 為核心特質,逐步構建起跨越學術與產業的技術生态。自 2022 年誕生以來,MoonBit 通過多後端架構設計,在編譯速度、運行效率和代碼體積等關鍵指标上實現對傳統編程語言的超越,覆蓋從嵌入式設備到雲端服務的全棧開發場景,成為極少數能在工業級性能與教學實踐價值間取得平衡的編程語言及開發者工具鏈。
MoonBit 團隊近期雙線告捷:LLVM 後端編譯器發布,初步測試顯示其性能超過主流語言水平,實驗性的支持原生後端調試功能;幾乎同一時間,該語言被納入世界頂尖高校的編程語言課程。
MoonBit 的優勢
Part1:LLVM 後端發布:場景化分工,雙軌編譯架構實現能力躍遷
MoonBit 的核心目标是通過性能突破與開發者體驗革新,解決現有編程語言在關鍵場景(如高并發、資源受限環境)中的效率瓶頸。MoonBit 認識到若一門新語言無法在核心性能與易用性上創造代際優勢,開發者便不會承認其存在價值。
MoonBit 同步完善 C 後端并推出 LLVM 後端,分别針對嵌入式設備優化與跨平台高性能場景,通過統一工具鏈實現從硬體層到服務端的全場景覆蓋。
性能維度:LLVM 後端復用與 Rust/Swift 相同的工業級優化管線(如自動向量化、LTO),為 MoonBit 提供與現代語言同級的優化潛力。
體驗維度:原生集成 DWARF 調試信息,支持 GDB/LLDB 源碼級調試,并計劃實現運行時數據結構可視化。
生态擴展:基于 LLVM 對 RISC-V 向量擴展等新硬體的原生支持,MoonBit 可快速适配前沿架構。
性能實測:LLVM 後端的工業級表現
LLVM 後端的 MoonBit 在性能方面也有着不俗的成績。比如使用經典的 FFT 算法 benchmark,讓 MoonBit 和 Java 運行同樣的 Cooley-Tukey 算法。MoonBit 相比 Java 有 8 倍以上的性能提升,比将 Java 靜态編譯的編譯器 GraalVM 也有 3 倍以上的性能提升。
下面是 MoonBit 與 Java 實現的 FFT 算法的性能對比。FFT(快速傅裡葉變換)是一個計算序列的離散傅裡葉變換的高效算法,在信号處理、壓縮等許多領網域有重要應用。FFT 算法涉及大量數值運算和數組操作,可以很好地體現語言的基礎性能:
FFT 任務運行中位數時間(x86_64 Linux, Intel Core i7-12700)
由于 LLVM 後端涉及到更多的底層調整和優化,工具鏈還尚未能完全發揮 LLVM 所帶來的性能優勢。團隊将會在未來的更新中繼續優化 LLVM 後端生成的代碼質量,進一步提升它的性能。
原生後端調試支持
在面向虛拟機的 JS 後端,借助 Chrome Debugger,MoonBit 真正實現了調試體驗的 " 開箱即用 "。
然而,對于面向原生平台的 C 後端,調試體驗卻并不完全盡如人意。在 C 後端中,用戶可以調試編譯後生成的 C 檔案,但是 C 檔案與輸出的原始檔案的映射信息在這一過程中依然是缺少的。
在 LLVM 的幫助下,當前 MoonBit 編譯器已具備向最終二進制檔案注入 DWARF 格式符号表的能力。MoonBit 現在可以向輸出二進制檔案中插入調試信息,将二進制檔案中的指令直接對應到源檔案和行号列号。這一功能将很大程度上改善輸出的檔案與源代碼映射信息缺失的問題。
基于該調試信息生成機制,MoonBit 工具鏈支持開發者使用标準調試工具(如 LLDB)對編譯產物進行源碼級調試。
具體而言,調試器能夠自動解析符号映射關系,當執行流到達預設的源碼位置時準确觸發斷點中斷。比如,可以在 lldb 調試器中插入斷點,以将程式在指定的位置暫停。
雖然目前 MoonBit LLVM 後端對調試信息支持仍處于初步階段,但已經對開發調試有了一定的幫助。團隊後續會加入對調試器更好的支持,比如在調試器中展示局部變量和數據結構當前的值,以及更好的 name mangling 等。
未來展望:
LLVM 的引入帶來的最顯著的改進是,MoonBit 語言自身編譯到原生二進制檔案的過程可以完全脫離 C 編譯器進行,避免了 C 編譯器帶來的各種兼容性問題。在預編譯運行時庫的分發支持實現後,MoonBit 程式将徹底脫離對 C 編譯器的依賴,僅通過鏈接器生成原生程式。
有了 LLVM 處理底層的編譯工作,團隊可以将更多精力投入在在運行時系統的創新上,比如利用 LLVM 對異常處理的完整支持,将錯誤處理函數優化為性能更好的 try-catch 實現;LLVM 對追蹤式垃圾收集的原生支持能夠考慮用追蹤式 GC 來替代現有的 Perceus 和引用計數方案。
Part2:進入北大研究生課堂,替代 OCaml 完成教學更新
在編程語言理論教學領網域持續深耕十餘年的北京大學計算機學院,近日對其研究生課程《編程語言的設計原理》https://pku-dppl.github.io/2025/ 做出重要調整——自 2025 年春季學期起,MoonBit 替代 OCaml 成為該課程推薦的實踐工具。
MoonBit 為何被選中?
編程語言的發展通常較為漫長,像 OCaml 等經典語言經過 30 多年的學術驗證,才逐步在教學中得到廣泛應用。高校在選擇教學工具時,通常對語言的成熟度和穩定性有着嚴格的要求。在這種背景下,北京大學計算機學院率先将 MoonBit 引入其編程語言理論課程。作為一所頂尖學府,選擇一門僅誕生 2 年的編程語言,無疑是一次大膽的創新之舉,同時也标志着世界頂尖計算機科學課程對 MoonBit 的認可。課程大綱來看,北京大學計算機學院已經完成了教學内容的遷移工作,并計劃在今年春季學期順利實施 MoonBit 進行相關教學。
MoonBit 在工具鏈和語言特性的支持上,相比傳統編程語言具有更好的表達能力和開發體驗。它不僅保留了函數式編程的核心範式,還通過現代化工具鏈、AI 編程和内存安全機制的整合,為教學場景提供了從理論到實踐的良好銜接。可以預見,随着 MoonBit 在教學中的應用不斷深入,預計未來會有更多的高校采用這門語言。
Part3:MoonBit 月兔的發展歷程
從過去一年的發展歷程來看,MoonBit 月兔獲得了全球軟體領網域頂尖專家和權威機構的認可,年底全球用戶數實現了 1200% 的指數級增長,且在國内外知名高校、海外雲服務提供商、國家信息學競賽組織等多個應用場景中已得到驗證,根據 MoonBit2024 年度社區調查反饋,59.14% 的用戶已使用 MoonBit 月兔超過 3 個月并持續運用到日常開發工作中,在穩定的用戶基礎上,80% 的用戶評價 MoonBit 月兔性能為 " 優秀 "。用戶普遍認可其語言特性和平台規模生态,平台已實現從開發到部署的全流程自動化,尤其在微服務架構和雲原生應用領網域具有獨特優勢。
試用 MoonBit
https://marketplace.visualstudio.com/items?itemName=moonbit.moonbit-lang
Part4:彩蛋:MoonBit 編譯到 LLVM 的技術實現
MoonBit 的編譯流程采用 " 兩階段分層優化 " 架構,兼顧開發效率與運行時性能。其核心思想是:在包級别進行輕量級即時優化,在鏈接階段實施全局深度優化,既滿足增量編譯的敏捷性,又保障最終產物的性能。
第一階段:包級增量編譯(moonc build-package)
1、AST → TAST:類型驅動的代碼建模
從源代碼生成抽象語法樹(AST),随後通過類型推斷生成帶類型标注的 AST(TAST),為後續優化提供語義基礎。
關鍵價值:類型信息指導優化決策(如拆箱優化、内聯阈值判斷)。
2、TAST → Core IR:高層優化引擎
将 TAST 降級為 Core IR(基于 ANF 形式的中間表示),執行包級優化
異步函數同步化:消除協程開銷,生成狀态機代碼
逃逸分析:對非逃逸數據結構進行棧分配或拆箱
死代碼消除:靜态移除未被引用的代碼塊,減小產物體積。
第二階段:全局鏈接與深度優化(moonc link-core)
1、全局 IR 融合
将各包的 Core IR 鏈接為統一中間表示,啟動跨包優化:
激進内聯:突破包邊界内聯高頻調用函數。
跨模塊死代碼消除:識别未被主程式引用的庫代碼并移除。
2、IR 降級管線
MCore IR:通過單态化移除泛型,生成類型特化代碼。
CLambda IR:閉包消除與 GC 樁代碼插入,為後端生成做準備。
3、多後端代碼生成
— 完 —
學術投稿請于工作日發郵件到:
标題注明【投稿】,告訴我們:
你是誰,從哪來,投稿内容
附上論文 / 項目主頁鏈接,以及聯系方式哦
我們會(盡量)及時回復你
一鍵關注 點亮星标
科技前沿進展每日見
一鍵三連「點贊」「轉發」「小心心」
歡迎在評論區留下你的想法!