The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines. LLVM began as a research project at the University of Illinois, with the goal of providing a modern, SSA-based compilation strategy capable of supporting both static and dynamic compilation of arbitrary programming languages. Since then, LLVM has grown to be an umbrella project consisting of a number of subprojects, many of which are being used in production by a wide variety of commercial and open source projects as well as being widely used in academic research. Code in the LLVM project is licensed under the "Apache 2.0 License with LLVM exceptions". The LLVM Core libraries provide a modern source- and target-independent optimizer, along with code generation support for many popular CPUs (as well as some less common ones!).
Features
- The LLVM Core libraries are well documented, and it is particularly easy to invent your own language
- Clang is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles
- The LLDB project builds on libraries provided by LLVM and Clang to provide a great native debugger
- The libc++ and libc++ ABI projects provide a standard conformant and high-performance implementation of the C++ Standard Library
- The compiler-rt project provides highly tuned implementations of the low-level code generator support routines
- The MLIR subproject is a novel approach to building reusable and extensible compiler infrastructure