This patch adds a C11 status table to c-status.html. I consulted n3220.pdf (M.4) and https://gcc.gnu.org/wiki/C11Status, and checked that Implemented in Version is correct. I've added links to proposals where it seemed relevant. Also add a small note about C17.
W3 validated. Ok? --- htdocs/gcc-4.7/changes.html | 2 +- htdocs/gcc-4.9/changes.html | 2 +- htdocs/projects/c-status.html | 149 +++++++++++++++++++++++++++++++++- 3 files changed, 149 insertions(+), 4 deletions(-) diff --git a/htdocs/gcc-4.7/changes.html b/htdocs/gcc-4.7/changes.html index 901d31b9..fa9e08a0 100644 --- a/htdocs/gcc-4.7/changes.html +++ b/htdocs/gcc-4.7/changes.html @@ -350,7 +350,7 @@ res = a - x; /* means a - {x,x,x,x} */ </li> </ul> -<h3>C</h3> +<h3 id="c">C</h3> <ul> <li>There is support for some more features from the C11 revision diff --git a/htdocs/gcc-4.9/changes.html b/htdocs/gcc-4.9/changes.html index 26d4843a..69024261 100644 --- a/htdocs/gcc-4.9/changes.html +++ b/htdocs/gcc-4.9/changes.html @@ -193,7 +193,7 @@ features but <code>_Cilk_for</code> have been implemented.</li> </ul> -<h3>C</h3> +<h3 id="c">C</h3> <ul> <li>ISO C11 atomics (the <code>_Atomic</code> type specifier and qualifier and the <code><stdatomic.h></code> header) are now diff --git a/htdocs/projects/c-status.html b/htdocs/projects/c-status.html index ea5ebc4b..2f0ea155 100644 --- a/htdocs/projects/c-status.html +++ b/htdocs/projects/c-status.html @@ -17,12 +17,157 @@ the <code>-std=</code> command-line option. <ul> <li><a href="#c90">C90</a></li> <li><a href="#c99">C99</a></li> - <li>C11</li> - <li>C17</li> + <li><a href="#c11">C11</a></li> + <li><a href="#c17">C17</a></li> <li>C23</li> <li>C2y</li> </ul> +<h2 id="c17">C17 Support in GCC</h2> + +C17 brings no major changes, only technical corrections and clarifications. + +<p>C17 can be explicitly selected with the <code>-std=c17</code> +command-line flag, or <code>-std=gnu17</code> to enable GNU extensions +as well.</p> + +<h2 id="c11">C11 Support in GCC</h2> + +GCC has support for ISO C11, the 2011 revision of the ISO C standard. +This standard is substantially completely supported (but refer to +<a href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-ISO-support"> +the manual</a> for details) since GCC 4.9. + +<p>C11 can be explicitly selected with the <code>-std=c11</code> +command-line flag, or <code>-std=gnu11</code> to enable GNU extensions +as well.</p> + +<table class="cxxstatus"> + <tr class="separator"> + <th>Feature</th> + <th>Proposal</th> + <th>Version</th> + <th>Notes</th> + </tr> + <tr> + <td>Atomics (<code>_Atomic</code>, <code><stdatomic.h></code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1485.pdf">N1485</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1482.htm">N1482</a></td> + <td class="supported"><a href="../gcc-4.9/changes.html#c">4.9</a></td> + <td></td> + </tr> + <tr> + <td>Thread-local storage (<code>_Thread_local</code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1364.htm">N1364</a></td> + <td class="supported"><a href="../gcc-4.9/changes.html#c">4.9</a></td> + <td></td> + </tr> + <tr> + <td>Additional floating-point characteristic macros (<code><float.h></code>)</td> + <td></td> + <td class="supported"><a href="../gcc-4.6/changes.html#c">4.6</a></td> + <td></td> + </tr> + <tr> + <td>Alignment support (<code>_Alignas</code>, <code>_Alignof</code>, + <code>max_align_t</code>, <code><stdalign.h></code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1397.htm">N1397</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1447.htm">N1447</a></td> + <td class="supported"><a href="../gcc-4.7/changes.html#c">4.7</a></td> + <td></td> + </tr> + <tr> + <td>Unicode characters and strings (<code><uchar.h></code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1488.htm">N1488</a></td> + <td class="supported"><a href="../gcc-4.7/changes.html#c">4.7</a></td> + <td>library part: glibc 2.16; originally specified in ISO/IEC TR + 19769:2004; previously supported only with options such as + <code>-std=gnu11</code></td> + </tr> + <tr> + <td>Type-generic expressions (<code>_Generic</code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1441.htm">N1441</a></td> + <td class="supported"><a href="../gcc-4.9/changes.html#c">4.9</a></td> + <td></td> + </tr> + <tr> + <td>Static assertions (<code>_Static_assert</code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1330.pdf">N1330</a></td> + <td class="supported"><a href="../gcc-4.6/changes.html#c">4.6</a></td> + <td><code>static_assert</code> in <code><assert.h></code>: + glibc 2.16</td> + </tr> + <tr> + <td>Anonymous structures and unions</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1406.pdf">N1406</a></td> + <td class="supported"><a href="../gcc-4.6/changes.html#c">4.6</a></td> + <td></td> + </tr> + <tr> + <td>Typedef redefinition</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1360.htm">N1360</a></td> + <td class="supported"><a href="../gcc-4.6/changes.html#c">4.6</a></td> + <td></td> + </tr> + <tr> + <td>Nonreturning functions (<code>_Noreturn</code> and + <code><stdnoreturn.h></code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1478.htm">N1478</a></td> + <td class="supported"><a href="../gcc-4.7/changes.html#c">4.7</a></td> + <td></td> + </tr> + <tr> + <td>Macros to create complex numbers (<code><complex.h></code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1464.htm">N1464</a></td> + <td class="supported"><a href="../gcc-4.7/changes.html#c">4.7</a></td> + <td>library part: glibc 2.16</td> + </tr> + <tr> + <td>Support for opening files for exclusive access</td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (glibc 2.x) </td> + </tr> + <tr> + <td>Remove the <code>gets</code> function (<code><stdio.h></code>)</td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (glibc 2.16)</td> + </tr> + <tr> + <td><code>aligned_alloc</code>, <code>at_quick_exit</code>, and + <code>quick_exit</code> functions (<code><stdlib.h></code>)</td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (glibc 2.16)</td> + </tr> + <tr> + <td><code>struct timespec</code>, <code>timespec_get</code> function + in <code><time.h></code></td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (glibc 2.16)</td> + </tr> + <tr> + <td>Threading, <code><threads.h></code> (Optional)</td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (glibc 2.28)</td> + </tr> + <tr> + <td>Support for bounds-checking interfaces (Annex K, Optional)</td> + <td></td> + <td class="other">N/A</td> + <td>Library issue (not implemented)</td> + </tr> + <tr> + <td>Support for analyzability (Annex L, Optional)</td> + <td></td> + <td class="other">N/A</td> + <td></td> + </tr> +</table> + <h2 id="c99">C99 Support in GCC</h2> <p>C99 is substantially completely supported as of GCC 4.5 -- 2.49.0