使用DLR进行(主要)静态语言编译

时间:2008-09-13 10:58:27

标签: .net compiler-construction cil dynamic-language-runtime

我正在构建一个针对.NET的编译器,我以前直接生成了CIL,但是生成DLR树会让我的生活变得更容易。我支持一些动态功能,即运行时函数创建和ducktyping,但绝大多数代码都是完全静态的。

现在已经解释过,我有以下问题:

  • 除了MSDN博客上的小例子之外,DLR是否已用于静态编译?
  • 如果是这样,取得了什么样的表现?
  • 如果没有,有什么从根本上阻止了这个吗?
  • 是否有比使用DLR或直接发射IL更好的生成代码的机制?

对此的任何见解或对博客/代码/会谈的参考将不胜感激。

1 个答案:

答案 0 :(得分:7)

我不知道有人以这种方式使用DLR,尽管这绝对是其预期用例之一。一个有趣的事情是DLR的表达式树已经与LINQ表达式树合并,因此在一些尚未宣布的Visual Studio未来版本中为LINQ生成的IL将使用DLR代码。

将DLR作为开源发布的一个巧妙方面是,我们不知道公司外部人员可能会做些什么样的有趣事情:)。