Clang: a C language front-end 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:
1) A "code name" for the LLVM compiler front-end.
2) 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 motiviations 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:- Unified parser for C-based languages
- Language conformance with C99, ObjC, C++
- Real-world, production quality compiler
- GCC compatibility
- Library based architecture with finely crafted C++ API’s
- High performance
- Better integration with IDEs
- Expressive diagnostics
- BSD License