Ruby 的新 YJIT 编译器已完成,使用 Rust 重新实现

去年 12 月,Ruby JIT 团队的成员提出,希望将 YJIT 代码库从 C99 移植到 Rust。虽然有不少开发者对此持保留意见,但这个项目最终得到了 Ruby 核心开发者以及创始人 Matz

去年 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 支持的每个平台上都得到了很好的支持。

关于作者: qwephp

.

为您推荐