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竞争,整体提升了并行性能。
好文章,需要你的鼓励
今天讲的出海案例是三星医疗,一家从宁波起家做智能电表的A股公司,旗下子公司三星瑞典签下荷兰最大区域电网运营商Enexis的变压器框架合同,金额1.17亿欧元,约合9.49亿元人民币。
香港大学团队开发的Utonia首次实现了跨领域3D点云数据的统一处理,通过因果模态屏蔽、感知粒度重定标和RoPE增强位置编码三大创新,让一个AI模型就能理解室内扫描、户外雷达、工业设计等各种3D数据。该方法不仅在多个基准测试中超越专门模型,还在机器人操作、空间推理等应用中展现出色性能,为未来空间智能技术发展奠定重要基础。
人工智能正推动计算需求激增,但电信运营商面临结构性障碍:专有技术控制着其无线接入网络。开放RAN旨在打破这种控制,为创新开门。Stackpane首席执行官指出,推理工作负载更加计算密集,代理AI框架需要更严格的策略控制。RAN智能控制器仍被诺基亚等少数供应商垄断。电信运营商规模有限且监管严格,难以实现技术部门的规模经济和快速创新。
Physical Intelligence团队发布了FAST技术,这是一种全新的机器人动作学习方法。该技术通过频域压缩解决了传统方法在高频精细动作上的训练难题,将训练效率提升5倍。FAST首次实现了机器人在未见环境中的零样本操作,能够完成衣物折叠等复杂任务,为通用服务机器人的发展奠定了重要基础。