blob: b64f42c9ba4bd0e0fe7a6c2a8269f82862e3e50e [file] [log] [blame]
Chris Lattner5d861c32007-12-13 05:42:27 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
Kevinafda30a2007-10-06 01:28:23 +00003<html>
Kevinb3b52c42007-10-05 21:18:52 +00004<head>
Chris Lattner5d861c32007-12-13 05:42:27 +00005 <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
6 <title>Clang - Get Involved</title>
7 <link type="text/css" rel="stylesheet" href="menu.css" />
8 <link type="text/css" rel="stylesheet" href="content.css" />
Kevinb3b52c42007-10-05 21:18:52 +00009</head>
10<body>
Chris Lattner5d861c32007-12-13 05:42:27 +000011
Kevinb3b52c42007-10-05 21:18:52 +000012<!--#include virtual="menu.html.incl"-->
Chris Lattner5d861c32007-12-13 05:42:27 +000013
Kevinb3b52c42007-10-05 21:18:52 +000014<div id="content">
Chris Lattner5d861c32007-12-13 05:42:27 +000015
Chris Lattnerda71d842007-12-13 06:20:15 +000016<h1>Getting Involved with the Clang Project</h1>
Chris Lattner5d861c32007-12-13 05:42:27 +000017
Chris Lattnerda71d842007-12-13 06:20:15 +000018<p>Once you have <a href="get_started.html">checked out and built</a> clang and
19played around with it, you might be wondering what you can do to make it better
20and contribute to its development. Alternatively, maybe you just want to follow
21the development of the project to see it progress.
22</p>
Chris Lattner5d861c32007-12-13 05:42:27 +000023
Chris Lattnerda71d842007-12-13 06:20:15 +000024<h2>Follow what's going on</h2>
Chris Lattner4651ab62007-10-06 05:42:47 +000025
Chris Lattner5d861c32007-12-13 05:42:27 +000026<p>Clang is a subproject of the <a href="http://llvm.org">LLVM Project</a>, but
27has its own mailing lists because the communities have people with different
Chris Lattnerda71d842007-12-13 06:20:15 +000028interests. The two clang lists are:</p>
Chris Lattner5d861c32007-12-13 05:42:27 +000029
Kevinb3b52c42007-10-05 21:18:52 +000030<ul>
Chris Lattner5d861c32007-12-13 05:42:27 +000031<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits
32</a> - This list is for patch submission/discussion.</li>
33
34<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a> -
Chris Lattnerda71d842007-12-13 06:20:15 +000035This list is for everything else clang related (questions and answers, bug
36reports, etc).</li>
37
Kevinb3b52c42007-10-05 21:18:52 +000038</ul>
Chris Lattner5d861c32007-12-13 05:42:27 +000039
Chris Lattnerda71d842007-12-13 06:20:15 +000040<p>If you are interested in clang only, these two lists should be all
41you need. If you are interested in the LLVM optimizer and code generator,
42please consider signing up for <a
43href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> and <a
44href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
45as well.</p>
Kevinb3b52c42007-10-05 21:18:52 +000046
47
Chris Lattnerda71d842007-12-13 06:20:15 +000048<p>The best way to talk with other developers on the project is through the <a
49href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev mailing
50list</a>. The clang mailing list is a very friendly place and we welcome
51newcomers. In addition to the cfe-dev list, a significant amount of design
52discussion takes place on the <a
53href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits mailing
54list</a>. All of these lists have archives, so you can browse through previous
55discussions or follow the list development on the web if you prefer.</p>
Kevinb3b52c42007-10-05 21:18:52 +000056
57
Chris Lattnerda71d842007-12-13 06:20:15 +000058<h2>Open Projects</h2>
Kevinb3b52c42007-10-05 21:18:52 +000059
Chris Lattner387edf92007-12-13 06:41:15 +000060<p>Here are a few tasks that are available for newcomers to work on, depending
61on what your interests are. This list is provided to generate ideas, it is not
62intended to be comprehensive. Please ask on cfe-dev for more specifics or to
63verify that one of these isn't already completed. :)</p>
Kevinb3b52c42007-10-05 21:18:52 +000064
Chris Lattner4651ab62007-10-06 05:42:47 +000065<ul>
Chris Lattnerda71d842007-12-13 06:20:15 +000066<li><b>Compile your favorite C/ObjC project with "clang -fsyntax-only"</b>:
67the clang type checker and verifier is quite close to complete (but not bug
68free!) for C and Objective C. We appreciate all reports of code that is
69rejected by the front-end, and if you notice invalid code that is not rejected
Chris Lattner38bc7232007-12-19 22:17:19 +000070by clang, that is also very important to us. For make-based projects,
71<a href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000613.html">
72the script attached to this post</a> might help to get you started.</li>
Chris Lattnerda71d842007-12-13 06:20:15 +000073
Chris Lattner387edf92007-12-13 06:41:15 +000074<li><b>Compile your favorite C project with "clang -emit-llvm"</b>:
75The clang to LLVM converter is getting more mature, so you may be able to
Chris Lattner38bc7232007-12-19 22:17:19 +000076compile it. If not, please let us know. Again,
77<a href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000613.html">
78the attachment to this post</a> might help you. Once it compiles it should
79run. If not, that's a bug :)</li>
Chris Lattnerda71d842007-12-13 06:20:15 +000080
Chris Lattner1f828c42007-12-13 17:25:36 +000081<li><b>Work on code generation for Objective C</b>: -emit-llvm support for
Chris Lattnerd91919f2007-12-13 17:27:09 +000082Objective C is basically nonexistent at the time of this writing, this is a
Chris Lattner387edf92007-12-13 06:41:15 +000083nice open project that can be tackled incrementally (one language feature at a
84time).</li>
85
Chris Lattner1f828c42007-12-13 17:25:36 +000086<li><b>Debug Info Generation</b>: -emit-llvm doesn't currently support emission
87of <a href="http://llvm.org/docs/SourceLevelDebugging.html">LLVM debug info</a>
88(which the code generator turns into DWARF). Adding this should be
89straight-forward if you follow the example of what llvm-gcc generates.</li>
90
Chris Lattner387edf92007-12-13 06:41:15 +000091<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big
Argiris Kirtzidis92b6dca2008-07-03 08:21:51 +000092job, but there are lots of little pieces that can be picked off and implemented.
93See the <a href="cxx_status.html">C++ status report page</a> to find out what is
94missing and what is already at least partially supported.</li>
Chris Lattner387edf92007-12-13 06:41:15 +000095
96<li><b>Improve target support</b>: The current target interfaces are heavily
97stubbed out and need to be implemented fully. See the FIXME's in TargetInfo.
98Additionally, the actual target implementations (instances of TargetInfoImpl)
99also need to be completed. This includes defining builtin macros for linux
100targets and other stuff like that.</li>
101
102<li><b>Implement 'builtin' headers</b>: GCC provides a bunch of builtin headers,
103such as stdbool.h, iso646.h, float.h, limits.h, etc. It also provides a bunch
104of target-specific headers like altivec.h and xmmintrin.h. clang will
105eventually need to provide its own copies of these (and there is a <a href=
106"http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000560.html">lot of
107improvement</a> that can be made to the GCC ones!) that are clean-room
108implemented to avoid GPL taint.</li>
109
110<li><b>Implement a clang 'libgcc'</b>: As with the headers, clang (or a another
111related subproject of llvm) will need to implement the features that libgcc
112provides. libgcc provides a bunch of routines the code generator uses for
113"fallback" when the chip doesn't support some operation (e.g. 64-bit divide on
114a 32-bit chip). It also provides software floating point support and many other
115things. I don't think that there is a specific licensing reason to reimplement
116libgcc, but there is a lot of room for improvement in it in many
117dimensions.</li>
118
Chris Lattner4651ab62007-10-06 05:42:47 +0000119</ul>
Chris Lattnerda71d842007-12-13 06:20:15 +0000120
Chris Lattner387edf92007-12-13 06:41:15 +0000121<p>If you hit a bug with clang, it is very useful for us if you reduce the code
122that demonstrates the problem down to something small. There are many ways to
Ted Kremenek851fa9d2007-12-13 16:41:01 +0000123do this; ask on cfe-dev for advice.</p>
Chris Lattner387edf92007-12-13 06:41:15 +0000124
Kevinb3b52c42007-10-05 21:18:52 +0000125</div>
126</body>
Chris Lattner7defaf42007-10-11 00:38:03 +0000127</html>