Rubinius正在赢得越来越多的支持,许多Ruby VM 的开发者都坚信它前途不可限量。
理由之一是它的模块化设计及其展现内部结构的方式。对于新上手的开发人员而言,Rubinius 的内省机制(introspection)是一项很体贴的设计。在Ruby 中,我们已经可以很方便得通过诸如 obj.methods
(返回obj
的方法列表)的方式观察 Ruby 类。而 Rubinius 则做得更上一层楼,你甚至可以访问代表代码数据结构的抽象语法树(Abstract Syntax Tree,AST)。Rubinius 使用 ParseTree,通过标记和嵌套列表展现其结构。例如,下列代码:
puts "Hello, Rubinius. You rock my world!"
将被解释成:
[:fcall, :puts, [:array, [:str, "Hello, Rubinius. You rock my world!", 0]]]
如果你觉得这看上去象 LISP 或者 Scheme 的代码,没错,这不是巧合。这种称为 s- 表达式(s-expressions,即 symbolic expressions)的表现形式也被这些语言用来展现代码。
这种语法树形式的好处在于其可读性要高于另外一种由在内存中一堆链接在一起的对象组成的数据结构。在创建 AST 的时候这种优势则更为明显,例如,用于使用 AST 的测试用例。
研究 ParseTree 有助于 Rubinius 的开发。现在已经有一些工具基于 ParseTree 了。 Ruby2Ruby 将一个 ParseTree AST 转成 Ruby 源代码,这样就可以看到运行时生成的 Ruby 代码,这一点很有用。 Flog 是一个新工具,它可以分析代码并评估其质量。其它的一些基于 ParseTree 的工具像 Ruby2C 或 Heckle ,可以提供类似的检查功能。在 Ambition 中可以看到另外一种使用 ParseTree 的方式,它通过利用 Ruby 代码的 ParseTree 表现形式创建数据库以及其它数据源的查询语句。
Brian Ford深入探讨了Rubinius,例如得到ParseTree 输出。文章的话题中包括用于审视Rubinius 代码和相应底层字节码的ParseTree AST 的工具。有了这些,Rubinius 的开发新手可以迅速了解外表下发生的一切,以及Ruby 源代码在用于执行时被转换成什么样子。有关更多最新的细节以及命令行选项介绍可以参考Rubinius 的Wiki:命令行选项。
对于所有对Rubinius 源代码感兴趣的人,Sam Aaron 有一篇有关如何在Mac OS X 下查看Rubinius 源码的文章值得参考一下,文章里收集了一系列相关链接和操作指南。一方面,对于新手而言,Rubinius 的源代码管理系统可能会有些令人困惑。在体验了一段时间Subversion 之后,该团队目前已经改用了 Git。Git 是一个分布式代码管理系统,由 Linus Torvalds 开发,原本是用于 Linux 内核开发的,但是现在采用这个系统的项目也在不断增加。分布式代码管理系统人气越来越旺了,因为它们让代码分支变得更容易,而代码分支可以让实验变得很简单。
要想了解如何使用Rubinius 入手,请参考Rubinius 网站上的“使用Git ”页。正如 Sam Aaron 所指出的,一旦 Rubinius 被检出之后,使用 Git 来保持和 Rubinius 最新开发进度的同步,是非常容易的:
进入你的 Rubinius 所在目录,并敲入以下指令: git pull ; rake build
查看英文原文: Getting started with Rubinius development - - - - - -
译者简介:苏宇,网名 beanworms,软件工程师,开源项目 XRuby 成员。爱好广泛,尤喜烹饪。乐于寻找更好的解决问题的方法,目前对 Ruby 技术颇为着迷,个人 blog 为: http://azure-sky.javaeye.com/ 。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com 。
评论