好在还是有好几位同事去了。“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的微软自家项目/产品:
2008年6月,Phoenix发布了最后一个CTP SDK之后,就从外界的视野中销声匿迹了。然而当时参与了这个项目的大大们都很不甘心吧。当时它还在活跃开发中的时候是由MSR和VC产品组共同管理的;后来产品组不要管它了,它就变成MSR自己的项目了。作为一个MSR项目,或许开源的阻力会稍微小一点点吧…
拭目以待!
P.S. 一个八卦:当年Chris Lattner在MSR实习的时候还参与过Phoenix的研发。期间做过一个Phoenix-to-LLVM bridge,比较过两个compiler infrastructure的特性。不知道那段经历对LLVM的早期设计有多少影响呢?(或许Chris看了Phoenix之后对自己的作品更自豪了哈哈哈…)
原文作者:;如有侵权,请联系管理员删除。