问:最近Ruby社区出现了一些令人激动的新实现,如JRuby,Rubinius等,你们能谈谈这些新实现对Ruby的官方发布版本有什么影响?
Matz:我很高兴看到有这么多的新实现出现,因为这意味着Ruby已经非常成熟了。但是目前我们的核心开发团队缺乏足够的人手,因此我希望能够和其它团队多一些合作,前段时间我刚刚和Charles Nutter(JRuby核心开发团队成员)就Ruby Spec的下一步进行了探讨,我希望这样的交流能够更多一些。
ko1:我认为出现其它的非官方实现对Ruby来说很重要,我对这些Ruby的实现技术很感兴趣,我想或许可以将它们的优秀之处应用到YARV中去。
不过,说真的,从头实现一个解释器其实是件很有乐趣的事情,但是YARV(目前的Ruby官方实现)由于历史的缘故目前还存在许多问题(目前最主要的问题在于如何兼容扩展库)。
问:那你们有试过下载并安装其它的解释器吗?
Matz:我只看过Rubinius的部分文件,但是其它的就没有了,主要是因为我对Java和Parrot不是很熟悉。
Ko1: 我对这些替代实现很感兴趣,但实在没有时间去尝试它们(我甚至都很少时间去改进YARV),不过我想我会试着去了解它们的。
问:那么,不同的Ruby实现团队之间会经常交流意见吗?你们是否会经常同其它团队交流意见,阅读他们的代码或者是同他们讨论一些实现的细节?
Matz:除了ko1之外,上个月我见到了Charles Nutter,并同他就Ruby2.0的新特性交换了意见,同时,Evan Phoenix(Rubinius开发者)给了我一些很好的建议,我非常高兴有更多的程序员加入到探讨及制定语言实现规范的行列来。
Ko1:我偶尔会在IRC上同JRuby团队交流看法,事实上,我非常相同他们每一个人进行交流,尤其是负责性能方面的。
不过,我认为目前我们的当务之急应该是解决下面3个问题:
- 制定Ruby语言的规范文档
- 编写良好的单元测试例
- 编写良好的基准测试例(Benchmarks)
Ruby主干和1.8中都有单元测试例,但是在实现的早期,这些测试例很难实施,因为他们使用了太多的Ruby函数,不过现在,Trunk中加入了 “bootstraptest”,这个问题已经得到了解决,这个测试例实际上定义了实现一个Ruby解释器所需要遵照规范的最小集合。
至于基准测试,许多人使用我写的YARV基准测试,但是这个基准测量的并不是Ruby的通用基准,而是YARV的性能提升,因此,我们需要准备一些更具通用性的基准测试例,以供其它Ruby实现的开发者使用。
