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竞争,整体提升了并行性能。
好文章,需要你的鼓励
英国国家医疗服务(NHS)正将无人机纳入常规医疗物流体系。自今年2月起,无人机每天在雷恩斯公园和圣乔治医院之间运送血液等诊断样本,飞行仅需3分钟,比公路运输快约85%,且碳排放减少高达98%。目前已有逾2000名患者受益。NHS计划将该服务扩展至圣赫利尔、克罗伊登等多家医院,最终惠及约180万名患者。该网络由英国医疗初创公司Apian与谷歌旗下Wing合作运营。
AgentLens是Explyt公司联合俄罗斯学术机构开发的AI编程助手评测基准,通过分析完整人机交互轨迹而非仅看最终结果,从五个维度评估代码智能体的真实表现。
边缘AI计算厂商Aetina宣布,将在其DeviceEdge AIE-KT风冷系列和新款AIE-PT无风扇平台上支持英伟达全新Jetson T3000和T2000模块。T3000基于Blackwell GPU,最高提供865 FP4 TFLOPS算力,功耗70W;T2000则提供400 FP4 TFLOPS,面向视觉AI代理和自主移动机器人等场景。两款模块预计2027年第一季度上市,支持Nemotron、Cosmos 3等英伟达AI软件生态。
韩国梨花女子大学提出Splash框架,通过识别AI模型中的"休眠参数"并只在其中训练触觉能力,让小型多模态AI在学会感知材质触感的同时,完整保留原有视觉语言推理能力。