delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

03 May 2009

LLVM: 为什么你需要关注这个项目

LLVM 是 Illinois 大学发起的一个开源项目,它到底是什么呢?从字面上看,它是一个虚机系统,然而这又和之前为大家所熟知的 JVM 以及 .net Runtime 这样的虚机不同,它提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略(使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效的方式进行)和其他一些非常有意思的功能。

为什么这个项目很重要呢?对于普通的开发人员来说,LLVM计划提供了越来越多的可以使用、编译器以外的其他工具。例如代码静态检查工具 LLVM/Clang Static Analyzer,是一个 Clang 的子项目,能够使用同样的 Makefile 生成 HTML 格式的分析报告;而对关注编译技术的开发人员来说,LLVM提供了很多优点:

  • 现代化的设计:LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题所在。
  • 语言无关的中间代码:这使得透过LLVM能够将不同的语言相互连结起来;另一方面,这也使得LLVM能够紧密地与IDE交互和集成。另一方面,发布中间代码而非目标代码能够在目标系统上更好地发挥其潜能而又不伤害可调试性(i.e. 在目标系统上针对本机的硬件环境产生目标代码,但又能够直接通过中间代码来进行行级调试)
  • 作为工具和函数库:使用LLVM提供的工具可以比较容易地实现新的编程语言的优化编译器或VM,或为现有的编程语言引入一些更好的优化/调试特性。

一些值得关注的基于LLVM的项目:

CLang C/ObjC/C++ 编译器。目前C++部分还需要很多工作,但C的部分已经比较成熟了。这个项目还有一个子项目是 LLVM/Clang Static Analyzer

llvmruby 基于LLVM的一个Ruby实现。

Unladen SwallowGoogle 发起的,使用 LLVM 替换 Python VM 的项目,其目标是提供更好的性能。

LLVM项目还提供了一些针对有意使用LLVM来实现新的编译器/优化工具的开发人员的 教程