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竞争,整体提升了并行性能。
好文章,需要你的鼓励
穆拉蒂时隔18个月首次接受重大媒体采访,介绍其创立的Thinking Machines Lab正在开发的"交互模型"。该模型能以200毫秒间隔处理音频、文本和视频流,捕捉人类交流中的中断、修正和停顿。她还谈及OpenAI"政变周"经历,强调行业决策权过于集中的担忧,并回应了公司近期研究人员离职问题,表示这是初创实验室的正常波动。
STATE16研究院这篇综述发现,物理AI系统存在"静默失效"风险——AI以高度自信执行基于错误世界信息的动作,却不触发任何报警,并提出在AI输出与物理执行之间建立独立授权层的框架。
本期《Quick Charge》播客涵盖多个热点话题:特斯拉疑似试图删除FSD欺诈相关证据以规避巨额赔付;卡特彼勒持续推进建筑领域电气化布局;住宅太阳能30%税收抵免即将到期。此外,嘉宾Tom Pacheco就高压系统与电池技术培训展开探讨,强调电动车技术人才培养的紧迫性。节目同时提醒有意安装太阳能的用户尽快行动,可通过EnergySage平台比较多家安装商报价。
UIUC与微软联合研发的OpenWebRL框架让4B小模型仅凭400条初始数据,通过在真实网站上边做边学的强化学习方式,在网页智能体基准上超越了用27万条数据训练的竞争对手。