後端工坊 2026 年 6 月 2 日

2026-06-02 — QBE 1.3 效能突破 63%、Zstandard 純 Rust 實作初版

primary=https://c9x.me/compile/release/qbe-1.3.html primary=https://trifectatech.org/blog/announcing-zstandard-in-rust/

QBE 1.3:從 40% 到 63% GCC 效能、自動指令選取器 mgen、Windows ABI 支援

QBE Project · 2026-06

QBE 是一個輕量級編譯器後端,以約 20,000 行 C 程式碼為目標,提供接近商業編譯器 70% 效能的機器碼生成。1.3 版本是自 1.0 以來最大幅度的更新,新增約 7,000 行程式碼、移除 1,500 行,在效能、指令選取與平台支援三個方向同步推進。

效能提升:CoreMark 驅動的優化

版本 1.3 將 QBE 在 CoreMark 上的效能從約 40% 提升至超過 63% 的 GCC -O2 水準,Hare 語言完整測試套件則比 1.2 版快了 33%。這個數字來自數個優化的疊加:

  • Global Value Numbering(GVN):消除冗餘計算,在迴圈不變式外提
  • Loop Optimization:將迴圈不變式計算移出迴圈體
  • Control Flow Simplification:合併跳轉鏈、移除空的基本區塊

這些優化合力解決了 QBE 長期以來相對於 GCC 的最大效能缺口——大量冗餘的載入/儲存操作。

mgen:OCaml 元程式自動化指令選取

指令選取(Instruction Selection)是編譯器後端中最繁瑣的手工勞動之一。QBE 1.3 引入 mgen,一個以 OCaml 撰寫的元程式工具,接受以 S-expression 語法描述的 IR 模式,自動生成對應的 C 程式碼。

例如一條乘法後累加的模式:

(add (mul %a %b) %c) → madd %a, %b, %c

過去需要手動撰寫 C 的遞迴 switch/case,現在只需在 mgen 輸入文件中新增一行 S-expression。這讓未來在更多後端(如 RISC-V 向量擴充)支援複合指令選取更加可行。

Windows ABI 與 PIC 支援

1.3 新增 Windows x64 ABI 支援,讓 QBE 生成的目的碼可直接與 MSVC 的呼叫慣例互通。同時加入改進的位置無關碼(Position-Independent Code, PIC)生成,配合新的 extern 動態常數旗標,使 QBE 能在大多數目標平台上生成共享物件(shared object / .so)。這對採用 QBE 的語言實作(如 Hare)而言,意味著可在 Windows 上編譯出原生動態連結庫。

原始來源:QBE 1.3 Release Notes


Zstandard 純 Rust 實作釋出:libzstd-rs-sys 初版完成解壓縮

Trifecta Tech Foundation · 2026-06

Trifecta Tech Foundation 釋出了 libzstd-rs-sys 的初版,這是繼 zlib 與 bzip2 之後,他們第三個以純 Rust 重新實作的壓縮格式程式庫。這次釋出涵蓋解壓縮功能與字典建構,壓縮端尚在開發中。

轉譯與驗證方法

實作最初以 c2rust 自動轉譯 Meta 的 C 參考實作,再經過人工清理移除不安全的裸指標操作。驗證分三層:

  • 對官方 Zstandard 測試向量的完整回歸測試
  • 差分模糊測試(differential fuzzing):隨機輸入同時餵給 C 版與 Rust 版,比對輸出
  • 在 Miri 下執行,捕捉未定義行為

預設模式下效能比 C 參考實作慢約 3%,因為 Rust 的邊界檢查增加了少量開銷。若啟用 unsafe-performance-experimental feature flag,效能可對齊 C 版,但失去部分安全保證。

純 Rust 的工程意義

去除 C 工具鏈依賴對兩個場景特別有價值:在 Windows 上交叉編譯(設定 MSVC 或 MinGW 工具鏈歷來是主要痛點),以及編譯至 WebAssembly 目標(C 工具鏈對 Wasm 的支援複雜度遠高於 Rust 原生目標)。此外該程式庫也可作為 C 的動態連結庫替換,對需要避免 GPL 相容問題或希望整個依賴樹保持 Rust 的專案有直接意義。

壓縮端的完成尚需額外資金,目前贊助者包括 Chainguard、Astral、NLnet Foundation 與 Sovereign Tech Agency。

原始來源:Trifecta Tech Foundation — Announcing Zstandard in Rust


End of article
0
Would love your thoughts, please comment.x
()
x