Rubinius 2.0 发布,实现了 Ruby 2.1

  • Mirko Stocker
  • 马德奎

2013 年 10 月 14 日

话题:RubyDevOps语言 & 开发

Rubinius 团队刚刚宣布,Rubinius 2.0发布。Rubinius 的上一个版本(1.2.4)已经发布两年多了,支持 Ruby 1.8.7。其后,Ruby 1.8 被弃用,Ruby 开发人员强烈要求从 1.9 升级到 2.0。

按照计划,Rubinius 2.0 完全支持即将到来的 Ruby 2.1,其发行公告中有如下说明:

在 2.0 中,Rubinius 重新恢复了对 Ruby 未来版本的重点支持。Rubinius 2.0 预期兼容 Ruby 2.1。而 MRI 尚未发布 Ruby 2.1,Rubinius 只能随其更多特性的最终完成而不断改善自身的兼容性。

从今往后,Rubinius 的版本发布周期将大大缩短。新版本计划每周发布一次:

我们转而采用这一发布过程是为了把更新尽快地传递到开发人员手中。不管我们做了多少工作,总有更多的工作要做。一个新版本看上去似乎永远不会完成。每个版本都要经历痛苦的纠正过程。因此,我们遵从了下面的建议,“如果某件事是痛苦的,那么把它推到前面,并通过工作来减少疼痛。” Rubinius 2.0 对 Ruby 2.1 的兼容可能会有 Bug。[……]

我们的目标是,从 3.0 开始构建 Rubinius 内核的语义版本。在从 2.x 向 3.0 过渡的过程中,在引入破坏性更改时,我们会非常小心,但如果那样做的好处超过风险,我们就会去做。

Rubinius 2.0 在多线程支持方面取得了很大的进展。它带来了一个虚拟机,用于运行由编译器生成的字节码。它还实现了一个即时(JIT)编译器,以获得更快的速度(目前速度提升了 2 到 4 倍,但他们希望进一步提高)。因为 Rubinius 不受全局解释器锁(GIL)的限制,而且实现了原生线程,所以 Ruby 代码能够利用多个内核和 CPU。这也有利于垃圾收集器,它可以部分地运行,而且可以与正在执行的代码并行。关于这一点,Rubinius 的 Brian Shirai 在接受 Jesse Storimer 采访时详细描述了更多的细节。

InfoQ 获得了与 Brian 谈论这一新版本的机会。Rubinius 2.0 承诺兼容 Ruby 2.1,而后者尚未最终完成。你们已经实现了 Ruby 2.1 的哪些内容?

我们正设法跟踪 MRI 为推出 MRI 2.1 所进行的开发工作。MRI 团队已经多次承诺,Rubinius 2.0 本质上向后兼容 2.0 和 2.1。我们大量翻阅了 2.0 的规范,从中基本上可以看出,与 1.9 相比,2.0 的行为没有发生很大的改变,但也有若干行为发生了变化的情况。

简而言之,我们打算在 2.1 发布的时候尽可能多地支持 2.1。在此期间,如果有严重的冲突,我们将继续 2.0 的行为,直到 2.1 发布。

InfoQ:Rubinius 2.0 支持 Windows 吗?

Windows 肯定在我们想要支持的清单上。但是,我们需要先看看,如果有人迫切需要这种支持,我们才会对此投入稀缺的资源。

InfoQ:现有应用程序和框架可以很好地与 Rubinius 一起工作吗?例如,Rails 4 能够运行在 Rubinius 上吗?

关于 Rails 4,有一句广为人知的话,它“喜欢”Ruby 2.0。我们预计 Rails 4 能够在 Rubinius 上运行。如果不能,那很可能是 Rubinius 的 Bug(但也可能是 Rails 的 Bug)。

Rubinius 2.0 可以从rubini.us上下载。我们很乐意听到开发人员的使用体验!

查看英文原文:Rubinius 2.0 Release Implements Ruby 2.1

RubyDevOps语言 & 开发