From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 9F5363814FE1 for ; Tue, 24 May 2022 18:11:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9F5363814FE1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.91,248,1647331200"; d="scan'208";a="78979911" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa1.mentor.iphmx.com with ESMTP; 24 May 2022 10:11:19 -0800 IronPort-SDR: CYOhPX9ZYGTF13/d2qLyU6XqCl2PrB0y0YZhzvYpHTEIXymjNjh0hZWFljL1tYXT16xxwOZe+A 1bWO9wv/W8cbpJvrciBZl/K4dKLXuVED4npm6iommyHuJv1sWcGKWXyOin+feCbDTLvyYhZF1u iy08bgT2fL9AHZr7u0J/pwfkGYzpu0+oW3qXkYVCc0ufMSYHJREa1n9v2BF0mZdLFyNMDM2VWm kiwwy+xyrruQI8R0SjsYfoGsmnw8WaPW8sjRbbTGIhzsNXJULtyIF6ROLUltARMB9u8maJ7btw zRU= Date: Tue, 24 May 2022 18:11:09 +0000 From: Joseph Myers X-X-Sender: jsm28@digraph.polyomino.org.uk To: Marek Polacek CC: GCC Patches Subject: Re: [wwwdocs] Add C status page In-Reply-To: Message-ID: References: User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: SVR-IES-MBX-08.mgc.mentorg.com (139.181.222.8) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-3113.2 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 May 2022 18:11:23 -0000 On Tue, 24 May 2022, Marek Polacek via Gcc-patches wrote: > I thought it'd be nice to have a table that documents our C support > status, like we have https://gcc.gnu.org/projects/cxx-status.html for C++. > We have https://gcc.gnu.org/c99status.html, but that's C99 only. > > So here's a patch to add just that. For C99, I used c99status.html but > added paper numbers (taken from https://clang.llvm.org/c_status.html). For C11, see https://gcc.gnu.org/wiki/C11Status (note: I haven't checked the accuracy of that page). Listing in terms of features is more useful than listing in terms of papers. Referring to the original paper, even if it's the version that got accepted into the standard, is liable to be actively misleading to anyone working on the implementation; sometimes the paper has multiple choices of which only one was accepted into the standard, or only some of the listed changes were accepted, or there were various subsequent features or fixes from various subsequent papers. (By way of example, it would make more sense to list _BitInt as a single entry for a missing feature than to separately list N2763 and N2775 (accepted papers), while N2960, to be considered at the July meeting of WG14, makes further wording fixes but can't exactly be considered a feature in a sense that should be listed in such a table.) Lots of papers are just cleanups, or clarification of wording, or fixes to issues with previous papers, such that it doesn't make sense to list them as implemented or not at all. As usual there are also cases where a feature is implemented to the extent relevant for conformance but e.g. more optimizations (such as built-in functions) could be added. And cases where some support in GCC should definitely be done to consider the feature implemented, even when not needed for conformance (e.g. the %wN, %wfN printf/scanf formats need implementing in glibc, and corresponding format checking support needs implementing in GCC). There are also cases where a feature is substantially there but a more detailed review should be done for how it matches up to the standard version (e.g. the DFP support based on TR 24732-2009 could do with such a detailed review for how it matches C2x requirements). > + > + Binary literals > + N2549 > + GCC 11 > + > + This is an example of cases where the version where a feature was supported in GCC as an extension is long before the version where -pedantic knows about it being supported in a given standard version; listing the version with the -pedantic change in such cases may not be very helpful without noting when it was originally implemented. There are probably other examples in the list. (There are also examples where GCC supports the feature but hasn't yet had -pedantic updated accordingly, e.g. #warning. And cases where it's largely supported but there are small differences in the standard version that still need implementing, e.g. typeof.) > + > + What we think we reserve > + N2572 > + ? > + > + This is an example of the many cases where it doesn't make sense to consider something as a feature with an "implemented" or "not implemented" state at all - so it doesn't belong in such a table at all. There are many other such examples in the list. -- Joseph S. Myers joseph@codesourcery.com