主要观点:ZJIT 已并入 Ruby,它是一个新的即时(JIT)Ruby 编译器,由 YJIT 的编译器团队构建,与 YJIT 有多处不同,如使用高级 SSA 中间表示、一次编译整个方法等。当前 ZJIT 处于早期开发阶段,架构上从接收 YARV 字节码到构建 IR、优化并生成机器码,包含 YARV 的相关介绍、HIR(高级中间表示)、LIR(多平台汇编器)和 Assembly(汇编)等阶段,未来计划实现侧出口等功能以运行 Ruby 测试套件和其他应用并进行优化。
关键信息:
- ZJIT 并入 Ruby,开发者包括 Maxime Chevalier-Boisvert 等,自今年初开始工作。
- ZJIT 与 YJIT 的不同之处,如 IR 表示、编译方式、类型分析等。
- ZJIT 架构流程,从 YARV 字节码到 HIR、LIR 再到 Assembly。
- 未来计划实现侧出口,以运行测试套件和应用并进行 profiling 和优化。
重要细节: - YARV 是栈机,有局部变量,
opt_plus
有快速路径和通用操作。 - HIR 像图,有基本块、指令等,
add
函数在 HIR 中的表示及优化。 - LIR 是多平台汇编器,有更明确的细节,如寄存器操作等。
- 汇编中展示了
GuardType
和FixnumAdd
的使用及效果。 - 目前 Ruby 3.5 将同时包含 YJIT 和 ZJIT,未来会继续改进 ZJIT。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。