2025年12月25日,Ruby4.0发布。
Ruby4.0新加入了“Ruby Box”和“ZJIT”以及其它很多改进。
Ruby Box是一个新的(实验性)功能,用于在定义之间提供隔离。当指定环境变量 RUBY_BOX=1 时,会启用Ruby Box。对应的类是 Ruby::Box。
加载到box中的定义在box内是隔离的。Ruby Box可以隔离/分离monkey补丁、全局/类变量的更改、类/模块定义,以及已加载的本地/Ruby库与其他 box的相互影响。
预期的使用场景包括:
在box中运行测试用例,以在测试用例使用猴子补丁覆盖某些内容时保护其他测试不受影响
在Ruby进程中并行运行web应用box,以在应用服务器上执行蓝绿部署
并行运行web应用box,通过使用Ruby代码检查响应差异,在一定时间内评估依赖更新
作为实现某种“包”(高层)API 的基础(低层)API(尚未设计)
ZJIT是一个新的即时编译器(JIT),是YJIT 的下一代版本。要使用ZJIT支持构建Ruby,你需要Rust 1.85.0或更高版本,并且当指定 --zjit 时,ZJIT才会启用。
我们正在为Ruby构建一个新的编译器,因为我们希望既提高性能上限(更大的编译单元和 SSA IR),又鼓励更多外部贡献(通过成为一个更传统的方法编译器)。
ZJIT比解释器快,但还没有YJIT快。我们鼓励你尝试ZJIT,但目前可能先不要在生产环境中部署。敬请期待 Ruby 4.1 ZJIT。
详见官方网站:https://www.ruby-lang.org