ZJIT 是一个新的即时编译器(JIT),由与开发 YJIT 的同一编译器团队构建到参考 Ruby 实现 YARV 中,该工具目前已合并到 Ruby。
相关阅读
Ruby 引入新 JIT 编译器 RJIT,替代 MJIT
Ruby 的新 YJIT 编译器已完成,使用 Rust 重新实现
ZJIT 在多个方面与 YJIT 有所不同:
从高层次来看,ZJIT 接收 YARV 字节码,构建中间表示(IR),进行一些优化,并生成机器码。简化来说,它看起来像这样:
以下示例为 Ruby 程序通过完整的编译器管道:
# add.rb
def add(left, right)
left + right
end
p add(1, 2)
p add(3, 4)
(文/开源中国)