文章摘要
Ruby 4.0.0正式发布,主要引入两项新特性:实验性功能"Ruby Box"可通过环境变量启用,实现代码隔离;新增"ZJIT"即时编译器提升性能。该版本还包含多项改进。
文章总结
Ruby 4.0.0 正式发布
我们很高兴地宣布 Ruby 4.0.0 版本发布。本次更新带来了"Ruby Box"和"ZJIT"两项重要新特性,并包含多项改进。
核心新特性
Ruby Box(实验性功能)
- 通过环境变量
RUBY_BOX=1启用 - 提供定义隔离功能,可隔离以下内容:
- 猴子补丁
- 全局/类变量修改
- 类/模块定义
- 加载的原生/Ruby库
- 主要应用场景:
- 测试用例隔离
- 并行运行Web应用实现蓝绿部署
- 依赖更新评估
- 作为底层API实现高级"包"功能
ZJIT(新一代JIT编译器)
- 需要Rust 1.85.0+编译支持
- 通过
--zjit参数启用 - 当前性能:解释器 < ZJIT < YJIT
- 目标是在Ruby 4.1中实现生产环境就绪
Ractor改进
- 新增
Ractor::Port类优化消息传递 - 引入
Ractor.shareable_proc共享Proc对象 - 性能优化:
- 减少全局锁竞争
- 降低CPU缓存争用
- 计划明年移除"实验性"标签
语言变化
*nil不再调用nil.to_a- 逻辑运算符支持行首续行语法
- 错误提示增强:ArgumentError显示调用方和定义方代码片段
标准库更新
- Pathname和Set升级为核心类
- 新增win32-registry默认gem
- 多个默认gem版本更新
- CGI库精简为仅提供转义功能
- Net::HTTP移除自动设置Content-Type行为
兼容性变更
- 移除Ractor相关废弃方法
- 弃用
ObjectSpace._id2ref - 移除
Process::Status的位操作方法 - 错误回溯信息格式优化
性能优化
Class#new性能提升- GC堆分区独立增长
- 大对象页扫描优化
- 实例变量访问加速
- 多种核心对象写屏障保护
JIT改进
- ZJIT:实验性方法编译器
- YJIT:新增内存大小和调用阈值选项
- 移除RJIT支持
平台支持
- Windows平台最低要求VS2015
下载信息
提供tar.gz(23.9MB)、tar.xz(18MB)、zip(29.2MB)三种格式,包含完整校验信息。
Ruby简介
由松本行弘(Yukihiro Matsumoto)于1993年创建的开源动态语言,广泛应用于Web开发等领域。
(注:本文对原文进行了结构化精简,保留了核心技术特性和重要变更,删减了过于详细的版本更新记录和次要功能说明,总字数控制在1000字左右)
评论总结
以下是评论内容的总结,平衡呈现不同观点:
- 节日祝福与感谢(5条评论)
- "It wouldn't be Christmas without a new version of Ruby"(aaronbrethorst)
- "This really makes Christmas festive...Thank you Matz and team"(desireco42)
- 对新功能的兴趣(3条评论)
- "Ruby::Box looks useful"(nish__)
- "the ruby::box thing looks pretty interesting...this is pretty nifty too!"(maz1b)
- 技术特性讨论(2条评论)
- "Ractor is still work in progress while Fiber has matured"(ksec)
- "Does it support typing yet?"(ergocoder)
- 语言比较与转向(2条评论)
- "Python has won for me: fastapi, pytorch..."(RomanPushkin)
- "I've moved away due to the lack of typing"(ergocoder)
- 情感表达(4条评论)
- "Still love Ruby deeply"(mikestorrent)
- "My best Christmas gift <3"(ekvintroj)
关键分歧点: - 支持者赞赏节日传统和语法优雅(7条正面) - 批评者指出类型系统缺失等不足(2条) - 1位用户明确表示已转向Python生态系统
注:所有评论均无评分数据,无法评估认可度。Ruby 4.0的发布主要引发了对新功能(如Ruby::Box)、并发模型(Fiber/Ractor)和类型系统的讨论,同时伴随强烈的情感共鸣。