<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
          "http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>"clang" C Language Family Frontend 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 family frontend for LLVM</h1>
  <!--*********************************************************************-->
  
  <p>The goal of the Clang project is to create a new C, C++, Objective C and
  Objective C++ front-end for the <a href="http://www.llvm.org/">LLVM</a>
  compiler.  You can <a href="get_started.html">get and build</a> the source
  today.</p>
  
  <!--=====================================================================-->
  <h2 id="goals">Features and Goals</h2>
  <!--=====================================================================-->
  
  <p>Some of the goals for the project include the following:</p>
  
  <p><b><a href="features.html#enduser">End-User Features</a></b>:</p>

  <ul>
  <li>Fast compiles and low memory use</li>
  <li>Expressive diagnostics</li>
  <li>GCC compatibility</li>
  </ul>

  <p><b><a href="features.html#applications">Utility and 
     Applications</a></b>:</p>

  <ul>
  <li>Modular library based architecture</li>
  <li>Support diverse clients (refactoring, static analysis, code generation,
   etc)</li>
  <li>Allow tight integration with IDEs</li>
  <li>Use the LLVM 'BSD' License</li>
  </ul>

  <p><b><a href="features.html#design">Internal Design and 
     Implementation</a></b>:</p>

  <ul>
  <li>A real-world, production quality compiler</li>
  <li>A simple and hackable code base</li>
  <li>A single unified parser for C, Objective C, C++, and Objective C++</li>
  <li>Conformance with C/C++/ObjC and their variants</li>
  </ul>

  <p>Of course this is only a rough outline of the goals and features of
     Clang.  To get a true sense of what it is all about, see the <a 
     href="features.html">Features</a> section, which breaks
     each of these down and explains them in more detail.</p>

     
  <!--=====================================================================-->
  <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
     nimble compiler that is easy to develop and maintain.  All of these were
     motivations for starting work on a new front-end that could
     meet these needs.</p>
     
  <p>A good (but quite dated) introduction to Clang can be found in the
     following video lectures:</p>
     
  <ul>
    <li><a href="clang_video-05-25-2007.html">Clang Introduction</a>
        (May 2007)</li>
    <li><a href="clang_video-07-25-2007.html">Features and Performance of 
        Clang</a>  (July 2007)</li>
  </ul>
  
  <p>For a more detailed comparison between Clang and other compilers, please
     see the <a href="comparison.html">clang comparison page</a>.</p>
  
  <!--=====================================================================-->
  <h2>Current Status</h2>
  <!--=====================================================================-->
  
  <p>Clang is still in early development stages.  If you are looking for
  source analysis or source-to-source transformation tools, clang is probably
  a great solution for you.  If you want to use it as a drop in C compiler, it
  is not yet ready.</p>

  <p>Clang currently has pretty good parsing and semantic analysis support for
     C and Objective-C right now, and bugs are usually quickly fixed once
     reported.  <a href="cxx_status.html">C++ support</a> is still very early,
     and we don't expect to have respectable C++ support for another 2 years
     or so.</p>
  
  <!--=====================================================================-->
  <h2>Get it and get involved!</h2>
  <!--=====================================================================-->
  
  <p>Start by <a href="get_started.html">getting the code, building it, and
     playing with it</a>.  This will show you the sorts of things we can do
     today and will let you have the "clang experience" first hand: hopefully
     it will "resonate" with you. :)</p>
  
  <p>Once you've done that, please consider <a href="get_involved.html">getting
     involved in the clang community</a>.  The clang developers include numerous
     volunteer contributors with a variety of backgrounds.  If you're 
     interested in
     following the development of clang, signing up for a mailing list is a good
     way to learn about how the project works.</p>
</div>
</body>
</html>
