导读:Ruby 4.0新近发布,看看它给开发者们带来什么新鲜的特性。
各位朋友,Ruby 4.0 于 12 月 25 日发布。这门编程语言延续了在圣诞节发布主要版本更新的传统,同时也是它重大的节日和值得庆贺的日子——诞生 30周年 。
Ruby4.0主要新增功能包括:一个名为 Ruby Box 的实验性隔离特性、名为 ZJIT 的全新即时编译器,以及经过大幅改进但仍处于实验阶段的 Ractor(用于并发编程)。
大多数编程语言的确切周年纪念日并不十分确定,Ruby 也是不例外。它的第一个公开版本是 0.95,发布于 1995 年 12 月 21 日,但是 1.0 版本直到 1996 年 12 月 25 日才正式发布。
我们根据 Ruby FAQ 中引用作者 Yukihiro Matsumoto(松本行弘,简称“Matz”)的描述,Ruby 由他本人发明,这是一种“真正的面向对象、易于使用的脚本语言”,是对 Perl 或 Python 的改进。
Ruby 是一门备受用户推崇的语言,但与 JavaScript、Python、Java 或 C++ 等主流语言相比,其使用率仍然较低。Stack Overflow 社区的最新调查显示,仅有 6.9% 的专业开发者使用 Ruby,高于 Dart 和 Swift,但低于 Kotlin 和 Rust。Ruby 的使用通常与 Rails 应用框架密切相关,而 Rails 拥有一些大型且具有影响力的企业或平台级用户,例如 Shopify 和 GitHub。
新的特性 Ruby Box 默认处于关闭状态,但可通过环境变量启用。Box 是一项重要的特性,它允许将类和模块等定义隔离到 Box 类中。Box 还能隔离实例变量和全局变量。这意味着不同版本的库可以共存于同一个应用程序中。这一特性最初名为 Namespace,但为了避免与现有的 Ruby 命名空间混淆,后来更名为 Box。
尽管Ruby Box的推出值得人们欢迎,但一些用户认为它尚未成熟。
“我认为Ruby::Box目前对隔离上下文的实现很差,而JRuby、TruffleRuby、V8等框架都已经具备这种能力。它们隔离性更好,支持并行处理(没有并行处理几乎毫无用处),而且语义模型更清晰。”一位开发者用户如此说道。
而另一位用户则坦白表示:“Ruby一直以来都有发布半成品,或无法使用新功能的传统。”
另一个典型例子是 Ractor,它最初在 Ruby 3.0 中发布,但至今仍未达到生产就绪状态。“我们计划明年取消其实验性状态,”发布说明中写道,这意味着大约在 2026 年进入生产状态。
Ractor,或称 Ruby Actor,支持并行运行。每个 Ractor 都会有自己的 GVL(全局虚拟机锁),用于防止 Ruby 代码在多个线程中并发运行。而 Ractor 本身则可以并行运行。作者松本行弘 Matz 指出,Ractor 使 Ruby 成为“真正的并发语言”,但最初发布时也附带警告,指出可能会出现破坏性变更。在 4.0 版本中,内部数据结构得到了改进,并引入了一个新类“以解决与消息发送和接收相关的问题”。
新的即时编译器 ZJIT 默认情况下并未启用。Ruby 编译器团队表示,它“比解释器快,但目前还不如 YJIT 快”,同时他们也指出“可能会出现崩溃和严重的性能下降”。尽管如此,它仍被描述为“一个伟大的全新基础”,最终将会带来回报。Ruby开发者们被邀请“敬请期待 Ruby 4.1发布”。
我们可以这样概括:
Ruby 4.0 版本承诺了很多,但真正能在生产环境中安全使用的功能却不算太多。尽管如此,Ruby 的用户仍会欣喜地看到,并发性和上下文隔离等关键领域得到了有效地改进。
作者:场长
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。