<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title>Clang c-lang parser for LLVM</title>
	<link type="text/css" rel="stylesheet" href="menu.css" />
	<link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
	<!--#include virtual="menu.html.incl"-->
	<div id="content">
		<h1>Clang: a C language front-end for LLVM</h1>
		<h2>About</h2>
		<p>The goal of the Clang project is to create a new <a href="http://llvm.org/svn/llvm-project/cfe/trunk/LICENSE.TXT">BSD Licensed</a> C, C++, & ObjC front-end for the <a href="http://www.llvm.org/">LLVM</a> compiler.
		<br><br>
		<p>In the context of this website, the term Clang actually refers to two things:
		<p>1) A "code name" for the LLVM compiler front-end.
		<p>2) A specific library in the LLVM front-end -- in particular the "driver" that makes all the other libraries work together.
		<br><br>
		<p>The developers of Clang include contributers from Apple and numerous other volunteers.
		<h2>Why?</h2>
		<p>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.
		<p>An excellent introduction to Clang can be found in the following video lectures:
		<ul>
			<li><a href="clang_video-05-25-2007.html">Clang Introduction</a>
			<li><a href="clang_video-07-25-2007.html">Features and Performance of Clang</a>
		</ul>
		<h2>Features/Goals</h2>
		Some of the goals for the project include the following:
		<ul>
			<li>Real-world, production quality compiler.</li>
			<li>A single unified parser for C/ObjC/C++</li>
			<li>Language conformance with C, ObjC, C++ (including variants, like C90, C99, etc)</li>
			<li>GCC compatibility (supports GCC extensions, but allow them to be disabled)</li>
			<li>Library based architecture with finely crafted C++ API's</li>
			<li>High performance</li>
			<li>Design for integration with IDEs as well as code generation with <a href="http://llvm.org">LLVM</a>.</li>
			<li><a href="features.html#expressivediags">Expressive diagnostics</a></li>
			<li>BSD License</li>
		</ul>
		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 <a href="features.html">Features</a> section.
		<h2>Try Clang</h2>
		If you are a compiler developer and want to try out Clang, then build instructions are available on the <a href="get_involved.html#build">Get Involved</a> page.
		<h2>Get Involved</h2>
		If you are interested in working on Clang, then check out the <a href="get_involved.html">Get Involved</a> section.
	</div>
</body>
</html>