去年 12 月,Ruby JIT 团队的成员提出,希望将 YJIT 代码库从 C99 移植到 Rust。虽然有不少开发者对此持保留意见,但这个项目最终得到了 Ruby 核心开发者以及创始人 Matz 的批准。
昨日,负责此项目的开发者表示已完成了使用 Rust 实现的 Ruby YJIT 编译器,可有效取代现有的 C 版本,目前正在等待上游合并。
据介绍,Rust 版本的 YJIT 编译器与 C 版本具有相同的水平,因为它通过了所有的 CRuby 测试,也能够运行所有 YJIT 基准测试,并且性能与 C 版本基本一致(它以相同的方式运行,并且基本生成了相同的机器代码)。此外,开发团队还加入了一些设计改进,例如更细粒度的常量失效机制,预计这将在 Ruby on Rails 应用程序中发挥巨大作用。
默认情况下,YJIT 不会被编译,也不需要 cargo/rustc。如果 YJIT 在 dev 模式下构建,则cargo
用于获取开发依赖项,但在 release 中构建时,cargo
不是必需的,只需要有rustc
。目前 YJIT 要求使用 Rust 1.60.0 或更新的版本。
按照计划,Rust YJIT 将被编译并包含在 Ruby 3.2 版本的系统包和编译二进制文件中。开发团队称,预计不会出现任何重大问题,因为 Rust 在 YJIT 支持的每个平台上都得到了很好的支持。
猜你喜欢:暂无回复。