blob: ae71376c7d37b3d868c0f7eea8cfc8e545a1f602 [file] [log] [blame]
Kevin8e8f64e2007-10-06 21:28:47 +00001<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
Chris Lattner29754e62007-12-09 08:17:09 +00002<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
3 "http://www.w3.org/TR/html4/strict.dtd">
Kevin8e8f64e2007-10-06 21:28:47 +00004<html>
5<head>
Chris Lattner29754e62007-12-09 08:17:09 +00006 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
7 <title>"clang" C Language Family Frontend for LLVM</title>
8 <link type="text/css" rel="stylesheet" href="menu.css" />
9 <link type="text/css" rel="stylesheet" href="content.css" />
Kevin8e8f64e2007-10-06 21:28:47 +000010</head>
11<body>
Chris Lattnercf086ea2007-12-10 08:19:29 +000012<!--#include virtual="menu.html.incl"-->
13<div id="content">
14 <!--*********************************************************************-->
15 <h1>clang: a C language family frontend for LLVM</h1>
16 <!--*********************************************************************-->
17
18 <p>The goal of the Clang project is to create a new C, C++, Objective C and
19 Objective C++ front-end for the <a href="http://www.llvm.org/">LLVM</a>
20 compiler.</p>
21
22 <!--=====================================================================-->
23 <h2><a name="goals">Features and Goals</a></h2>
24 <!--=====================================================================-->
25
26 <p>Some of the goals for the project include the following:</p>
27
28 <p><b><a href="features.html#enduser">End-User Features</a></b>:</p>
Chris Lattner5ea74932007-12-09 09:05:23 +000029
Chris Lattnercf086ea2007-12-10 08:19:29 +000030 <ul>
Chris Lattnerde9a4f52007-12-13 05:42:27 +000031 <li>Fast compiles and low memory use</li>
Chris Lattnercf086ea2007-12-10 08:19:29 +000032 <li>Expressive diagnostics</li>
33 <li>GCC compatibility</li>
34 </ul>
Chris Lattner5ea74932007-12-09 09:05:23 +000035
Chris Lattnercf086ea2007-12-10 08:19:29 +000036 <p><b><a href="features.html#applications">Utility and
37 Applications</a></b>:</p>
38
39 <ul>
Chris Lattnercddb2af2007-12-10 18:56:37 +000040 <li>Modular library based architecture</li>
41 <li>Support diverse clients (refactoring, static analysis, code generation, etc)</li>
42 <li>Allow tight integration with IDEs</li>
Chris Lattnercf086ea2007-12-10 08:19:29 +000043 <li>Use the LLVM 'BSD' License</li>
44 </ul>
45
46 <p><b><a href="features.html#design">Internal Design and
47 Implementation</a></b>:</p>
48
49 <ul>
50 <li>A real-world, production quality compiler</li>
51 <li>A simple and hackable code base</li>
52 <li>A single unified parser for C, Objective C, C++, and Objective C++</li>
53 <li>Conformance with C/C++/ObjC and their variants</li>
54 </ul>
55
56 <p>Of course this is only a rough outline of the goals and features of
57 Clang. To get a true sense of what it is all about, see the <a
58 href="features.html">Features</a> section, which breaks
59 each of these down and explains them in more detail.</p>
60
61
62 <!--=====================================================================-->
63 <h2>Why?</h2>
64 <!--=====================================================================-->
65
66 <p>The development of a new front-end was started out of a need -- a need
67 for a compiler that allows better diagnostics, better integration with
68 IDEs, a license that is compatible with commercial products, and a
69 nimble compiler that is easy to develop and maintain. All of these were
70 motivations for starting work on a new front-end that could
71 meet these needs.</p>
72
73 <p>A good (but quite dated) introduction to Clang can be found in the
74 following video lectures:</p>
75
76 <ul>
77 <li><a href="clang_video-05-25-2007.html">Clang Introduction</a>
78 (May 2007)</li>
79 <li><a href="clang_video-07-25-2007.html">Features and Performance of
80 Clang</a> (July 2007)</li>
81 </ul>
82
83 <p>For a more detailed comparison between Clang and other compilers, please
84 see the <a href="comparison.html">clang comparison page</a>.</p>
85
86 <!--=====================================================================-->
87 <h2>Current Status</h2>
88 <!--=====================================================================-->
89
90 <p>Clang is still in early development stages. If you are looking for
91 source analysis or source-to-source transformation tools, clang is probably
92 a great solution for you. If you want to use it as a drop in C compiler, it
93 is not yet ready.</p>
94
95 <p>Clang currently has pretty good parsing and semantic analysis support for
96 C and Objective-C right now, and bugs are usually quickly fixed once
97 reported. C++ support is still very early, and we don't expect to have
98 respectable C++ support for another 2 years or so.</p>
99
100 <!--=====================================================================-->
101 <h2>Get Involved</h2>
102 <!--=====================================================================-->
103
104 <p>The developers of Clang include contributers from Apple and numerous
105 other volunteers. If you are interested in joining the community or
106 learning more, please consider joining the <a
107 href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a>
108 mailing list, or start by browsing its archives.</p>
109
110 <p>If you are interested in trying out Clang, please see the build
111 instructions on the <a href="get_involved.html#build">Get Involved</a>
112 page.</p>
113</div>
Kevin8e8f64e2007-10-06 21:28:47 +0000114</body>
Chris Lattner5ea74932007-12-09 09:05:23 +0000115</html>