动态语言运行时公布

  • Jonathan Allen
  • Jason lai

2007 年 5 月 3 日

话题:.NETRuby语言 & 开发

微软刚刚宣布他们正在为公共语言运行时构建一个新的扩展,成为动态语言运行时(Dynamic Language Runtime,DLR)。设计该扩展的原因是为了保证动态语言之间的互操作性,能和原有 CLR 支持的静态类型语言间的互操作性一致。

目前,动态语言的互操作性存在的最大问题是缺乏统一的对象模型。即便运行在同一个底层平台(如 CLR 或 JVM)的情况下,每个动态语言都必须独立扩展自身的类型系统,以支持在运行时修改类。这些实现生来就互不兼容,使得在 IronPython 和 RubyCLR 之类的语言共享对象成为一件困难,甚至不可能的事情。

动态语言运行时提供了一个共享的动态类型系统,希望能在 CLR 平台上削除 Ruby 和 Python 之间存在的壁垒。理论上,用不同语言编写的不同程序中存在的对象是可以被自由共享的。

除了动态类型系统(Dynamic Type System)以外,DLR 计划提供其它功能,来使开发新的语言和将已有语言移植到 CLR 的变得更加容易。Jim Hugunin 写道

DLR 所要做的是为你提供你喜欢的语言的最佳体验——对语言本身、其上优秀的工具、性能,以及和丰富的程序库集平台进行无缝整合都是一样的。DLR 带来的核心优势就是共享,它使得语言实现者共享标准特性,而无须从头开始从新构建它们。这使得他们能够专注于研究语言的新特性,使一门语言变得更加独一无二,而不是在重新发明另一个 GC 系统上劳神费力。

此外,Jim 还列出了四个在 DLR 初期就将支持的语言。一旦它们完成并且整个平台稳定下来之后,微软将配合希望支持 DLR 的其它语言开发人员开展工作。

  • Python
  • JavaScript(EcmaScript 3.0)
  • Visual Basic
  • Ruby

之前微软已经声称 VB 将引入更多的动态特性,但之前从未有过任何暗示,说 VB 将达到 Python 或者 Ruby 的程度。这对 VB 意味着什么,目前尚无从知晓。

值得特别注意的是,DLR 是以开源的形式发布的。正如Miguel de Icaza 所说的,对于 Mono 团队来说,这是一条利好消息。

DLR 是根据微软许可授权(Microsoft Permissive License,MsPL)的条款发布的,该许可无论从哪个角度说都是一项开源许可。这就意味着我们可以将 DLR 做为 Mono 的一部分使用和发布,而不需要从头开始构建它了。微软下了一着妙棋。

查看英文原文:Dynamic Language Runtime Announced

.NETRuby语言 & 开发