# 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:

- Clang Introduction
- Features and Performance of Clang

## 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

Of course this is only a rough outline of the goals and features of Clang. To get a true sense of what the new LLVM front-end is all about, as well as why you might want to considering using it, see the Features section.

## Try Clang

If you are a compiler developer and want to try out Clang, then build instructions are available on the Get Involved page.

## Get Involved

If you are interested in working on Clang, then check out the Get Involved section.