1*67e74705SXin Li<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 2*67e74705SXin Li "http://www.w3.org/TR/html4/strict.dtd"> 3*67e74705SXin Li<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ --> 4*67e74705SXin Li<html> 5*67e74705SXin Li<head> 6*67e74705SXin Li <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 7*67e74705SXin Li <title>"clang" C Language Family Frontend for LLVM</title> 8*67e74705SXin Li <link type="text/css" rel="stylesheet" href="menu.css"> 9*67e74705SXin Li <link type="text/css" rel="stylesheet" href="content.css"> 10*67e74705SXin Li</head> 11*67e74705SXin Li<body> 12*67e74705SXin Li<!--#include virtual="menu.html.incl"--> 13*67e74705SXin Li<div id="content"> 14*67e74705SXin Li <!--*********************************************************************--> 15*67e74705SXin Li <h1>clang: a C language family frontend for LLVM</h1> 16*67e74705SXin Li <!--*********************************************************************--> 17*67e74705SXin Li 18*67e74705SXin Li <p>The goal of the Clang project is to create a new C, C++, Objective C and 19*67e74705SXin Li Objective C++ front-end for the <a href="http://www.llvm.org/">LLVM</a> 20*67e74705SXin Li compiler. You can <a href="get_started.html">get and build</a> the source 21*67e74705SXin Li today.</p> 22*67e74705SXin Li 23*67e74705SXin Li <!--=====================================================================--> 24*67e74705SXin Li <h2 id="goals">Features and Goals</h2> 25*67e74705SXin Li <!--=====================================================================--> 26*67e74705SXin Li 27*67e74705SXin Li <p>Some of the goals for the project include the following:</p> 28*67e74705SXin Li 29*67e74705SXin Li <p><b><a href="features.html#enduser">End-User Features</a></b>:</p> 30*67e74705SXin Li 31*67e74705SXin Li <ul> 32*67e74705SXin Li <li>Fast compiles and low memory use</li> 33*67e74705SXin Li <li>Expressive diagnostics (<a href="diagnostics.html">examples</a>)</li> 34*67e74705SXin Li <li>GCC compatibility</li> 35*67e74705SXin Li </ul> 36*67e74705SXin Li 37*67e74705SXin Li <p><b><a href="features.html#applications">Utility and 38*67e74705SXin Li Applications</a></b>:</p> 39*67e74705SXin Li 40*67e74705SXin Li <ul> 41*67e74705SXin Li <li>Modular library based architecture</li> 42*67e74705SXin Li <li>Support diverse clients (refactoring, static analysis, code generation, 43*67e74705SXin Li etc.)</li> 44*67e74705SXin Li <li>Allow tight integration with IDEs</li> 45*67e74705SXin Li <li>Use the LLVM 'BSD' License</li> 46*67e74705SXin Li </ul> 47*67e74705SXin Li 48*67e74705SXin Li <p><b><a href="features.html#design">Internal Design and 49*67e74705SXin Li Implementation</a></b>:</p> 50*67e74705SXin Li 51*67e74705SXin Li <ul> 52*67e74705SXin Li <li>A real-world, production quality compiler</li> 53*67e74705SXin Li <li>A simple and hackable code base</li> 54*67e74705SXin Li <li>A single unified parser for C, Objective C, C++, and Objective C++</li> 55*67e74705SXin Li <li>Conformance with C/C++/ObjC and their variants</li> 56*67e74705SXin Li </ul> 57*67e74705SXin Li 58*67e74705SXin Li <p>Of course this is only a rough outline of the goals and features of 59*67e74705SXin Li Clang. To get a true sense of what it is all about, see the <a 60*67e74705SXin Li href="features.html">Features</a> section, which breaks 61*67e74705SXin Li each of these down and explains them in more detail.</p> 62*67e74705SXin Li 63*67e74705SXin Li 64*67e74705SXin Li <!--=====================================================================--> 65*67e74705SXin Li <h2>Why?</h2> 66*67e74705SXin Li <!--=====================================================================--> 67*67e74705SXin Li 68*67e74705SXin Li <p>Development of the new front-end was started out of a need 69*67e74705SXin Li for a compiler that allows better diagnostics, better integration with 70*67e74705SXin Li IDEs, a license that is compatible with commercial products, and a 71*67e74705SXin Li nimble compiler that is easy to develop and maintain. All of these were 72*67e74705SXin Li motivations for starting work on a new front-end that could 73*67e74705SXin Li meet these needs.</p> 74*67e74705SXin Li 75*67e74705SXin Li <p>A good (but quite dated) introduction to Clang can be found in the 76*67e74705SXin Li following video lectures:</p> 77*67e74705SXin Li 78*67e74705SXin Li <ul> 79*67e74705SXin Li <li><a href="clang_video-05-25-2007.html">Clang Introduction</a> 80*67e74705SXin Li (May 2007)</li> 81*67e74705SXin Li <li><a href="clang_video-07-25-2007.html">Features and Performance of 82*67e74705SXin Li Clang</a> (July 2007)</li> 83*67e74705SXin Li </ul> 84*67e74705SXin Li 85*67e74705SXin Li <p>For a more detailed comparison between Clang and other compilers, please 86*67e74705SXin Li see the <a href="comparison.html">clang comparison page</a>.</p> 87*67e74705SXin Li 88*67e74705SXin Li <!--=====================================================================--> 89*67e74705SXin Li <h2>Current Status</h2> 90*67e74705SXin Li <!--=====================================================================--> 91*67e74705SXin Li 92*67e74705SXin Li <p>Clang is considered to 93*67e74705SXin Li be a production quality C, Objective-C, C++ and Objective-C++ compiler when 94*67e74705SXin Li targeting X86-32, X86-64, and ARM (other targets may have caveats, but are 95*67e74705SXin Li usually easy to fix). If you are looking for source analysis or 96*67e74705SXin Li source-to-source transformation tools, Clang is probably a great 97*67e74705SXin Li solution for you. Clang supports C++11, please see the <a 98*67e74705SXin Li href="cxx_status.html">C++ status</a> page for more 99*67e74705SXin Li information.</p> 100*67e74705SXin Li 101*67e74705SXin Li <!--=====================================================================--> 102*67e74705SXin Li <h2>Get it and get involved!</h2> 103*67e74705SXin Li <!--=====================================================================--> 104*67e74705SXin Li 105*67e74705SXin Li <p>Start by <a href="get_started.html">getting the code, building it, and 106*67e74705SXin Li playing with it</a>. This will show you the sorts of things we can do 107*67e74705SXin Li today and will let you have the "Clang experience" first hand: hopefully 108*67e74705SXin Li it will "resonate" with you. :)</p> 109*67e74705SXin Li 110*67e74705SXin Li <p>Once you've done that, please consider <a href="get_involved.html">getting 111*67e74705SXin Li involved in the clang community</a>. The Clang developers include numerous 112*67e74705SXin Li volunteer contributors with a variety of backgrounds. If you're 113*67e74705SXin Li interested in 114*67e74705SXin Li following the development of Clang, signing up for a mailing list is a good 115*67e74705SXin Li way to learn about how the project works.</p> 116*67e74705SXin Li</div> 117*67e74705SXin Li</body> 118*67e74705SXin Li</html> 119