LLVM 编译器基础设施
网站地图
下载!
搜索此网站


有用链接
发行邮件
18.1.8: 2024年6月
18.1.7: 2024年6月
18.1.6: 2024年5月
18.1.5: 2024年5月
18.1.4: 2024年4月
18.1.3: 2024年4月
18.1.2: 2024年3月
18.1.1: 2024年3月
18.1.0: 2024年3月
17.0.6: 2023年11月
17.0.5: 2023年11月
17.0.4: 2023年10月
17.0.3: 2023年10月
17.0.2: 2023年10月
17.0.1: 2023年9月
所有公告

维护者
llvm-admin 团队
LLVM 概览

LLVM 项目是一个由模块化和可重用编译器和工具链技术组成的集合。尽管名称如此,LLVM 与传统的虚拟机几乎没有关系。“LLVM”本身不是首字母缩略词;它是该项目的全称。

LLVM 最初是 伊利诺伊大学香槟分校的一个研究项目,其目标是提供一种现代的、基于 SSA 的编译策略,能够支持任意编程语言的静态和动态编译。从那时起,LLVM 已发展成为一个包含多个子项目的伞形项目,其中许多子项目已被各种 商业和开源 项目用于生产,并在 学术研究 中得到广泛应用。LLVM 项目中的代码根据 “Apache 2.0 许可证附带 LLVM 异常” 许可。

LLVM 的主要子项目包括:

  1. LLVM 核心 库提供了一个现代的、与源和目标无关的 优化器,以及许多流行的 CPU(以及一些不太常见的 CPU!)的 代码生成支持。这些库围绕一个 定义明确的 代码表示形式构建,该表示形式称为 LLVM 中间表示形式(“LLVM IR”)。LLVM 核心库 有很好的文档记录,并且发明自己的语言(或移植现有的编译器)以 使用 LLVM 作为优化器和代码生成器 尤其容易。

  2. Clang 是一种“LLVM 原生”C/C++/Objective-C 编译器,旨在提供极快的编译速度、极其有用的 错误和警告消息,并提供构建出色源代码级工具的平台。Clang 静态分析器clang-tidy 是自动查找代码中错误的工具,并且是使用 Clang 前端作为库来解析 C/C++ 代码的工具类型的极好示例。

  3. LLDB 项目基于 LLVM 和 Clang 提供的库构建,以提供出色的原生调试器。它使用 Clang AST 和表达式解析器、LLVM JIT、LLVM 反汇编程序等,从而提供“即用型”体验。它也比 GDB 加载符号的速度快得多,并且内存效率更高。

  4. libc++libc++ ABI 项目提供了一个符合标准且高性能的 C++ 标准库实现,包括对 C++11 和 C++14 的完全支持。

  5. compiler-rt 项目提供了高度调整的低级代码生成器支持例程的实现,例如:__fixunsdfdi"以及在目标没有用于实现核心 IR 操作的简短本地指令序列时生成的其它调用。它还为动态测试工具(如 AddressSanitizerThreadSanitizerMemorySanitizerDataFlowSanitizer)提供了运行时库的实现。

  6. MLIR 子项目是一种构建可重用且可扩展编译器基础设施的新方法。MLIR 旨在解决软件碎片化问题,改进异构硬件的编译,显著降低构建领域特定编译器的成本,并帮助连接现有的编译器。

  7. OpenMP 子项目提供了一个 OpenMP 运行时,用于与 Clang 中的 OpenMP 实现一起使用。

  8. polly 项目使用多面体模型实现了一套缓存局部性优化以及自动并行化和矢量化。

  9. libclc 项目旨在实现 OpenCL 标准库。

  10. klee 项目实现了一个“符号虚拟机”,该虚拟机使用定理证明器来尝试评估程序中的所有动态路径,以查找错误并证明函数的属性。klee 的一个主要功能是在检测到错误时可以生成测试用例。

  11. LLD 项目是一个新的链接器。它是系统链接器的直接替换,并且运行速度快得多。

  12. BOLT 项目是一个链接后优化器。它通过基于采样分析器收集的执行配置文件优化应用程序的代码布局来实现改进。

除了 LLVM 的官方子项目之外,还有各种各样的其它项目 使用 LLVM 的组件来执行各种任务。通过这些外部项目,您可以使用 LLVM 编译 Ruby、Python、Haskell、Rust、D、PHP、Pure、Lua、Julia 和许多其它语言。LLVM 的一个主要优势在于其多功能性、灵活性和可重用性,这就是它被用于如此广泛的不同任务的原因:从对 Lua 等嵌入式语言进行轻量级 JIT 编译到为大型超级计算机编译 Fortran 代码,无所不包。

LLVM 拥有一个广泛而友好的社区,他们对构建出色的低级工具感兴趣。如果您有兴趣 参与其中,一个好的起点是浏览 LLVM 博客 并加入 LLVM Discourse。有关如何提交补丁、获取提交访问权限以及版权和许可证主题的信息,请参阅 LLVM 开发人员策略

最新 LLVM 版本!

2024年6月18日:LLVM 18.1.8 现已 可用下载!LLVM 在开源 许可证 下公开提供。此外,您可能还想查看 Git 中 新功能,这些功能将出现在下一个 LLVM 版本中。如果您想尽早获得它们,请通过匿名 Git 下载 LLVM

即将举行的活动

10月22日至24日 - 2024 LLVM 开发者会议

ACM 软件系统奖!

LLVM 荣获 2012 年 ACM 软件系统奖!该奖项由 ACM 每年授予 一个 全球软件系统。LLVM 跻身 备受尊敬的公司行列!点击该页面上任何获奖者姓名以获取详细描述该奖项的引文。

即将发布的版本

LLVM 发行计划

  • 19.1.x
    • 7月23日:创建 release/19.x 分支
    • 7月26日:19.1.0-rc1
    • 8月 6日:19.1.0-rc2
    • 8月20日:19.1.0-rc3
    • 9月 3日:19.1.0
    • 9月17日:19.1.1
    • 10月 1日:19.1.2
    • 10月15日:19.1.3
    • 10月29日:19.1.4
    • 11月12日:19.1.5
    • 11月26日:19.1.6(如有必要)
开发者会议