clang: a C language family frontend for LLVM
About
The goal of the Clang project is to create a new BSD licensed C, C++, & ObjC front-end for the LLVM compiler.
In the context of this website, the term Clang actually refers to two things:
- A "code name" for the LLVM compiler front-end.
- A specific library in the LLVM front-end -- in particular the "driver" that makes all the other libraries work together.
The developers of Clang include contributers from Apple and numerous other volunteers.
Why?
The development of a new front-end was started out of a need -- a need for a compiler that allows better diagnostics, better integration with IDEs, a license that is compatible with commercial products, and a compiler that is easier to develop and maintain. All of these were motivations for starting work on a new C/C++/ObjC front-end that could meet these needs.
An excellent introduction to Clang can be found in the following video lectures:
Features/Goals
Some of the goals for the project include the following:- Real-world, production quality compiler.
- A single unified parser for C/ObjC/C++
- Language conformance with C, ObjC, C++ (including variants, like C90, C99, etc)
- GCC compatibility (supports GCC extensions, but allow them to be disabled)
- Library based architecture with finely crafted C++ APIs
- High performance
- Design for integration with IDEs as well as code generation with LLVM.
- Expressive diagnostics
- BSD License