ITPub博客

首页 > > > [八卦] Phoenix Compiler Infrastructure或许那个有望开源?

[八卦] Phoenix Compiler Infrastructure或许那个有望开源?

作者:格伯纳 时间:2016-11-08 17:30:08 0 删除 编辑
上周的就在家附近开的LLVM dev meeting俺可耻地缺席了。都是为了能有足够时间在家照顾好小叶子 ToT

好在还是有好几位同事去了。“Hallway session”万岁!

于是听到一个让我很感兴趣的、跟LLVM没关系的小道消息:微软研究院(MSR)或许有机会未来会把他们以前做的Phoenix Compiler Infrastructure给开源了。简直兴奋啊!…虽然不是啥确定的消息。

完全没听说过Phoenix的同学,请看Andy Ayers大大以前做的一个演讲:The Phoenix Compiler and Tools Framework

Phoenix是一个可以说定位跟LLVM颇为相似的编译器及分析工具框架,主要工作在语言中立的中端/后端。它完全使用C++/CLI编写,有native和CLI版binary,可分别供native C++与任意.NET语言调用。它有一套定义良好的IR以及操作该IR的API,IR有几个不同的抽象层(HIR -> MIR -> LIR -> EIR),适用于编译流程中的各阶段,而不像LLVM的主IR主要只适合中端使用,到后端则是相当不同的MachineInstr IR。Phoenix自带C/C++前端支持(可以读取Visual C++的前端C1生成的CIL / CxxIL)、MSIL前端支持(支持读取.NET Assembly),并且自带一个功能完善的PDB Reader以及从x86机器码提升到LIR的功能。

它最初的目标是作为一个编译器框架(工具箱)要可以支持多种场景以及多种目标平台。例如说,基于它可以实现替代Visual C++编译器后端的c2.dll;最初也计划用它来替代CLR中的JIT64作为新的server JIT compiler…后来这部分目标被放弃了;同时还要可以支持对C/C++以及.NET程序的各种分析与优化,提供插件化API让用户可以轻松自定义编译pipeline并插入自己的插件。

几个实际使用Phoenix的微软自家项目/产品:

  • 替代原本Visual C++编译器的c2的Phoenix-based c2.dll。用native C++编译版binary的Phoenix。
  • FxCop等Visual Studio里带有的代码分析工具。用CLI编译版binary的Phoenix。
  • 跟Midori项目搭配的Bartok编译器后端。Bartok是一个用纯C#实现的MSIL-to-native AOT编译器以及运行时,可自举(是的,它带有用C#实现的GC,也用Bartok来编译自举)。最初Bartok跟Singularity的早期版搭配时是完全纯C#的,自己写了编译器的中端和后端。后来到Singularity的后期版本就接上了Phoenix作为后端,以期生成更高效的代码。这个设计也被后来的Midori继承了下来。

2008年6月,Phoenix发布了最后一个CTP SDK之后,就从外界的视野中销声匿迹了。然而当时参与了这个项目的大大们都很不甘心吧。当时它还在活跃开发中的时候是由MSR和VC产品组共同管理的;后来产品组不要管它了,它就变成MSR自己的项目了。作为一个MSR项目,或许开源的阻力会稍微小一点点吧…

拭目以待!

P.S. 一个八卦:当年Chris Lattner在MSR实习的时候还参与过Phoenix的研发。期间做过一个Phoenix-to-LLVM bridge,比较过两个compiler infrastructure的特性。不知道那段经历对LLVM的早期设计有多少影响呢?(或许Chris看了Phoenix之后对自己的作品更自豪了哈哈哈…)

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    983824