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