LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM是伊利诺伊大学的一个研究项目,提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译目标。自那时以来,已经成长为LLVM的主干项目,由不同的子项目组成,其中许多正在生产中使用的各种商业和开源的项目,以及被广泛用于学术研究。
LLVM 是 Illinois 大学发起的一个开源项目,和之前为大家所熟知的JVM 以及 .net Runtime这样的虚拟机不同,这个虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略(使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效的方式进行)和其他一些非常有意思的功能。
对于普通的开发人员来说,LLVM计划提供了越来越多的可以使用、编译器以外的其他工具。例如代码静态检查工具 LLVM/Clang Static Analyzer,是一个 Clang 的子项目,能够使用同样的 Makefile 生成 HTML 格式的分析报告
LLVM 是LLVM基金会开发的编译器架构,Clang是其开发的C++,C,ObjectiveC,Ojc++编译器,另有第三方开发了D编译器LDC。LLVM最大的贡献企业有Apple,Google等,LLVM以及Clang在OS X,IOS,FreeBSD,Android Runtime,Google PNacl 等项目中被使用。目前,通过Google工程师的贡献,Clang已经能够通过msbuild工具实现对VisualStudio 的支持。
目前LLVM 3.5的代码分支已经冻结,里程碑均已出现final。即日将正式宣布发布。目前主线版本已经升级到3.6。
如果要提前体验LLVM 3.5可以使用Subversion 检出对应标签下 RELEASE_350 的final。
如
LLVM http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_350/final/
Clang http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_350/final/
LLD http://llvm.org/svn/llvm-project/lld/tags/RELEASE_350/final/
LLDB http://llvm.org/svn/llvm-project/lldb/tags/RELEASE_350/final/
发行日志:
http://llvm.org/releases/3.5.0/docs/ReleaseNotes.html
LLVM 3.5 不支持VisualStudio 2012以下的版本,因为LLVM 3.5开始大量使用C++11编写源代码,VisualStudio 2010对C++11 支持很low。
Clang 3.5 目前实现了部分的C++14特性,但并不完整;并且C++11的某些特性,如果是clang-cl(Microsoft C/C++兼容模式),将不会被支持。