锁定老帖子 主题:XRuby发布了!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-30
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.2和0.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总是把乐趣挂在嘴边,如果你有兴趣,就来和我们一起体验这份开发的乐趣吧! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-31
如果有对做编译器感兴趣的欢迎加入.可供发挥的地方非常多,比如我们的短期任务:
1. 改进runtime让它与c ruby更接近. 2. 更完整的builtin library的实现 3. 完善compiler 现在已经有很多小程序可以顺利运行起来了,我们的下一个目标是让test::unit顺利运行起来. 我也很高兴通过这个项目认识了不少朋友. |
|
返回顶楼 | |
发表时间:2007-01-31
首先要恭喜XRuby团队,为你们取得的成绩感到钦佩。
我有一个问题要请教: 如果我写的rails应用依赖于第三方的ruby类库,而这个第三方类库是C库,那么如何调用?例如处理rails文件上传的组件file-column依赖于RMagic,而RMagic依赖的ImageMagick是一个纯C的库,RMagic本身也带有C代码。那么用XRuby编译好的rails能支持file-column吗? |
|
返回顶楼 | |
发表时间:2007-01-31
客观的说,XRuby现在不支持的东西太多了,因为精力有限,它还远未到达能支持大多数应用的水平。
至于robbin提到的问题,至少目前的XRuby还不能支持,而且短时间之内,可能也无法排到日程上来。 所以,我们欢迎更多有热情的人一起参与进来,和我们共同推进XRuby。 |
|
返回顶楼 | |
发表时间:2007-01-31
现在有没有什么文档看?
|
|
返回顶楼 | |
发表时间:2007-01-31
楼主的《管窥Ruby》系列文章真是不错,正是我目前希望深入了解的知识。
|
|
返回顶楼 | |
发表时间:2007-01-31
在XRuby的发布包中,有一个XRuby Hacking Guide,它可以帮助你很快进入XRuby的开发之中。
如果想了解Ruby的实现,我在blog上写的《管窥Ruby》可以作为参考。另外,我对Ruby最初的了解始于《Ruby Hacking Guide》,我和其他的朋友正在翻译它,希望能够尽快将其中完成的部分发布。 |
|
返回顶楼 | |
发表时间:2007-01-31
JRuby不仅仅是解释器:
http://headius.blogspot.com/2007/01/jruby-compiler-in-trunk-and-ready-to.html 很佩服XRuby的团队,加油 |
|
返回顶楼 | |
发表时间:2007-01-31
期待实质性的进展,如果有JVM的支持,不知道运行效率能否有大的提升
|
|
返回顶楼 | |
发表时间:2007-01-31
thundercao 写道 期待实质性的进展,如果有JVM的支持,不知道运行效率能否有大的提升
虽然ruby解析器的性能不高,但是做web应用,最终瓶颈还是数据库,不管你前端用Java,C,Ruby,最终在性能上没有什么区别。性能并不是ruby的弱点。 XRuby或者JRuby的意义还在于能够让ruby跑在Java这样主流的企业应用平台上面。 |
|
返回顶楼 | |