微软公司在其 MIX07 大会上宣布了 IronRuby,一个运行在.NET CLR 之上的 Ruby 实现的发布。其中,IronRuby 与 Java VM 上的 JRuby 类似,但与 Ruby/.NET Bridge 之类的工具不同,这类工具只是将 Ruby 解释器于.NET VM 相连接。
IronPython 是运行在.NET 之上的 Python 实现,其开发人员 Jim Hugunin向我们阐述了 IronRuby、IronPython 和另外一些动态语言之下的技术的更进一步信息:
新的动态语言运行时(Dynamic Language Runtime,DLR)向 CLR 中加入了一小部分核心特性,使之得到显著改善。它向平台中加入了一系列明确为动态语言需求所设计的服务,包括同享的动态类型系统、标准托管模型(Standard Hosting Model),以及轻松生成快速动态代码的支持。有了这些新增的特性,要在.NET 上构架高质量的动态语言实现就变得信手拈来了。更重要的是,这些特性使得所有使用 DLR 的动态语言可以随意与其它动态语言,以及平台上现有强大的静态语言,比如 VB.NET 和 C#,共享代码。
他还指出 IronPython 的源代码集和新的 DLR 已经提供下载。
Ruby 社区的观望者对微软官方的 Ruby 实现的期待已经有些时日了,迹象之一就是 John Lam, Ruby.CLR 的作者,目前是微软员工,他常常到如 ruby-core 的论坛上询问和 Ruby 及其部分标准库的行为相关的详细问题。
这和 JRuby 的 Charles O. Nutter 的努力不谋而合。他在背后不断推动合理的 Ruby 规范的制定,很早之前,他就创建了 Ruby Spec Wiki ,并试图鼓励社区参与到这个项目中去。另一项努力就是两个 Google SoC 资助的项目,用来使用 RSpec(一个针对“可执行规范”的 Ruby 框架)来定义可规范 Ruby 行为的测试套件。
很显然,这对于 JRuby、Rubinius 或者 IronRuby 这所有的 Ruby 实现来说,这是非常重要的,因为要了解那些行为和功能应当实现是至关紧要的。目前,多数 Ruby 库和特性的文档只包含在它们的实现代码中。
因此,Charles O. Nutter 鼓励微软参与到这项努力中来:
我们希望他们(微软)在今后参与到我们当中来,一同构建 Ruby 的社区级规范以及一系列通用的开源兼容性测试。
当被问及对微软进入 Ruby 领域的总体评价,Charles O. Nutter 称:
很高兴看见微软也看见了 Ruby 的潜力,并且他们着手开始了自己的 Ruby 实现。这也证明了我们在 JRuby 上所花的时间和精力没有白费,而且也强调了在 JVM 上的 Ruby 和其它动态语言的重要性。
评论