diff options
author | Cedric Venet <cedric.venet@laposte.net> | 2009-02-14 20:20:19 +0000 |
---|---|---|
committer | Cedric Venet <cedric.venet@laposte.net> | 2009-02-14 20:20:19 +0000 |
commit | 3d658640abc128dcc84a5a5201456395c86c4fa6 (patch) | |
tree | d46663850c78e313eb0968ad3d327e8b18090280 /www/get_involved.html | |
parent | f3710babc1ba40779c0fc64e6657cfc84dee7545 (diff) |
Add svn:eol-style=native to some files
Correct two files with inconsistent lines endings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64564 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'www/get_involved.html')
-rw-r--r-- | www/get_involved.html | 346 |
1 files changed, 173 insertions, 173 deletions
diff --git a/www/get_involved.html b/www/get_involved.html index 94268e82e6..643f6b4c4d 100644 --- a/www/get_involved.html +++ b/www/get_involved.html @@ -1,173 +1,173 @@ -<!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 - Get Involved</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>Getting Involved with the Clang Project</h1>
-
-<p>Once you have <a href="get_started.html">checked out and built</a> clang and
-played around with it, you might be wondering what you can do to make it better
-and contribute to its development. Alternatively, maybe you just want to follow
-the development of the project to see it progress.
-</p>
-
-<h2>Follow what's going on</h2>
-
-<p>Clang is a subproject of the <a href="http://llvm.org">LLVM Project</a>, but
-has its own mailing lists because the communities have people with different
-interests. The two clang lists are:</p>
-
-<ul>
-<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits
-</a> - This list is for patch submission/discussion.</li>
-
-<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a> -
-This list is for everything else clang related (questions and answers, bug
-reports, etc).</li>
-
-</ul>
-
-<p>If you are interested in clang only, these two lists should be all
-you need. If you are interested in the LLVM optimizer and code generator,
-please consider signing up for <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> and <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
-as well.</p>
-
-
-<p>The best way to talk with other developers on the project is through the <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev mailing
-list</a>. The clang mailing list is a very friendly place and we welcome
-newcomers. In addition to the cfe-dev list, a significant amount of design
-discussion takes place on the <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits mailing
-list</a>. All of these lists have archives, so you can browse through previous
-discussions or follow the list development on the web if you prefer.</p>
-
-
-<h2>Open Projects</h2>
-
-<p>Here are a few tasks that are available for newcomers to work on, depending
-on what your interests are. This list is provided to generate ideas, it is not
-intended to be comprehensive. Please ask on cfe-dev for more specifics or to
-verify that one of these isn't already completed. :)</p>
-
-<ul>
-<li><b>Compile your favorite C/ObjC project with "clang -fsyntax-only"</b>:
-the clang type checker and verifier is quite close to complete (but not bug
-free!) for C and Objective C. We appreciate all reports of code that is
-rejected by the front-end, and if you notice invalid code that is not rejected
-by clang, that is also very important to us. For make-based projects,
-the <a href="get_started.html#ccc"><code>ccc</code></a> script in clang's
-<tt>utils</tt> folder might help to get you started.</li>
-
-<li><b>Compile your favorite C project with "clang -emit-llvm"</b>:
-The clang to LLVM converter is getting more mature, so you may be able to
-compile it. If not, please let us know. Again,
-<a href="get_started.html#ccc"><code>ccc</code></a> might help you. Once it
-compiles it should run. If not, that's a bug :)</li>
-
-<li><b>Debug Info Generation</b>: -emit-llvm doesn't fully support emission
-of <a href="http://llvm.org/docs/SourceLevelDebugging.html">LLVM debug info</a>
-(which the code generator turns into DWARF). The missing pieces are pretty
-minor at this point.</li>
-
-<li><b>Overflow detection</b>: an interesting project would be to add a -ftrapv
-compilation mode that causes -emit-llvm to generate overflow tests for all
-signed integer arithmetic operators, and call abort if they overflow. Overflow
-is undefined in C and hard for people to reason about. LLVM IR also has
-intrinsics for generating arithmetic with overflow checks directly.</li>
-
-<li><b>Undefined behavior checking</b>: similar to adding -ftrapv, codegen could
-insert runtime checks for all sorts of different undefined behaviors, from
-reading uninitialized variables, buffer overflows, and many other things. This
-checking would be expensive, but the optimizers could eliminate many of the
-checks in some cases, and it would be very interesting to test code in this mode
-for certain crowds of people. Because the inserted code is coming from clang,
-the "abort" message could be very detailed about exactly what went wrong.</li>
-
-<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big
-job, but there are lots of little pieces that can be picked off and implemented.
-See the <a href="cxx_status.html">C++ status report page</a> to find out what is
-missing and what is already at least partially supported.</li>
-
-<li><b>Improve target support</b>: The current target interfaces are heavily
-stubbed out and need to be implemented fully. See the FIXME's in TargetInfo.
-Additionally, the actual target implementations (instances of TargetInfoImpl)
-also need to be completed. This includes defining builtin macros for linux
-targets and other stuff like that.</li>
-
-<li><b>Implement 'builtin' headers</b>: GCC provides a bunch of builtin headers,
-such as stdbool.h, iso646.h, float.h, limits.h, etc. It also provides a bunch
-of target-specific headers like altivec.h and xmmintrin.h. clang will
-eventually need to provide its own copies of these (and there is a <a href=
-"http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000560.html">lot of
-improvement</a> that can be made to the GCC ones!) that are clean-room
-implemented to avoid GPL taint.</li>
-
-<li><b>Implement a clang 'libgcc'</b>: As with the headers, clang (or a another
-related subproject of llvm) will need to implement the features that libgcc
-provides. libgcc provides a bunch of routines the code generator uses for
-"fallback" when the chip doesn't support some operation (e.g. 64-bit divide on
-a 32-bit chip). It also provides software floating point support and many other
-things. I don't think that there is a specific licensing reason to reimplement
-libgcc, but there is a lot of room for improvement in it in many
-dimensions.</li>
-
-<li><b>Implement an tool to generate code documentation</b>: Clang's
-library-based design allows it to be used by a variety of tools that reason
-about source code. One great application of Clang would be to build an
-auto-documentation system like doxygen that generates code documentation from
-source code. The advantage of using Clang for such a tool is that the tool would
-use the same preprocessor/parser/ASTs as the compiler itself, giving it a very
-rich understanding of the code.</li>
-
-<li><b>Use clang libraries to implement better versions of existing tools</b>:
-Clang is built as a set of libraries, which means that it is possible to
-implement capabilities similar to other source language tools, improving them
-in various ways. Two examples are <a href="http://distcc.samba.org/">distcc</a>
-and the <a href="http://delta.tigris.org/">delta testcase reduction tool</a>.
-The former can be improved to scale better and be more efficient. The later
-could also be faster and more efficient at reducing C-family programs if built
-on the clang preprocessor.</li>
-
-<li><b>Use clang libraries to extend Ragel with a JIT</b>: <a
-href="http://research.cs.queensu.ca/~thurston/ragel/">Ragel</a> is a state
-machine compiler that lets you embed C code into state machines and generate
-C code. It would be relatively easy to turn this into a JIT compiler using
-LLVM.</li>
-
-<li><b>Self-testing using clang</b>: There are several neat ways to
-improve the quality of clang by self-testing. Some examples:
-<ul>
- <li>Improve the reliability of AST printing and serialization by
- ensuring that the AST produced by clang on an input doesn't change
- when it is reparsed or unserialized.
-
- <li>Improve parser reliability and error generation by automatically
- or randomly changing the input checking that clang doesn't crash and
- that it doesn't generate excessive errors for small input
- changes. Manipulating the input at both the text and token levels is
- likely to produce interesting test cases.
-</ul>
-</li>
-
-</ul>
-
-<p>If you hit a bug with clang, it is very useful for us if you reduce the code
-that demonstrates the problem down to something small. There are many ways to
-do this; ask on cfe-dev for advice.</p>
-
-</div>
-</body>
-</html>
+<!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 - Get Involved</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>Getting Involved with the Clang Project</h1> + +<p>Once you have <a href="get_started.html">checked out and built</a> clang and +played around with it, you might be wondering what you can do to make it better +and contribute to its development. Alternatively, maybe you just want to follow +the development of the project to see it progress. +</p> + +<h2>Follow what's going on</h2> + +<p>Clang is a subproject of the <a href="http://llvm.org">LLVM Project</a>, but +has its own mailing lists because the communities have people with different +interests. The two clang lists are:</p> + +<ul> +<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits +</a> - This list is for patch submission/discussion.</li> + +<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a> - +This list is for everything else clang related (questions and answers, bug +reports, etc).</li> + +</ul> + +<p>If you are interested in clang only, these two lists should be all +you need. If you are interested in the LLVM optimizer and code generator, +please consider signing up for <a +href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> and <a +href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a> +as well.</p> + + +<p>The best way to talk with other developers on the project is through the <a +href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev mailing +list</a>. The clang mailing list is a very friendly place and we welcome +newcomers. In addition to the cfe-dev list, a significant amount of design +discussion takes place on the <a +href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits mailing +list</a>. All of these lists have archives, so you can browse through previous +discussions or follow the list development on the web if you prefer.</p> + + +<h2>Open Projects</h2> + +<p>Here are a few tasks that are available for newcomers to work on, depending +on what your interests are. This list is provided to generate ideas, it is not +intended to be comprehensive. Please ask on cfe-dev for more specifics or to +verify that one of these isn't already completed. :)</p> + +<ul> +<li><b>Compile your favorite C/ObjC project with "clang -fsyntax-only"</b>: +the clang type checker and verifier is quite close to complete (but not bug +free!) for C and Objective C. We appreciate all reports of code that is +rejected by the front-end, and if you notice invalid code that is not rejected +by clang, that is also very important to us. For make-based projects, +the <a href="get_started.html#ccc"><code>ccc</code></a> script in clang's +<tt>utils</tt> folder might help to get you started.</li> + +<li><b>Compile your favorite C project with "clang -emit-llvm"</b>: +The clang to LLVM converter is getting more mature, so you may be able to +compile it. If not, please let us know. Again, +<a href="get_started.html#ccc"><code>ccc</code></a> might help you. Once it +compiles it should run. If not, that's a bug :)</li> + +<li><b>Debug Info Generation</b>: -emit-llvm doesn't fully support emission +of <a href="http://llvm.org/docs/SourceLevelDebugging.html">LLVM debug info</a> +(which the code generator turns into DWARF). The missing pieces are pretty +minor at this point.</li> + +<li><b>Overflow detection</b>: an interesting project would be to add a -ftrapv +compilation mode that causes -emit-llvm to generate overflow tests for all +signed integer arithmetic operators, and call abort if they overflow. Overflow +is undefined in C and hard for people to reason about. LLVM IR also has +intrinsics for generating arithmetic with overflow checks directly.</li> + +<li><b>Undefined behavior checking</b>: similar to adding -ftrapv, codegen could +insert runtime checks for all sorts of different undefined behaviors, from +reading uninitialized variables, buffer overflows, and many other things. This +checking would be expensive, but the optimizers could eliminate many of the +checks in some cases, and it would be very interesting to test code in this mode +for certain crowds of people. Because the inserted code is coming from clang, +the "abort" message could be very detailed about exactly what went wrong.</li> + +<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big +job, but there are lots of little pieces that can be picked off and implemented. +See the <a href="cxx_status.html">C++ status report page</a> to find out what is +missing and what is already at least partially supported.</li> + +<li><b>Improve target support</b>: The current target interfaces are heavily +stubbed out and need to be implemented fully. See the FIXME's in TargetInfo. +Additionally, the actual target implementations (instances of TargetInfoImpl) +also need to be completed. This includes defining builtin macros for linux +targets and other stuff like that.</li> + +<li><b>Implement 'builtin' headers</b>: GCC provides a bunch of builtin headers, +such as stdbool.h, iso646.h, float.h, limits.h, etc. It also provides a bunch +of target-specific headers like altivec.h and xmmintrin.h. clang will +eventually need to provide its own copies of these (and there is a <a href= +"http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000560.html">lot of +improvement</a> that can be made to the GCC ones!) that are clean-room +implemented to avoid GPL taint.</li> + +<li><b>Implement a clang 'libgcc'</b>: As with the headers, clang (or a another +related subproject of llvm) will need to implement the features that libgcc +provides. libgcc provides a bunch of routines the code generator uses for +"fallback" when the chip doesn't support some operation (e.g. 64-bit divide on +a 32-bit chip). It also provides software floating point support and many other +things. I don't think that there is a specific licensing reason to reimplement +libgcc, but there is a lot of room for improvement in it in many +dimensions.</li> + +<li><b>Implement an tool to generate code documentation</b>: Clang's +library-based design allows it to be used by a variety of tools that reason +about source code. One great application of Clang would be to build an +auto-documentation system like doxygen that generates code documentation from +source code. The advantage of using Clang for such a tool is that the tool would +use the same preprocessor/parser/ASTs as the compiler itself, giving it a very +rich understanding of the code.</li> + +<li><b>Use clang libraries to implement better versions of existing tools</b>: +Clang is built as a set of libraries, which means that it is possible to +implement capabilities similar to other source language tools, improving them +in various ways. Two examples are <a href="http://distcc.samba.org/">distcc</a> +and the <a href="http://delta.tigris.org/">delta testcase reduction tool</a>. +The former can be improved to scale better and be more efficient. The later +could also be faster and more efficient at reducing C-family programs if built +on the clang preprocessor.</li> + +<li><b>Use clang libraries to extend Ragel with a JIT</b>: <a +href="http://research.cs.queensu.ca/~thurston/ragel/">Ragel</a> is a state +machine compiler that lets you embed C code into state machines and generate +C code. It would be relatively easy to turn this into a JIT compiler using +LLVM.</li> + +<li><b>Self-testing using clang</b>: There are several neat ways to +improve the quality of clang by self-testing. Some examples: +<ul> + <li>Improve the reliability of AST printing and serialization by + ensuring that the AST produced by clang on an input doesn't change + when it is reparsed or unserialized. + + <li>Improve parser reliability and error generation by automatically + or randomly changing the input checking that clang doesn't crash and + that it doesn't generate excessive errors for small input + changes. Manipulating the input at both the text and token levels is + likely to produce interesting test cases. +</ul> +</li> + +</ul> + +<p>If you hit a bug with clang, it is very useful for us if you reduce the code +that demonstrates the problem down to something small. There are many ways to +do this; ask on cfe-dev for advice.</p> + +</div> +</body> +</html> |