微软在MIX'07上就宣布了IronRuby,然而两年后我们仍然没有看到1.0版。2008年1月,InfoQ曾经采访过John Lam,当时John表示他们会在2008下半年发布,但***却没有实现。
作为开发人员,我们当然知道构造软件通常都会比你认为的要费时间。
IronRuby项目的程序经理Jimmy Schementi在OSCON 2009上做了题为“IronRuby 0.9”的讲演,他概述了微软在IronRuby 1.0上的进度。自从2008年采访John Lam之后,IronRuby已经又前进了许多,其中有一些值得我们回顾:
IronRuby 0.6
于2009年7月发布,是一个非常重要的里程碑。Jimmy在他的博客中写道:
性能是这个版本的主要关注点,启动速度更快了,内建类型也得到了优化。Ruby的兼容性(可以跑Cucumber了!)以及与.NET的互操作得到了极大的改善。
IronRuby 0.9
Jimmy在OSCON上的讲演主要是关于此版本的,这个版本将会包括***一组主要特性。Jimmy在最近的一篇博客中对此做了描述,其中包含了IronRuby的关键组件以及这些组件对开法人员的意义。
跨平台、跨浏览器的Ruby实现:
任何时候当人们听到.NET的时候,他们立刻会想到“Windows"。但是Miguel和Mono团 队证明这并非事实。他们构建了一个开源的.NET实现,可以运行在Linux、Mac OS和Windows系统上。他们还构建了开源的Silverlight 2,叫做Moonlight,这样Silverlight程序就可以在使用Mozilla插件体系的Linux浏览器上运行了。Silverlight 2本身可以运行在使用Intel处理器Mac和Windows系统上。由于IronRuby可以运行在.NET和Silverlight上,因此也可以运 行在Mono和Moonlight上。
由于IronRuby是与.NET集成在一起的,因此你可以在IronRuby中调用任何已有的.NET代码。这意味着可以在IrongRuby中使用任何 框架,比如Windows Forms、WPF或者GTK(#),因为.NET和Mono(分别)拥有对这些框架的CLI绑定。Mono甚至有一个使用GTK实现的Windows Forms,这样应用程序无须修改就可以运行在两个实现上。
动态语言与静态语言的互操作:
IronRuby与.NET框架集成的非常紧密,在IronRuby中调用C#/VB代码不会感觉是在使用“互操作”。C#也可以通过DLR Hosting API调用IronRuby代码。而在.NET 4.0中,动态方法分配已经成为了C#的一部分,因此在C#中调用IronRuby代码和调用C#方法差不多。由于IronRuby基于DLR,因此也可 以方便的与其它DLR语言进行交互,如今Python和Ruby可以很好的合作,未来的DLR语言也一样可以。
性能方面的改进非常明显,Ruby on Rails的启动时间从80多秒下降到20秒左右。另一个值得注意的是,目前IronRuby可以运行RubySpec测试了:
兼容性是一个重大的改进。每次check-in时,我们都运行RubySpec测试,通过率是85%。这些测试来自于流行的Ruby框架,包括Rails、Rake、RSpec和RubyGems。不断增加的兼容性bug,将是通往1.0路上要解决的主要问题。
此外,该版本还支持Win32OLE库,这使Ruby程序可以与COM进行交互,就像MRI上运行的Watir那样。
性能与其它Ruby实现做了比较,如MRI:
性能方面的表现也很好。在Ruby benchmark suite测试中,***版本在几乎整个测试中都有MRI两倍以上的性能表现。
IronRuby 1.0
IronRuby 1.0到底什么时候才能发布?这取决于整个社区。我们将会在0.9的子版本(0.9.1,0.9.2……)中持续改进,直到社区认为IronRuby 1.0可以发布。
IronRuby官方网站: http://ironruby.net/
【编辑推荐】