最新消息:关注人工智能 AI赋能新媒体运营

Ruby 4.0 引入了 Ruby Box 隔离机制与 ZJIT 即时编译器

科技资讯 admin 浏览

编程语言Ruby开发团队按惯例在每年圣诞节发布更新,推出Ruby 4.0.0。这个主要版本重点聚焦两项新功能:实验性的Ruby Box隔离机制,以及新一代即时编译器ZJIT。此外,Ruby持续推进Ractor并行执行机制,并同步调整部分语言行为与标准库配置。

Ruby 4.0新增的Ruby Box核心概念是隔离。官方描述该功能可用于分离各种定义的影响范围,包括猴子补丁(Monkey Patch)、全局变量与类变量的修改、类与模块定义,以及加载的原生或Ruby库。Ruby Box目前属于实验性功能,其提供了一个基础层API,让开发者能够将原本容易相互污染的修改限制在各自的作用域内,从而降低副作用扩散的风险。

官方也指出了Ruby Box的预期用途,最直观的是测试隔离。当测试需要模拟特定场景而大量修改行为时,隔离机制可显著降低对其他测试的干扰。另一个被提及的方向是在同一进程中并行运行多个Web应用实例,用于蓝绿部署;或在更新依赖包期间,让新旧版本并行运行一段时间,再通过Ruby程序对比响应差异,帮助团队评估升级风险。官方同时提到,Ruby Box也可能成为未来更高层封装机制的基础,但目前尚未确定。

Ruby 4.0引入了ZJIT即时编译器。ZJIT是下一代新编译器,目标一方面提升性能上限,包括支持更大的编译单元和SSA形式的中间表示;另一方面也希望采用更传统的过程式编译器设计,吸引更多外部贡献者参与。

不过,Ruby团队对ZJIT的成熟度持保守态度。官方指出,尽管ZJIT目前比解释器更快,但仍不及YJIT,暂不建议直接用于生产环境,并预告Ruby 4.1将继续改进ZJIT。

官方也持续强化Ractor机制。Ruby 4.0新增了Ractor::Port类,为Ractor之间的消息发送与接收提供新的同步通信接口,同时提供了更简便的方式在Ractor间共享Proc对象,例如Ractor.shareable_proc。在性能方面,Ruby调整了多个内部数据结构,以降低全局锁(Global Lock)相关的锁竞争,并减少Ractor并行执行时的CPU缓存竞争,从而提升并发能力与整体执行效率。

Ractor自Ruby 3.0以实验性功能登场,其设计目标是在同一个Ruby程序内,让多段Ruby代码更有效地利用多核进行并行计算。官方也表示希望在2026年移除其实验性标记,表明并行化路线仍在持续推进中。