IronRuby的1.0之路

微软在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 0.9发布时公布在http://ironruby.nfo。

IronRuby 1.0

IronRuby 1.0到底什么时候才能发布?这取决于整个社区。我们将会在0.9的子版本(0.9.1,0.9.2……)中持续改进,直到社区认为IronRuby 1.0可以发布。

你可以登陆IronRuby网站找到更多关于IronRuby、下载、贡献以及支持的信息。

查看英文原文:IronRuby and the Road to 1.0

你可能感兴趣的:(IronRuby的1.0之路)