mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 23:51:56 +00:00
2ef158752a
* Downplay cfe-commits as a place where design discussion happens. Instead, call it out as a place for historical information. * Add a link to Discord * Add a link to Office Hours
134 lines
5.9 KiB
HTML
Executable File
134 lines
5.9 KiB
HTML
Executable File
<!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>Contribute</h2>
|
|
|
|
See the <a href="hacking.html">hacking</a> document for information on how
|
|
to author patches.
|
|
|
|
<h2>Follow what's going on</h2>
|
|
|
|
<p>Clang is a subproject of the <a href="https://llvm.org">LLVM Project</a>
|
|
and has a Discourse forum and mailing list:</p>
|
|
|
|
<ul>
|
|
<li><a href="https://discourse.llvm.org/c/clang/6">Clang Frontend Discourse forum</a> -
|
|
This forum is for discussions related to Clang (questions and answers, design
|
|
discussions, RFCs, etc).</li>
|
|
|
|
<li><a href="https://discord.gg/xS7Z362">Discord chat</a> - Real-time chat for
|
|
discussions related to Clang (primarily for questions and answers).</li>
|
|
|
|
<li>Regular meetings are held on the
|
|
<a href="https://drive.google.com/file/d/1S7V0MHP4xMs1yUQ9Gv9LHn5bwDfFVapn/view?usp=sharing">
|
|
first and third Wednesday</a> of each month to discuss C and C++
|
|
standards-related activities happening within the Clang community. These
|
|
meetings are a way to coordinate efforts between implementers and provide
|
|
updates on how standards activities are going. Meeting agendas and minutes are
|
|
available
|
|
<a href="https://docs.google.com/document/d/1x5-RbOC6-jnI_NcJ9Dp4pSmGhhNe7lUevuWUIB46TeM/edit?usp=sharing">
|
|
here<a>.
|
|
</li>
|
|
|
|
<li><a href="https://llvm.org/docs/GettingInvolved.html#office-hours">Clang office hours</a> -
|
|
People within the community hold dedicated office hours at different points
|
|
during the month, which is a great way opportunity for getting questions
|
|
answered, having more in-depth design discussions, or learning about what's
|
|
going on in the community in general.</li>
|
|
|
|
<li><a href="https://lists.llvm.org/mailman/listinfo/cfe-commits">cfe-commits
|
|
</a> - Historical record of commits to Clang and contains early community patch
|
|
review commentary.</li>
|
|
|
|
</ul>
|
|
|
|
<p>The most common way to talk with other developers on the project is through
|
|
the <a href="https://discourse.llvm.org/c/clang/6">Clang Frontend Discourse forum
|
|
</a>. The clang forum is a very friendly place and we welcome newcomers. The
|
|
forum is archived so you can browse through previous discussions or follow
|
|
development on the web if you prefer.</p>
|
|
|
|
<p>If you're looking for something to work on, check out our <a
|
|
href="OpenProjects.html">Open Projects</a> page or look through the <a
|
|
href="https://github.com/llvm/llvm-project/issues/">LLVM bug tracker</a>.</p>
|
|
|
|
<h2 id="criteria">Contributing Extensions to Clang</h2>
|
|
|
|
<p>Clang is designed to support experimentation,
|
|
allowing programmers to easily extend the compiler to support great
|
|
new language features and tools. At some point, the authors of these
|
|
extensions may propose that the extensions become a part of Clang
|
|
itself, to benefit the whole Clang community. However, extensions
|
|
(particularly language extensions) have long-term maintenance costs
|
|
for Clang. The benefits of the extension need to be evaluated against
|
|
these costs. The Clang project uses the following criteria for this
|
|
evaluation:</p>
|
|
|
|
<ol>
|
|
<li>Evidence of a significant user community: This is based on a number of
|
|
factors, including an existing user community, the perceived likelihood that
|
|
users would adopt such a feature if it were available, and any secondary
|
|
effects that come from, e.g., a library adopting the feature and providing
|
|
benefits to its users.</li>
|
|
|
|
<li>A specific need to reside within the Clang tree: There are some extensions
|
|
that would be better expressed as a separate tool, and should remain as
|
|
separate tools even if they end up being hosted as part of the LLVM umbrella
|
|
project.</li>
|
|
|
|
<li>A specification: The specification must be sufficient to understand the
|
|
design of the feature as well as interpret the meaning of specific examples.
|
|
The specification should be detailed enough that another compiler vendor
|
|
could implement the feature.</li>
|
|
|
|
<li>Representation within the appropriate governing organization: For
|
|
extensions to a language governed by a standards committee (C, C++, OpenCL),
|
|
the extension itself must have an active proposal and proponent within that
|
|
committee and have a reasonable chance of acceptance. Clang should drive the
|
|
standard, not diverge from it. This criterion does not apply to all
|
|
extensions, since some extensions fall outside of the realm of the standards
|
|
bodies.</li>
|
|
|
|
<li>A long-term support plan: increasingly large or complex extensions to
|
|
Clang need matching commitments to supporting them over time, including
|
|
improving their implementation and specification as Clang evolves. The
|
|
capacity of the contributor to make that commitment is as important as the
|
|
commitment itself.</li>
|
|
|
|
<li>A high-quality implementation: The implementation must fit well into
|
|
Clang's architecture, follow LLVM's coding conventions, and meet Clang's
|
|
quality standards, including diagnostics and complete AST
|
|
representations. This is particularly important for language extensions,
|
|
because users will learn how those extensions work through the behavior of the
|
|
compiler.</li>
|
|
|
|
<li>A test suite: Extensive testing is crucial to ensure that the language
|
|
extension is not broken by ongoing maintenance in Clang. The test suite
|
|
should be complete enough that another compiler vendor could conceivably
|
|
validate their implementation of the feature against it.</li>
|
|
</ol>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|