Ruby 编程语言的创建者和首席设计师 Yukihiro Matsumoto(松本行弘)近期在某演讲中分享了 Ruby 3 的一些情况。
原本 Ruby 3 计划在东京奥运会前夜发布,但奥运会被推迟到 2021 年,所以一些核心开发者想知道 Ruby 3 是否也会顺理成章地推迟一年发布。讨论后最终还是决定今年发布,并且现在定于 12 月 25 日。
“我们决定今年发布 Ruby 3,因为作为开源社区,我们必须前进。我们必须继续前进,开源社区通常不能停止发展,否则就是等死……”
松本表示,过去四五年一直在谈论 Ruby 3 的未来,但是一直也没见发布,不过今年是真的会在 12 月 25 日圣诞节推出 Ruby 3。在圣诞节发布 Ruby 升级是社区的一项传统。
接着松本分享了所有编程语言面临的困境:升级与不升级的矛盾。在应用运行稳定的基础上,如果大改语言,那么就会带来艰难升级的危险,Python、PHP 与 ECMAScript 都是很好的例子,它们的社区花了许多年才能接受这些变化。
使用 Python 3,社区花了十多年的时间;PHP 6 甚至被取消了,直接从 PHP 5 开始创建 PHP7;EMCAScript 4 也被取消了。
松本解释说,如果不做出改变,人们可能会离开社区,而如果升级到更高版本则会带来太多痛苦,他们也可能会离开社区。
这种进退两难的情况可能是每个编程语言面临的困境,不过松本觉得这种时候更应该向前:“因此,正如我所说,设计一种语言很困难,但是无论如何我们都必须向前迈进,以创造未来。”
同时,在这种情况下,保持兼容性是很重要的。松本为 Ruby 3 明确了三个具体的目标:快速、并发与准确。“使 Ruby 更快,并使 Ruby 程序员更高效”。
为了使 Ruby 更快,开发团队将从改进其即时编译器(JIT)开始;为了实现并发,将避免使用其它语言的解决方案,诸如 ECSMAScript 7 添加了带有关键字 async 和 await 的控制机制。
Ruby 3 会改为实现其期待已久的异步 i/o fiber,作为控制异步线程的更好的方法。fiber 之间的上下文切换速度很快,因此性能会更高。
让 Ruby 更加准确的方法是优化早期检查错误,主要靠类型分析器实现,它将生成 Ruby 签名,Ruby 3 将为其核心库提供类型签名,可用于类型检查以及增强将来的 IDE。
松本还介绍了 Ruby 3 将带来的三个新语法特性。第一个是便捷的模式匹配语法:
第二个新特性允许将值分配给等号右侧的变量,“这在某些情况下非常方便。”
第三个新特性是为块参数编号:
不过松本也解释,Ruby 3 语法上不会有太大变化,稳定性很重要,他们将专注于改进 Ruby 的现有支持工具,例如用于语言服务器协议的 Solargraph、用于静态类型检查的 Sorbet,以及 Rubocop 的代码 linter。
最后松本提及目前他正在考虑的“较小的 Ruby”这一疯狂的想法,“我正在考虑使用较小的 Ruby 子集,该子集更简单并且更严格,并希望更快或更容易进行优化。”这一子集是向下兼容的,也就是说,它可以运行在所有当前版本的 Ruby 中。
本文消息与图片来自 thenewstack