Ruby VM 综述:MacRuby 0.5 Beta 2 增加 AOT 工具,Rubinius 0.13 发布

阅读数:326 2009 年 11 月 24 日

话题:Ruby语言 & 开发架构

MacRuby 0.5 有了新的动作——发布了MacRuby 0.5 Beta 2,新版本带来了很多改进,提升了与 RubySpec 的兼容性。

Ahead of Time(AOT)编译也得到了改善

macrubyc 默认会生成动态链接 MacRuby.framework 的可执行文件,这样会大大减小文件的大小。为了构建完全独立的可执行文件,必须传入 -static 参数。

有了新的工具,编写独立的、自包含的应用程序更加容易了:

现在有一个名为 macruby_deploy 的新工具,它能帮助你部署 MacRuby 应用程序。macruby_deploy 提供了选项提前编译应用程序的 Ruby 代码,还能将 MacRuby 框架放入应用程序中。这样一来,你的应用程序就能部署了,因为进行了预编译,其中的代码都被隐藏了。

InfoQ 之前介绍了 MacRuby 0.5 的一些大变化,包括去除 GIL、新的基于 LLVM 的 VM 等。

另一个 Ruby VM 也发布了新版本:Rubinius 0.13。其中的一些亮点包括默认开启 JIT 和一个全面修正过的编译器及解析器

新增的 QueryAgent,将来在连接运行中的系统时可能非常有用。它是一个工作在 Rubinius VM 内部的系统,监听可配置的端口,等待连接。客户端连接到系统中,查询特定状态或运行时信息;目前似乎只能获取配置项。系统使用BERT来对连接中传输的数据进行编码。想要试用 QueryAgent,用/bin/rbx -Xagent.port=$PORT_NUMBER(选择一个可用的 $PORT_NUMBER)来运行 Rubinius。该协议还没有正式文档,但根据其实现还是能对它所支持的东西有所了解

要试用 Rubinius,可以从 Github 上获取Rubinius 0.13。运行./configurerake进行编译;要构建带有 LLVM 的 Rubinius,用./configure --enable-llvm代替./configure即可,它会处理 LLVM 的获取及构建的。

想知道 Rubinius 与 Ruby 1.8.7 比较的结果,可以通过./bin/bm运行全套 MRI 及 Rubinius 的基准测试。

查看英文原文:Ruby VM Roundup: MacRuby 0.5 Beta 2 Adds AOT Tooling, Rubinius 0.13 Released