深入 DLR 语言——IronJS

  • Roopesh Shenoy
  • 郭晓刚

2012 年 7 月 25 日

话题:语言 & 开发

IronJSDLR上的 ECMAScript 3.0 实现。其作者Fredrik Holmström最近在i-programmer 的访谈上深入讨论在 DLR 上做语言实现的各种细节。

Fredrik 特别强调 DLR 为他省下了很大的工作量:

DLR 自带了很多好东西。

语言互操作是其中之一。DLR 本身代码的坚实可靠。输出 IL 等很大比例的设施它都帮你准备好了。

Fredrik 指出 DLR 有两种用法,一种是通过特殊的 binder 类 / 对象来关联操作,另一种是把 DLR 当作 IL 生成器和编译工具,然后自行做绑定。前一种速度较慢,IronJS 用的是后一种方案。根据去年的基准测试报告,速度已经超过 IE8 的引擎。

自己做 binding 的副作用,是牺牲了与其他 DLR 语言互操作的天然能力。

IronJS 的解析器当前用F#写成,而核心运行时是用 C# 写的。为了提升速度,Fredrik 计划在下一版本中将所有的F# 代码替换为 C#。他又在和 Scott Hanselmann 进行的访谈中提到,IronJS 既然建立在 CLR 之上,撞上性能墙只是迟早问题,无法跟原生代码的V8相比。

如果你想在 DLR 上实现自己的语言,阅读文档是个好的开始。“Iron”系列语言的源代码也是很好的阅读材料,如IronPython或者IronRuby

查看英文原文:Inside A DLR Language – IronJS

语言 & 开发