使用DLR进行(主要)静态语言编译
时间:2020-03-05 18:52:41 来源:igfitidea点击:
我正在构建一个针对.NET的编译器,并且以前已经直接生成了CIL,但是生成DLR树将使我的生活变得相当轻松。我支持一些动态功能,即运行时函数创建和鸭嘴样式,但绝大多数代码是完全静态的。
因此,现在已经解释了这一点,我有以下问题:
- 除了MSDN博客上的小示例之外,是否已将DLR用于静态编译?
- 如果是这样,则获得了什么样的性能?
- 如果没有,从根本上有什么预防措施?
- 是否有比使用DLR或者直接发出IL更好的代码生成机制?
任何对此或者对博客/代码/谈话的引用的见解将不胜感激。
解决方案
回答
我还不知道有人以这种方式使用DLR,尽管这绝对是其预期的用例之一。需要考虑的一件有趣的事是DLR的表达式树已与LINQ表达式树合并,因此在某些尚未宣布的Visual Studio未来版本中为LINQ生成的IL将使用DLR代码。
将DLR发布为开源的一个整洁的方面是,我们不知道公司外部的人可能会在使用哪种有趣的东西:)。