-
Notifications
You must be signed in to change notification settings - Fork 11.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a page to track the status of C proposals in Clang.
- Loading branch information
1 parent
026170d
commit 3a7a774
Showing
2 changed files
with
301 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,300 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||
<title>Clang - C Programming Language Status</title> | ||
<link type="text/css" rel="stylesheet" href="menu.css"> | ||
<link type="text/css" rel="stylesheet" href="content.css"> | ||
<style type="text/css"> | ||
.none { background-color: #FFCCCC } | ||
.partial { background-color: #FFE0B0 } | ||
.unreleased { background-color: #FFFF99 } | ||
.unknown { background-color: #FF55FF } | ||
.full { background-color: #CCFF99 } | ||
.na { background-color: #DDDDDD } | ||
:target { background-color: #FFFFBB; outline: #DDDD55 solid thin; } | ||
th { background-color: #FFDDAA } | ||
td { vertical-align: middle } | ||
tt { white-space: nowrap } | ||
</style> | ||
</head> | ||
<body> | ||
|
||
<!--#include virtual="menu.html.incl"--> | ||
|
||
<div id="content"> | ||
|
||
<!--*************************************************************************--> | ||
<h1>C Support in Clang</h1> | ||
<!--*************************************************************************--> | ||
|
||
<p>Clang implements the following published and upcoming ISO C standards:</p> | ||
|
||
<table width="689" border="1" cellspacing="0"> | ||
<tr> | ||
<th>Language Standard</th> | ||
<th>Flag</th> | ||
<th>Available in Clang?</th> | ||
</tr> | ||
<tr> | ||
<td><a href="#c89">C89</a></td> | ||
<td><tt>-std=c89</tt></td> | ||
<td class="full" align="center">Yes</td> | ||
</tr> | ||
<tr> | ||
<td><a href="#c99">C99</a></td> | ||
<td><tt>-std=c99</tt></td> | ||
<td class="unknown" align="center">Almost certainly</td> | ||
</tr> | ||
<tr> | ||
<td><a href="#c11">C11</a></td> | ||
<td><tt>-std=c11</tt></td> | ||
<td class="unknown" align="center">Probably</td> | ||
</tr> | ||
<tr> | ||
<td><a href="#c17">C17</a></td> | ||
<td><tt>-std=c17</tt></td> | ||
<td class="unknown" align="center">Maybe?</td> | ||
</tr> | ||
<tr> | ||
<td><a href="#c2x">C2x</a></td> | ||
<td><tt>-std=c2x</tt></td> | ||
<td class="partial" align="center">Partial</td> | ||
</tr> | ||
</table> | ||
|
||
<p>The implementation status for C99, C11, and C17 are currently under | ||
investigation. Any proposal whose status in Clang is currently unknown | ||
will be marked in <span class="unknown">magenta</span>.</p> | ||
|
||
<p>The Clang community is continually striving to improve C standards | ||
compliance between releases. We implement the resolution for defect | ||
reports, but we do not currently track our DR status (help with | ||
tracking DR status is appreciated).</p> | ||
|
||
<p>The <a href="https://bugs.llvm.org/">LLVM bug tracker</a> contains a | ||
Clang C component that tracks known bugs with Clang's language | ||
conformance.</p> | ||
|
||
<h2 id="c89">C89 implementation status</h2> | ||
|
||
<p>Clang implements all of the ISO 9899:1990 (C89) standard.</p> | ||
|
||
<h2 id="c99">C99 implementation status</h2> | ||
|
||
<p>Clang implements a significant portion of the ISO 9899:1999 (C99) standard, but the status of individual proposals is still under investigation.</p> | ||
|
||
<h2 id="c11">C11 implementation status</h2> | ||
|
||
<p>Clang implements a significant portion of the ISO 9899:2011 (C11) standard, but the status of individual proposals is still under investigation.</p> | ||
|
||
<h2 id="c17">C17 implementation status</h2> | ||
|
||
<p>Clang implements a significant portion of the ISO 9899:2018 (C17) standard, but the status of individual proposals is still under investigation.</p> | ||
|
||
<h2 id="c2x">C2x implementation status</h2> | ||
|
||
<p>Clang has support for some of the features of the C standard following C17, informally referred to as C2x.</p> | ||
|
||
<p>You can use Clang in C2x mode with the <code>-std=c2x</code> option.</p> | ||
|
||
<details open> | ||
<summary>List of features and minimum Clang version with support</summary> | ||
|
||
<table width="689" border="1" cellspacing="0"> | ||
<tr> | ||
<th>Language Feature</th> | ||
<th>C2x Proposal</th> | ||
<th>Available in Clang?</th> | ||
</tr> | ||
<!-- Pre-Oct 2019 Papers --> | ||
<tr> | ||
<td>Evaluation formats</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2186.pdf">N2186</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Clarifying the restrict Keyword v2</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2260.pdf">N2660</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Harmonizing static_assert with C++</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2265.pdf">N2665</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>nodiscard attribute</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2667.pdf">N2667</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>maybe_unused attribute</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2670.pdf">N2670</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr id="TS18661"> | ||
<td rowspan="6">TS 18661 Integration</td> | ||
</tr> | ||
<tr> <!-- Pre-Oct 2019 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2314.pdf">N2314</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> <!-- Pre-Oct 2019 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2341.pdf">N2341</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> <!-- Pre-Oct 2019 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2401.pdf">N2401</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> <!-- Pre-Oct 2019 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2359.pdf">N2359</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> <!-- Nov 2020 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2546.pdf">N2546</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Preprocessor line numbers unspecified</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2322.htm">N2322</a></td> | ||
<td class="full" align="center">Yes</td> | ||
</tr> | ||
<tr> | ||
<td>deprecated attribute</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2334.pdf">N2334</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr id="Attributes"> | ||
<td rowspan="3">Attributes</td> | ||
</tr> | ||
<tr> <!-- Pre-Oct 2019 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf">N2335</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> <!-- Aug 2020 --> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2554.pdf">N2554</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>Defining new types in offsetof</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm">N2350</a></td> | ||
<td class="full" align="center">Yes</td> | ||
</tr> | ||
<tr> | ||
<td>fallthrough attribute</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2408.pdf">N2408</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>Two's complement sign representation</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf">N2412</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Adding the u8 character prefix</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf">N2418</a></td> | ||
<td class="none" align="center">No</td> | ||
</tr> | ||
<tr> | ||
<td>Remove support for function definitions with identifier lists</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf">N2432</a></td> | ||
<td class="none" align="center">No</td> | ||
</tr> | ||
<!-- Oct 2019 Papers --> | ||
<tr> | ||
<td>*_IS_IEC_60559 feature test macros</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2379.htm">N2379</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Floating-point negation and conversion</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2416.pdf">N2416</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Annex F.8 update for implementation extensions and rounding</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2384.pdf">N2384</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>_Bool definitions for true and false</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2393.pdf">N2393</a></td> | ||
<td class="none" align="center">No</td> | ||
</tr> | ||
<!-- Mar 2020 Papers --> | ||
<tr> | ||
<td>[[nodiscard("should have a reason")]]</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2448.pdf">N2448</a></td> | ||
<td class="full" align="center">Clang 10</td> | ||
</tr> | ||
<tr> | ||
<td>Allowing unnamed parameters in function definitions</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2480.pdf">N2480</a></td> | ||
<td class="full" align="center">Clang 11</td> | ||
</tr> | ||
<!-- Aug 2020 Papers --> | ||
<tr> | ||
<td>Free positioning of labels inside compound statements</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf">N2508</a></td> | ||
<td class="none" align="center">No</td> | ||
</tr> | ||
<tr> | ||
<td>Clarification request for C17 example of undefined behavior</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2517.pdf">N2517</a></td> | ||
<td class="none" align="center">No</td> | ||
</tr> | ||
<tr> | ||
<td>Querying attribute support</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2553.pdf">N2553</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<!-- Nov 2020 Papers --> | ||
<tr> | ||
<td>Binary literals</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf">N2549</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>Allow duplicate attributes</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2557.pdf">N2557</a></td> | ||
<td class="unreleased" align="center">Clang 13</td> | ||
</tr> | ||
<tr> | ||
<td>Character encoding of diagnostic text</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2563.pdf">N2563</a></td> | ||
<td class="full" align="center">Yes</td> | ||
</tr> | ||
<tr> | ||
<td>What we think we reserve</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2572.pdf">N2572</a></td> | ||
<td class="partial" align="center">Yes</td> | ||
</tr> | ||
<tr> | ||
<td>Decimal floating-point triples</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2580.htm">N2580</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Remove mixed wide string literal concatenation</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2594.htm">N2594</a></td> | ||
<td class="full" align="center">Clang 9</td> | ||
</tr> | ||
<tr> | ||
<td>Update to IEC 60559:2020</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2600.pdf">N2600</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
<tr> | ||
<td>Compatibility of Pointers to Arrays with Qualifiers</td> | ||
<td><a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2607.pdf">N2607</a></td> | ||
<td class="unknown" align="center">Unknown</td> | ||
</tr> | ||
</table> | ||
</details> | ||
|
||
</div> | ||
</body> | ||
</html> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters