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


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


相关文章

2023-03-11

一个关于合并 RJIT 的 PR。 据介绍,RJIT 是新的 JIT 编译器,用作 MJIT 的替代实现。主要特性如下: RJIT 使用纯 Ruby 汇编程序生成原生代码 MJIT 在运行时需要 C 编译器,YJIT 在构建时需要 Rust 编译器。RJIT 不需要它们

2022-12-26

使得大多数 Regexp 匹配(实验中大约为 90%)在线性时间内完成。 对于 3.2.0 预览版本的用户:此优化可能会消耗与每个匹配的输入长度成比例的内存。预计不会出现实际问题,因为此内存分配通常会延迟,并且正常的 Regexp 匹配

2022-12-23

量,而且目前也没有关于 Rust 发展方向的策略。 重写编译器 Nick 认为,Rust 目前的架构已经难以支持实现增量编译、并行编译等功能。重新开始则可以使用上更多的技术,团队可以通过这种机会认真优化编译时间,简化未

2023-01-19

实践创建新项目并与平台整合,或是发布生产构件供店家使用。不过 Shopify CLI 开发团队发现,对构建 Shopify 应用程序的开发者来说,他们在使用 CLI 上一直存在部分体验问题,因此决定重新审视 CLI 的开发语言选择,希望做出一

2022-07-15

语言运行时和工具 Rocky Linux 9 拥有许多最新的运行时和编译器,包括 GCC 11.2.1、LLVM(13.0.1)、Rust(1.58.1)和 Go(1.17.1)。 Rocky Linux 9 有更新的开发者工具链版本,包括 GCC(11.2.1)、glibc(2.34)和 binutils(2.35)。GCC 编译器的

2022-05-24

器-ppp 打开 vSwitch:networkmanager-ovs 新功能和值得注意的新软件包 修复了使用控制台将驱动程序编译为模块时不显示引导输出的问题 OpenRC 输出会显示在 VirtIO 串行控制台上。 SDL 1.2 迁移到 SDL 1.2 兼容 旧的 sdl 包 (SDL 1.2)

2022-09-30

ature 最好以自适应的方式实现,如果在系统上检测到 Rust 编译器,则 Kconfig 将启用 Rust 支持,并继续构建任何假定的 Rust 内核代码,以至少查看其是否正确构建。 2020 年 LPC (Linux Plumbers Conference) 大会上,内核开发者基本达成共

2022-12-17

现在是,将来也是他们在构建现代商业的服务器端组件时使用的首选工具。 而对于系统编程,例如编写高性能网络服务器,或使用“原生”代码来扩展 Ruby 而不是定义业务逻辑,Shopify 开发者历来使用包括 C 和 Go 在内的语言。

2022-10-15

规则并不适合 casual user。  3、喜欢:你可以告诉 Rust 编译器该做什么 一些开发人员将 Rust 所需的所有额外细节和模板视为优势。它让他们可以 inject hints,使编译器更容易找出正在发生的事情并捕获任何潜在的错误。华丽的

2022-07-29

GCC 指导委员会本月批准了 GCC Rust 前端,为 GNU Compiler Collection 加入 Rust 语言支持。目前第一个正式补丁系列已提交审核。 Herron Philip 在周三提交了"Rust frontend patches v1",这是由四个补丁组成的 GCC Rust 前端初始代码。他在 gcc-p

2022-10-09

Rust 的发展正如火如荼;其受欢迎程度日益高涨、贡献者也越来越多,同时还被应用于一些重要领域。譬如,得到 Linus Torvalds 的认可,初始的 Rust 基础设施已被合并到 Linux 6.1;以及在 Android、Windows、Amazon Web Services 和 Meta

2021-12-07

处于排名后半部分,Python 甚至不能在 24 小时截止时间内完成斐波那契任务。 综合最新的测试结果能够看出,Python 和 Perl 在多项测试中依旧排名垫底,虽然 Ruby 并没有倒数第一的测试成绩,但在多项测试中也均排名靠后

2022-03-24

发人员认为这些语言具有有用、维护良好的库;并且易于使用且功能强大,使它们更易于编程。 Rust、Swift、Scala、R 和 Objective-C 则排名靠后,因为受访者认为它们更复杂且“overwhelming”,一些开发人员表示他们“使用它们的经

2022-09-20

始新工作, 优先考虑工具、库和非技术工作以及语言和编译器, 优先考虑影响较小、成本较低的工作,这些工作总体上可能会产生很大的影响(超过大型、迷人的工作)。 “与这一挑战相关的是在面对增长时保持 Rust 的