The faber CLI
Faber build tool#
faber CLI 是建置、檢查、執行、格式化與測試 Faber 原始碼的主要入口。它將 Radix 編譯器包裝成符合人體工學的開發者工具。
核心指令#
| 指令 | 用途 |
|---|---|
faber build <path> | 將套件編譯至目標後端(預設:Rust) |
faber check <path> | 進行型別檢查,但不輸出程式碼 |
faber run <path> | 建置並執行 |
faber test <path> | 執行 proba 測試套件 |
faber format <path> | 套用標準格式 |
faber explain <code> | 解釋診斷碼 |
faber emit <path> | 將原始碼輸出至目標介面 |
建置套件#
faber build my-package/ -t rust-t 旗標選取程式碼產生目標。支援的目標包括 rust(預設)、wasm、typescript 與 go。
不輸出程式碼的檢查#
faber check my-package/執行完整的前端流程(詞法分析 → 剖析 → 型別檢查 → MIR 降階),但不產生輸出成品。在 CI 與編輯器整合中使用此指令。
執行測試#
faber test my-package/將套件中的所有 probandum 套件編譯為 Rust #[test] 函式,並透過 Cargo 執行。內嵌測試與原始碼並存,不需要額外的測試二進位檔。
格式化#
faber format my-package/套用標準的 Faber 格式化工具。格式化工具會強制採用一致的版面配置:每行一個宣告、標準間距,以及統一的關鍵字介面。
解釋診斷#
faber explain SEM001列印編譯器可能產生的任何診斷碼之人類可讀說明。這有助於瞭解錯誤的意義與修正方式。
In-process scripting#
除了編譯至 Rust 的路徑之外,Faber 也支援透過 MIR 步進器在程序內執行直譯。
使用方式#
faber run --interpret script.fab這會在編譯器完成正常的前半段流程(從剖析到型別檢查,再到 MIR 降級)後,在程序內執行 Faber 原始碼,而不會呼叫 rustc 或產生建置程序。
運作方式#
編譯器會產生已分析的 HIR、經驗證的 MIR,以及已解析的執行階段內建函式表。MIR 步進器會將 MIR 區塊直接分派至主機,略過 wasm 輸出與具現化的往返流程:
Source → Lex → Parse → Collect → Resolve → Lower → Typecheck
↓
MIR lowering
↓
MIR stepper + Host延遲#
腳本路徑會執行與編譯路徑相同的線性前端流程,另外加上與腳本實際執行內容成正比的步進器耗時:
| 階段 | 成本 |
|---|---|
| 前端(100 行腳本) | 約 0.6 毫秒 |
| MIR 步進 | 與已執行的陳述式數量成正比 |
步進器絕不會呼叫 rustc 或產生程序,因此啟動速度足以讓人感覺像執行 shell 腳本。
限制#
- MIR 步進器不支援編譯路徑所支援的所有主機 I/O 路徑 — 部分
norma:*包裝器仍然僅能透過編譯使用 - 步進器是原生 MIR 的診斷/參考執行器,不是供已部署應用程式使用的正式執行階段
- 透過 Cargo 進行套件編譯仍是主要產品路徑