This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gcc-wwwdocs".
The branch, master has been updated via 9a4f238532b5b6a3e308ffdb29b50c0f5100a4c6 (commit) from 0f460bf23d58356363d8123b9897ad4977ce3b29 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9a4f238532b5b6a3e308ffdb29b50c0f5100a4c6 Author: Marek Polacek <pola...@redhat.com> Date: Wed Jun 11 19:20:01 2025 -0400 c-status.html: Add C23 table diff --git a/htdocs/projects/c-status.html b/htdocs/projects/c-status.html index 215c5064..98dcb4d5 100644 --- a/htdocs/projects/c-status.html +++ b/htdocs/projects/c-status.html @@ -19,10 +19,422 @@ the <code>-std=</code> command-line option. <li><a href="#c99">C99</a></li> <li><a href="#c11">C11</a></li> <li><a href="#c17">C17</a></li> - <li>C23</li> - <li>C2y</li> + <li><a href="#c23">C23</a></li> + <li><a href="#c2y">C2y</a></li> </ul> +<h2 id="c2y">C2y Support in GCC</h2> + +GCC has experimental and incomplete support for ISO C2y. + +<p>C2y can be explicitly selected with the <code>-std=c2y</code> +command-line flag, or <code>-std=gnu2y</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></td> + <td></td> + <td class="supported"><a href="../gcc-4.9/changes.html#c"></a></td> + <td></td> + </tr> +</table> +--> + +<h2 id="c23">C23 Support in GCC</h2> + +GCC has support for ISO C23, the 2023 revision of the ISO C standard +(published in 2024). + +<p>C23 mode is <a href="https://gcc.gnu.org/gcc-15/porting_to.html#c23"> +the default</a> since GCC 15; it can be explicitly selected with the +<code>-std=c23</code> command-line flag, or <code>-std=gnu23</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> + <!-- r13-2520-g0a91bdaf177409 --> + <td>New keywords <code>alignas</code>, <code>alignof</code>, + <code>bool</code>, <code>false</code>, <code>static_assert</code>, + <code>thread_local</code>, <code>true</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2934.pdf">N2934</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2935.pdf">N2935</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r9-3505-g9f936c861383dc --> + <td><code>_Static_assert</code> with no message</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2265.pdf">N2665</a></td> + <td class="supported"><a href="../gcc-9/changes.html#c">9</a></td> + <td>support for <code>_Static_assert</code> with two arguments was added + in C11 and <a href="../gcc-4.6/changes.html#c">GCC 4.6</a></td> + </tr> + <tr> + <!-- r10-4466-g017c6491077bee --> + <!-- r12-244-gcc806126215c3f --> + <td>Removed support for function definitions with identifier lists</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf">N2432</a></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td>removal of old-style function definitions</td> + </tr> + <tr> + <!-- r13-2349-g0a4b219d39c74a --> + <td>Removal of unprototyped functions</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm">N2841</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td>function declarations whose parameter list is empty are treated the + same as a parameter list which only contain a single <code>void</code></td> + </tr> + <tr> + <!-- r10-3658-g843f104d5bc6d1 --> + <td><code>strftime</code> supports <code>%OB</code> and <code>%Ob</code> + formats</td> + <td></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a> (format + checking)</td> + <td>harmonization with ISO/IEC 9945; glibc support for these formats + was added in glibc 2.27</td> + </tr> + <tr> + <td>IEEE 754 decimal floating-point types (Optional)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2341.pdf">N2341</a></td> + <td class="supported"><a href="../gcc-4.3/changes.html#c">4.3</a> + (IA-32, x86-64, PowerPC, S/390) <br> + <a href="../gcc-13/changes.html#c">13</a> (aarch64)</td> + <!-- r10-3790-g27dfdc0f92850a --> + <td><code>DEC*_TRUE_MIN</code> macros added in + <a href="../gcc-10/changes.html#c">GCC 10</a></td> + </tr> + <tr> + <td>IEEE 754 interchange and extended types (Optional)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2601.pdf">N2601</a></td> + <td class="supported"><a href="../gcc-7/changes.html#c">7</a> (binary types) <br> + <a href="../gcc-15/changes.html#c">15</a> (Annex H suffixes for decimal types and + <code>_Decimal64x</code>)</td> + <td></td> + </tr> + <tr> + <!-- r10-4613-g00be2a5f394119 --> + <td>Add <code>*_NORM_MAX</code> constants to <code><float.h></code></td> + <td></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td></td> + </tr> + <tr> + <!-- r11-5070 --> + <td>NaN and Inf macros in <code><float.h></code></td> + <td></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td>corresponding built-in functions <code>__builtin_nansdN</code> added</td> + </tr> + <tr> + <!-- r11-5102 --> + <td><code>*_IS_IEC_60559</code> macros in <code><float.h></code></td> + <td></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r11-5103 --> + <td><code>__STDC_WANT_IEC_60559_EXT__</code> supported by <code><float.h></code></td> + <td></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r13-3939-g9a265c974cd85b --> + <td><code>__STDC_VERSION_*_H__</code> header version macros</td> + <td></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r11-4813 --> + <td>Labels before declarations and end of blocks</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf">N2508</a></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r10-4633-g4e03c3a7c1149a --> + <td><code>[[]]</code> attribute syntax</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf">N2335</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2554.pdf">N2554</a></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td></td> + </tr> + <tr> + <!-- r11-4953 --> + <td><code>__has_c_attribute</code> preprocessor operator</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2553.pdf">N2553</a></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r10-4694-g2cc94aa8d817ba --> + <td><code>[[deprecated]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2334.pdf">N2334</a></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td></td> + </tr> + <tr> + <!-- r10-4633-g4e03c3a7c1149a --> + <td><code>[[fallthrough]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2408.pdf">N2408</a></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td></td> + </tr> + <tr> + <!-- r10-4729-g97cc11871e3988 --> + <!-- r13-2324-g2eca4ff4e867eb (labels) --> + <td><code>[[maybe_unused]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2270.pdf">N2270</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2662.pdf">N2662</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td>support other than on labels added in <a href="../gcc-10/changes.html#c"> + GCC 10</a></td> + </tr> + <tr> + <!-- r11-4705 --> + <td><code>[[nodiscard]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2267.pdf">N2267</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2448.pdf">N2448</a></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2976-g3a3516bc4a0a03 --> + <td><code>[[noreturn]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2764.pdf">N2764</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r15-3330-gdd346b613886ae --> + <td><code>[[unsequenced]]</code> and <code>[[reproducible]]</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm">N2956</a></td> + <td class="supported"><a href="../gcc-15/changes.html#c">15</a></td> + <td></td> + </tr> + <tr> + <!-- r10-4691-g7c5890cc0a0ece --> + <td><code>u8</code> character constants</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf">N2418</a></td> + <td class="supported"><a href="../gcc-10/changes.html#c">10</a></td> + <td>for <code>char8_t</code> see + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm">N2653</a></td> + </tr> + <tr> + <td>Type change of <code>u8</code> string literals</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm">N2653</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r13-3289-g18981635127c67 --> + <td>Introduce storage-class specifiers for compound literals</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3038.htm">N3038</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r13-3930-gb556d1773db717 --> + <td>The <code>constexpr</code> specifier for object definitions</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3018.htm">N3018</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2205-g14cfa01755a66a --> + <td>Support for empty initializer braces</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2900.htm">N2900</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td>some cases were already supported, but not scalars and VLAs</td> + </tr> + <tr> + <!-- r13-3135-gfa258f6894801a --> + <td><code>typeof</code>, <code>typeof_unqual</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2927.htm">N2927</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2930.pdf">N2930</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td><code>typeof</code> was previously supported as an extension</td> + </tr> + <tr> + <!-- r14-6770-g23fee88f84873b --> + <td>Improved tag compatibility</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3037.pdf">N3037</a></td> + <td class="supported"><a href="../gcc-14/changes.html#c">14</a></td> + <td></td> + </tr> + <tr> + <td>Bit-precise integer types (<code>_BitInt</code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2763.pdf">N2763</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf">N2775</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2969.htm">N2969</a>, + <a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3035.pdf">N3035</a></td> + <td class="supported"><a href="../gcc-14/changes.html#c">14</a> + (IA-32, x86-64 and AArch64 (little-endian) only)</td> + <td></td> + </tr> + <tr> + <!-- r13-3360-g3b3083a598ca3f --> + <td>Improved rules for handling enumerations without underlying types</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3029.htm">N3029</a></td> + <td class="supported">3.0</td> + <td>allows enums wider than int; adjusted in + <a href="../gcc-13/changes.html#c">GCC 13</a></td> + </tr> + <tr> + <!-- r13-3534-ge0997c14af5e8b --> + <td>Enhanced Enumerations (fixed underlying types)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3030.htm">N3030</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r15-3599-geba6d2aa71a9b5 and many more --> + <td><code>#embed</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3017.htm">N3017</a></td> + <td class="supported"><a href="../gcc-15/changes.html#c">15</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2206-g60d84e82639e25 --> + <td><code>nullptr</code> constant</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3042.htm">N3042</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r13-4541-gce53cf7b61ea6b --> + <td><code>__VA_OPT__</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3033.htm">N3033</a></td> + <td class="supported"><a href="../gcc-8/changes.html#c">8</a></td> + <td></td> + </tr> + <tr> + <!-- r11-4494 --> + <td>Parameter names may be omitted in function definitions</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2480.pdf">N2480</a></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r13-3549-g4fe34cdcc80ac2 --> + <td>Relax requirements for variadic parameter lists</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2975.pdf">N2975</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <td>Identifier Syntax using Unicode Standard Annex 31</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf">N2836</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <td><code>__has_include</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2799.pdf">N2799</a></td> + <td class="supported"><a href="../gcc-5/changes.html#c">5</a></td> + <td></td> + </tr> + <tr> + <!-- r13-3620-ge3c898e12d0ace --> + <td>Type inference for object definitions (<code>auto</code>)</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3007.htm">N3007</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r12-730 --> + <td><code>#elifdef</code>, <code>#elifndef</code> preprocessor directives</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2645.pdf">N2645</a></td> + <td class="supported"><a href="../gcc-12/changes.html#c">12</a></td> + <td></td> + </tr> + <tr> + <td><code>#warning</code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2686.pdf">N2686</a></td> + <td class="supported">2.0</td> + <td></td> + </tr> + <tr> + <!-- r0-81205-gf7fd775f0203c5 --> + <td>Binary integer literals</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf">N2549</a></td> + <td class="supported"><a href="../gcc-4.3/changes.html#c">4.3</a></td> + <td></td> + </tr> + <tr> + <td>Formatting for input/output of binary integer numbers</td> + <td></td> + <td class="supported"><a href="../gcc-12/changes.html#c">12</a></td> + <!-- Formatted input/output should be remarked as mainly a glibc + feature (printf support in glibc 2.35, scanf support in 2.38; + PRIb*, PRIB* and SCNb* macros in inttypes.h also in 2.38) but + also with GCC format checking support. And the integer literals + have a secondary library part (strtol etc), also in glibc 2.38. --> + <td>mainly a glibc feature; GCC format checking support present</td> + </tr> + <tr> + <!-- r12-722 --> + <td>Digit separators</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2626.pdf">N2626</a></td> + <td class="supported"><a href="../gcc-12/changes.html#c">12</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2563-ga1a53dc7d87969 --> + <td><code>unreachable</code> macro in <code><stddef.h></code></td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2826.pdf">N2826</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r11-2030 --> + <td><code>BOOL_MAX</code> and <code>BOOL_WIDTH</code> macros in + <code><limits.h></code></td> + <td></td> + <td class="supported"><a href="../gcc-11/changes.html#c">11</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2626-g2e7bc76d84f0aa --> + <td><code>ATOMIC_VAR_INIT</code> removed</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm">N2886</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td></td> + </tr> + <tr> + <!-- r13-2451-g5f38bf14bcb3ff --> + <td>Removal of trigraphs</td> + <td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2940.pdf">N2940</a></td> + <td class="supported"><a href="../gcc-13/changes.html#c">13</a></td> + <td>can still be enabled using <code>-trigraphs</code></td> + </tr> + <tr> + <!-- r14-3178-g8441841a1b985d --> + <td><code><stdckdint.h></code> header for checked integer arithmetic</td> + <td></td> + <td class="supported"><a href="../gcc-14/changes.html#c">14</a></td> + <td></td> + </tr> +</table> + <h2 id="c17">C17 Support in GCC</h2> C17 brings no major changes, only technical corrections and clarifications. @@ -31,6 +443,8 @@ C17 brings no major changes, only technical corrections and clarifications. command-line flag, or <code>-std=gnu17</code> to enable GNU extensions as well.</p> +<p>This was the default mode from GCC 8 to GCC 14 (including).</p> + <h2 id="c11">C11 Support in GCC</h2> GCC has support for ISO C11, the 2011 revision of the ISO C standard. ----------------------------------------------------------------------- Summary of changes: htdocs/projects/c-status.html | 418 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 416 insertions(+), 2 deletions(-) hooks/post-receive -- gcc-wwwdocs