欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XRuby发布了!

程序员文章站 2022-03-14 21:39:40
...

XRuby是什么?它是一个编译器。与其它编译器一样,它完成的工作是将一种格式的语言转换成另一种。与大多数编译器不同的是,它是将Ruby的代码(.rb)转换成Java的bytecode(.class)。XRuby是一个开源项目,很荣幸,我是这个项目的成员。

提起Ruby和Java的组合,现阶段,在人们脑中率先撞线的多半是JRuby。JRuby确实在结合Ruby和Java这条路上走了很长一段时间,尤其是去年SUN吸纳了其几个开发人员,名声一下子壮大了许多。但是,JRuby只是一个用Java开发Ruby解释器,而非编译器,也就是说,它并不是将Ruby代码编译成Java的bytecode。当然,现在JRuby的开发者已经走上了编译这条路,不过,仅仅是刚刚起步。从这个意义上来说,XRuby走在前面。

故事得从头说起。2005年中期,yawl一个人开始了XRuby的开发。项目的最初,开发的只是一个Ruby的语法解析器,所以,那时候的名字叫做RubyFront。在yawl的blog上,不难发现他在开发过程中的一些心路历程和解决的各种各样的问题。经过艰苦的努力,RubyFront发布过两个版本,0.1.20.2.0。到0.2.0的时候,RubyFront已经可以解析Ruby On Rails的1.1.2版本了。

一个人的努力总是有限的,yawl在孤独前行了很长一段时间之后,决定把这个项目开源,吸引更多人一起努力。2006年9月8日,yawl将代码移至Google Code。此时的项目已经超出了一个Ruby语法解析器的范畴,于是,项目名也由RubyFront变成了XRuby。至此,XRuby正式诞生,也开始向一个真正的Ruby编译器迈进。

项目是开源了,但如果还是一个人做,那和不开源是没有分别的。于是,yawl决定为XRuby打第一次广告,吸纳开发人员加入到XRuby中。

我就是这个时候加入的。当时,刚好完成了RHG第一遍的翻译,对Ruby的构造有了初步的理解。看到这样的消息,当然是兴奋不已:自己熟悉的Java、自己喜欢的Ruby、自己想要了解编译器技术。通过与yawl的沟通,我成为了XRuby这个项目的成员,除yawl之外,第一个加入这个项目的成员。

最初的时候,我花了大量的时间去理解yawl的代码。不过,同我之前了解C Ruby的实现有不小的差异。后来我才逐渐弄清楚,原来yawl的代码更多的是根据自己的想法在写,对C Ruby参考的不多。这样做当然有一些好处,不过,也确实遇到了一些问题。所以,后来我按照C Ruby的实现重新写了一个Runtime,但是由于与原来的实现差异很大,所以,暂时没有加入到第一个版本的发布中,希望在下一个版本的发布中可以看见它的身影。在这个过程中,加深了我对Ruby实现的理解,于是,就有了一篇篇的《管窥Ruby》。

在XRuby的开发过程中,发生了一件有趣的事。

有一个叫rubygrammar的项目,目的是开发一个基于Antlr的Ruby语法前端。这个项目聚集一些人气,前期的结果并不太理想,但是受到了很多人的关注。Antlr的开发者Terence Parr就在Antlr网站上上传了这个项目的前期成果,一个半成品的Ruby前端。

JRuby的开发者Charles Nutter想替换掉JRuby中基于YACC的前端,因为它并不是一个很好的选择,于是,他找到了这个项目。一群人在邮件列表中讨论的结果是,发现现在已经有了一个可以工作的Java的Ruby前端,就是XRuby的前端(也就是最初的RubyFront)。他们建议把前端从XRuby分离出来。结果就是yawl把XRuby的前端贡献到rubygrammer中,成为了其项目的一部分。

随着开发的进行,又有几个人加入到XRuby中。截至XRuby发布第一个版本时,除了yawl和我之外,成员还有beanworms,javachina和cpunion。每个人都为XRuby出了自己的一份力。yawl说,没有大家的共同努力,XRuby的进度会更加缓慢,我说,没有yawl,XRuby就不存在。每个人都有自己的精彩,在这里,我无法尽述大家在项目中所起到的作用,但相信大家都和我一样,通过XRuby学到了很多东西。

我不喜欢用国界来区分技术,因为我相信技术是没有国界的。但是不得不说的一点,目前的几个项目成员都是华人,尽管他们有的身在异国他乡。虽然大家在邮件列表中的交流依然使用的是英语,但私下里的中文交流促进了彼此的了解。

现在,XRuby已经发布了第一个版本。事实上,它还很弱小,远远无法达到我们心目中完美的境界,但它已经迈出了第一步。我们愿意看到它一点点成长。刚刚起步的XRuby需要更多人的帮助,它还在发展之中,有很多的机会可以让人发挥自己的才智。不要为编译器这么“高深”的东西所吓倒,事实上,参与这个项目之前,我对编译器也是知之甚少。XRuby为我们提供了这样一个学习提高的机会,只要拥有热情,我们可以学会那些所谓的“高深”。

Ruby的创始人Matz总是把乐趣挂在嘴边,如果你有兴趣,就来和我们一起体验这份开发的乐趣吧!