Ruby 4.0.0发布:引入ZJIT编译器和Ruby Box隔离技术

Ruby 4.0.0正式发布,这是面向对象编程语言Ruby的最新版本。该更新引入了全新的即时编译器ZJIT和实验性的"Ruby Box"功能,用于进程内类和模块的隔离。Ruby Box为代码、库和补丁提供独立空间,支持测试隔离、蓝绿部署等场景。ZJIT作为YJIT的下一代编译器,性能优于解释器但尚未达到YJIT水平。此外,并行执行机制Ractor也得到改进。

Ruby 4.0.0已正式发布,这是面向对象解释型Ruby编程语言的最新版本。此次更新的亮点包括全新的即时编译器ZJIT,以及用于进程内类和模块分离的实验性"Ruby Box"功能。

Ruby 4.0.0于2025年12月25日发布,用户可从ruby-lang.org下载使用。

Ruby Box隔离功能

Ruby Box是一项全新功能,旨在为Ruby进程提供独立空间,实现代码、库和monkey代码的隔离。Ruby Box的预期应用场景包括:在隔离环境中运行测试用例,当测试用例使用monkey补丁覆盖某些功能时保护其他测试;在应用服务器的Ruby进程中并行运行Web应用盒子,实现蓝绿部署;并行运行Web应用盒子,通过检查响应差异在特定时间段内评估依赖更新。需要注意的是,Ruby Box目前仍处于实验阶段,存在一些已知问题。

ZJIT即时编译器

Ruby 4.0.0还引入了ZJIT,这是一个新的即时编译器,旨在成为YJIT的下一代产品。ZJIT内置于Ruby的YARV参考实现中,性能优于解释器,但尚未达到YJIT的速度水平。开发者可以尝试使用ZJIT进行实验,但暂时不建议在生产环境中部署。建议用户关注Ruby 4.1版本中的ZJIT改进。

Ractor并行执行优化

在Ruby 4.0.0中,Ruby的并行执行机制Ractor也得到了显著改进。新增了Ractor::Port类,用于解决消息发送和接收相关问题,以及Ractor.shareable_proc功能,简化了Ractor间Proc对象的共享。在性能方面,Ractor的许多内部数据结构都得到了优化,减少了全局锁的竞争,从而实现更好的并行性。Ractor现在共享的内部数据更少,在并行运行时减少了CPU竞争。

其他功能改进

Ruby自1995年首次发布以来不断发展。Ruby 4.0.0的其他新功能包括:

*nil不再调用nil.to_a,与**nil不调用nil.to_hash的行为保持一致。

针对核心类,新增了Array#rfind方法,作为array.reverse_each.find的更高效替代方案。

Enumerator.produce现在接受可选的size关键字参数,用于指定枚举器大小。

Kernel#inspect现在会检查#instance_variables_to_inspect方法的存在,允许控制在#inspect字符串中显示哪些实例变量。

Q&A

Q1:Ruby Box隔离功能有什么用途?

A:Ruby Box为Ruby进程提供独立空间,实现代码隔离。主要用途包括:在隔离环境中运行测试用例保护其他测试、在应用服务器中并行运行Web应用实现蓝绿部署、并行评估依赖更新等。目前仍处于实验阶段。

Q2:ZJIT编译器性能如何?可以用于生产环境吗?

A:ZJIT是新的即时编译器,性能优于解释器但尚未达到YJIT水平。开发者可以进行实验,但不建议在生产环境中部署。建议等待Ruby 4.1版本中的ZJIT改进。

Q3:Ruby 4.0.0对Ractor并行执行做了哪些改进?

A:主要改进包括:新增Ractor::Port类解决消息传递问题、添加Ractor.shareable_proc简化对象共享、优化内部数据结构减少全局锁竞争、减少内部数据共享降低CPU竞争,整体提升了并行性能。

来源:InfoWorld

0赞

好文章,需要你的鼓励

2026

01/12

08:19

分享

点赞

邮件订阅