Ruby 1.8.8 及通向 Ruby 1.9.1 之路

  • Werner Schuster
  • 张龙

2009 年 3 月 1 日

话题:Ruby编程语言语言 & 开发

随着Ruby 1.9.1的发布,Ruby 1.9 也迎来了自己的稳定版,但很多人仍然不愿意转到该版本上,因为缺少与1.9 兼容的库工具支持

尽管Ruby 1.8.7 已经出来一阵了,但在未来一段时间内还是会继续维护 1.8.6的。Ruby 1.8.7 引起了不少争执,因为它移植了 1.9 的一些特性而有些改变会产生问题(相对于 1.8.6),这也导致了JRuby 团队目前放弃了对 Ruby 1.8.7 的支持(虽然这可能会发生变化)。

最近人们又重新开始了关于 1.8.x 分支未来的争论,部分原因在于 Ruby 1.8.8 将于今年发布。

在这场争论中, Ruby 1.8.7+ 的主要维护者Akinori MUSHA公布了 1.8.8 的计划:

对于我们来说,1.9 才是未来而 1.8.6 及之前的版本都已成为尘封往事了。1.8.7 也成为了过去,但如果你觉得没那么难的话可以继续对 1.8.7+ 提供支持,这样的话那些还不准备迁移的用户会很感激的。在 Ruby 1.8.8 中加入了兼容性语法,这样我们就可以在单独的源代码文件中轻松编写适合于 1.9 和 1.8.8+ 的代码而无需放弃 1.9 的那些优化了。

如果你仍需编写 1.8.6 的代码但打算将来支持 1.9,那么请使用警告选项(-w)在 1.8.7 和即将到来的 1.8.8 下运行程序。

尽管官方的 1.8.7 具有一些来自于 1.9.1 的迁移性特性,但我们还有其他方式来利用 1.9.1 的那些特性。其中 1.9.1 中的 Fibers 就是非常有用的,它被用来为 Ruby 的数据库适配器进行一些重要的可伸缩性改进NeverBlock 通过向库中增加“Fibers”来支持 1.8.x

目前该移植以 1.8.6_p287 和 1.8.7_72 补丁的形式发布

在 Kickball Labs 中,Aman Gupta(http://github.com/tmm1)和我(http://github.com/ice799[Joe Damato] 正在忙于 Ruby 1.8.{6,7}的 Fibers 实现。其 API 兼容于 Ruby 1.9,但除了“transfer”方法,因为当前尚未实现该方法。凭借该补丁,你可以让 mysqlplus 和 neverblock 与 Fibers 协同工作。

查看英文原文:Ruby 1.8.8 and the Road to Ruby 1.9.1

Ruby编程语言语言 & 开发