- 主题:有哪些算是比较活跃的compiler framework?
工业界好像只有 llvm 算是活跃的并且算是开放的 framework。gcc 的前端和中端对第三方开发不太友好,算不上是 framework。LLVM 这东西优点和缺点都太明显。优点是几乎是唯一的二次开发平台,API 丰富好用,pass 作为例子足够多。缺点是过于庞大,编译速度缓慢,占用大量硬盘和内存。
.NET CLR 我不了解。Java C2 以及继任 Graal 算比较活跃,但也都没有把二次开发当作设计要点。
其它工业上的编译器我看的不多。阿里有个 xoc ,算是比较精简,比较成熟,而且对第三方开发也比较友好,但这基本上是个个人项目,有一定风险。微软玩的花样其实比较多,比如 F* 和 Low*,typescript,但这些毕竟比较偏门,而且前者注重的是 formal verfication,后者的 target 是 js。而且这些也都比较难二次开发。
学术界有些老的体系已经彻底歇菜了,比如 SUIF2,Trimaran,nanopass。open64 现在偶有发声。学术界最大的问题在于,本来算得上是多样性丰富的场面,被 LLVM 彻底摧毁了。学术界唯一还在苟延残喘的好像是 libfirm,而且 libfirm 不仅代码质量比较高,而且因为一直在慢慢延续,里面的算法比较齐整和现代,比 gcc/LLVM 还更激进一些。
所以 我的问题是 现在除了 LLVM 还有哪些算是比较活跃的,又对二次开发友好的编译器?我估计是没有答案的。但不死心,上来问问。
--
FROM 37.219.71.*
LLVM项目下有个MLIR,应该算是另外一个框架了。
【 在 philbloo 的大作中提到: 】
: 工业界好像只有 llvm 算是活跃的并且算是开放的 framework。gcc 的前端和中端对第三方开发不太友好,算不上是 framework。LLVM 这东西优点和缺点都太明显。优点是几乎是唯一的二次开发平台,API 丰富好用,pass 作为例子足够多。缺点是过于庞大,编译速度缓慢,占用大量硬盘
: 湍诖妗
: .NET CLR 我不了解。Java C2 以及继任 Graal 算比较活跃,但也都没有把二次开发当作设计要点。
: ...................
--
FROM 111.206.173.*
MLIR 看起来是不错,很容易订制和扩展,基础设施也齐备。但有两个问题。第一是还是得clone整个llvm,不方便搞out-of-tree。第二是相关pass很少。我感觉可以做备胎,如果实在没有其它的好用,那就只能用 MLIR。
【 在 ArchLinux 的大作中提到: 】
: LLVM项目下有个MLIR,应该算是另外一个框架了。
:
--
FROM 37.219.71.*
更新一下 用上了 libfirm 挺好用。代码少,编译快,容易懂,容易改,功能全,retarget 简单。目前已经 retarget 了一个新后端,只花了个把礼拜。
--
FROM 87.93.249.*