git: 75b635c77443 - main - cdefs: update for C23 and POSIX24
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 15 Nov 2024 02:02:12 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=75b635c774436d6ced8113e04dadbd5b859fea42
commit 75b635c774436d6ced8113e04dadbd5b859fea42
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-11-14 23:52:56 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-11-15 02:01:12 +0000
cdefs: update for C23 and POSIX24
Also tweak a few placs where we can now use macros for C23 and POSIX24.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D47580
---
share/man/man9/cdefs.9 | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/share/man/man9/cdefs.9 b/share/man/man9/cdefs.9
index 3d1f6159bc60..38762c22f586 100644
--- a/share/man/man9/cdefs.9
+++ b/share/man/man9/cdefs.9
@@ -303,7 +303,7 @@ to distinguish it from newer standards.
Support for this compilation environment is dependent on compilers supporting
this configuration.
Most of the old forms of C have been deprecated or removed in
-ISO/IEC 9899:2024 (“ISO C23”).
+.St -isoC-2024 .
Compilers make compiling in this mode increasingly difficult and support for it
may ultimately be removed from the tree.
.It St -ansiC
@@ -333,11 +333,11 @@ since there are no new C17 only symbols or macros.
.Pp
This version of the standard did not introduce any new features, only made
minor, technical corrections.
-.It ISO/IEC 9899:2024 (“ISO C23”)
+.It St -isoC-2024
.Dv __STDC_VERSION__ = 202311L
Strict environment selected with
.Dv _C23_SOURCE
-though this is not yet implemented.
+though ISO C23 support is only partially implemented.
.El
.Pp
For more information on C standards, see
@@ -356,25 +356,37 @@ However, system headers not defined by that standard may define extensions.
.It Dv _POSIX_C_SOURCE = 199506 Ta St -p1003.1c-95 including St -ansiC
.It Dv _POSIX_C_SOURCE = 200112 Ta St -p1003.1-2001 including St -isoC-99
.It Dv _POSIX_C_SOURCE = 200809 Ta St -p1003.1-2008 including St -isoC-99
-.It Dv _POSIX_C_SOURCE = 202405 Ta in the future IEEE Std 1003.1-2024 (“POSIX.1”) including ISO/IEC 9899:2024 (“ISO C23”)
+.It Dv _POSIX_C_SOURCE = 202405 Ta St -p1003.1-2024 including ISO/IEC 9899:2018 ("ISO C17"),
.It Dv _XOPEN_SOURCE = 500 Ta St -p1003.1c-95 and XPG extensions to St -susv2 including St -ansiC
.It Dv _XOPEN_SOURCE = 600 Ta St -p1003.1-2001 and XPG extensions to St -susv3 including St -isoC-99
.It Dv _XOPEN_SOURCE = 700 Ta St -p1003.1-2008 and XPG extensions to St -susv4 including St -isoC-99
-.It Dv _XOPEN_SOURCE = 800 Ta in the future IEEE Std 1003.1-2024 (“POSIX.1”) and XPG extensions to Version 5 of the Single UNIX Specification (“SUSv5”) including ISO/IEC 9899:2024 (“ISO C23”)
+.It Dv _XOPEN_SOURCE = 800 Ta St -p1003.1-2024 and XPG extensions to Version 5 of the Single UNIX Specification (“SUSv5”) including ISO/IEC 9899:2018 (“ISO C17”)
.It Dv _ANSI_SOURCE Ta St -ansiC
.It Dv _C99_SOURCE Ta St -isoC-99
.It Dv _C11_SOURCE Ta St -isoC-2011
-.It Dv _C23_SOURCE Ta in the future ISO/IEC 9899:2024 (“ISO C23”)
+.It Dv _C23_SOURCE Ta St -isoC-2024
.It Dv _BSD_SOURCE Ta Everything, including Fx extensions
.El
.Pp
+Note:
+.St -p1003.1-2024
+and XPG extensions to Version 5 of the Single UNIX Specification ("SUSv5")
+support is incomplete.
+.Pp
When both POSIX and C environments are selected, the POSIX environment selects
which C environment is used.
However, when C11 dialect is selected with
.St -p1003.1-2008 ,
definitions for
.St -isoC-2011
-are included.
+are also included.
+Likewise, when C23 dialog is selected with
+.St -p1003.1-2008
+or
+.St -p1003.1-2024 ,
+definitions for
+.St -isoC-2023
+are also included.
.Ss Header Visibility Macros
These macros are set by
.Nm
@@ -393,13 +405,13 @@ by convention with 199009 for
and 199209
.St -p1003.1-90 .
.It Dv __ISO_C_VISIBLE Ta The C level that's visible.
-Possible values include 1990, 1999, and 2011 for
+Possible values include 1990, 1999, 2011, 2017 and 2023 for
.St -isoC-90 ,
-.St -isoC-99
-and
-.St -isoC-2011
+.St -isoC-99 ,
+.St -isoC-2011 ,
+ISO/IEC 9899:2018 ("ISO C17"), and
+.St -isoC-2024 ,
respectively.
-In the future, 2023 will be used for ISO C2023.
.It Dv __BSD_VISIBLE Ta 1 if the
.Fx
extensions are visible, 0 otherwise.