liquid-il
一個高效能 Liquid 模板引擎,透過中間語言 (IL) 將模板編譯為最佳化的 Ruby 和機器碼。
簡介
LiquidIL 是一款針對 Shopify Liquid 生態系統開發的高效能模板引擎,專注於執行速度與降低運行負擔。透過 Lexer(詞法分析器)、Parser(語法分析器)、IL(中間語言)、Optimizer(最佳化器)以及 Structured Compiler(結構化編譯器)組成的多階段管道,LiquidIL 成功消除了傳統解譯器的執行迴圈。它不進行動態的抽象語法樹 (AST) 遍歷,而是產生利用 YJIT 的原生 Ruby 程式碼,從而直接執行機器碼,徹底消除了虛擬機分配的瓶頸。這款工具專為在 Ruby 環境中需要高輸送量模板渲染、且對延遲與記憶體分配極為敏感的開發者所設計。
-
內建多階段最佳化管道,在編譯時執行常數摺疊 (constant folding)、死碼消除 (dead code elimination) 及部分內聯 (partial inlining)。
-
直接編譯為原生 Ruby,避免了標準過濾器對 method_missing 的依賴,實現直接調用 Ruby 方法。
-
提供進階快取機制,支援 RubyVM 指令序列 (ISeq) 二進位檔,可實現編譯後模板的快速序列化與還原。
-
支援多種執行模型,包括一次性渲染、預解析模板重複使用,以及產生獨立的 Ruby 模組。
-
內建環境感知渲染支援,具備部分模板 (partial templates) 的檔案系統整合與嚴格錯誤處理模式。
-
可使用 CLI 工具進行模板檢查、視覺化 IL 以及產生 Ruby 程式碼,以便進行效能分析與除錯。
-
引擎接收字串模板作為輸入,並使用類似 Hash 的物件進行變數範疇管理,保持與標準 Liquid 變數存取模式的相容性。
-
為了追求極致效能,建議使用 ISeq 二進位快取來儲存編譯後的模板,以跳過生產環境啟動時的解析步驟。
-
輸出通常為字串或緩衝區,輸入則由原始模板與上下文變數字典組成。
-
請注意,ISeq 二進位檔與特定的平台及 Ruby 版本綁定,部署環境需與編譯環境匹配以確保最佳相容性。
倉庫統計
- Star 數
- 17
- Fork 數
- 4
- Open Issue 數
- 3
- 主要語言
- Ruby
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年5月4日 上午01:09