微软在 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
评论