Talk:C23 (C standard revision)
This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||
|
timegm() function
edit"ISO/IEC 9899:2023 (E) working draft — April 1, 2023" implies `timegm()` is new. Perhaps add that to this wiki too. 2601:441:8002:C00:887D:3B67:CDBB:FE8B (talk) 18:09, 9 June 2023 (UTC)
- Done • Sbmeirow • Talk • 23:44, 9 June 2023 (UTC)
List of items that may not yet be covered by article
editNOTE: moved long hidden comment from article to talk page. Editors need to remove from this list all items that are currently in the article, then compare remaining items against C23 Draft release to determine what this article is missing. I'm guessing this list contains some proposed items that didn't make it into C23. • Sbmeirow • Talk • 00:13, 10 June 2023 (UTC) • Sbmeirow • Talk • 00:13, 10 June 2023 (UTC)
hide the following until references can be added
Type generic functions for performing checked integer arithmetic (Integer overflow).[citation needed] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2683.pdf ?
Pragmas for rounding direction: STDC FENV_ROUND
and STDC FENV_DEC_ROUND
.[citation needed]
atomic_char8_t type alias
ATOMIC_CHAR8_T_LOCK_FREE test macro
Seems regular binary floating point (IEEE-754), is actually optional! Not just for newer decimal:
Feature test macros for optional features
__STDC_IEC_60559_BFP__ Indicates IEEE-754 binary floating-point arithmetic and required math functions are supported. This macro supersedes __STDC_IEC_559__.
__STDC_IEC_60559_DFP__ Indicates IEEE-754 decimal floating-point arithmetic and required math functions are supported.
__STDC_IEC_60559_COMPLEX__ Indicates IEEE-754 complex arithmetic and required math functions are supported. This macro supersedes __STDC_IEC_55
Obsolete
Removed
Permission that u/U-prefixed character constants and string literals may be not UTF-16/32
Mixed wide string literal concatenation
Support for calling realloc() with zero size (the behavior becomes undefined)
__alignof_is_defined and __alignas_is_defined
Deprecated
Old feature-test macros
- __STDC_IEC_559__
- __STDC_IEC_559_COMPLEX__
asctime()
ctime()
DECIMAL_DIG
Definition of following numeric limit macros in <math.h> (they should be used via <limits.h>)
INFINITY
DEC_INFINITY
NAN
DEC_NAN
__bool_true_false_are_defined
New language features
- Unnamed parameters in function definitions
- Identical cvr-qualifications for array types and their element types
- Pragmas for rounding direction: STDC FENV_ROUND, STDC FENV_DEC_ROUND
New library features
- Extended binary floating-point math functions
This section is incomplete
Reason: List TBD
Decimal floating-point math functions
-dN variants for existing and new floating-point math functions
quantizedN()
samequantumdN()
quantumdN()
llquantexpdN()
encodedecdN()
decodedecdN()
encodebindN()
decodebindN()
Floating-point formatting functions
POSIX functions
memccpy()
strdup()
strndup()
gmtime_r()
localtime_r()
Extensions for strftime() and wcsftime()
Extensions for fscanf() and fprintf() function families
wN and wfN length modifiers for [u]intN_t and [u]int_fastN_t respectively
H, D, and DD length modifiers for _Decimal32, _Decimal64, and _Decimal128 respectively
b conversion specifier for unsigned integer types
timespec_getres()
Macro constants for width of integer types
Additional numeric limit macros for floating-point types
Library version-test macros
__STDC_VERSION_FENV_H__
__STDC_VERSION_MATH_H__
__STDC_VERSION_STDINT_H__
__STDC_VERSION_STDLIB_H__
__STDC_VERSION_TGMATH_H__
__STDC_VERSION_TIME_H__ Obsolete
Removed
Old-style function declarations and definitions
Representations for signed integers other than two's complement
Permission that u/U-prefixed character constants and string literals may be not UTF-16/32
Mixed wide string literal concatenation
Support for calling realloc() with zero size (the behavior becomes undefined)
__alignof_is_defined and __alignas_is_defined
Deprecated
Old feature-test macros
__STDC_IEC_559__
__STDC_IEC_559_COMPLEX__
_Noreturn function specifier
_Noreturn attribute token
asctime()
ctime()
DECIMAL_DIG
Definition of following numeric limit macros in <math.h> (they should be used via <limits.h>)
INFINITY
DEC_INFINITY
NAN
DEC_NAN
__bool_true_false_are_defined
New language features
Decimal floating-point types (_Decimal32, _Decimal64, and _Decimal128)
Bit-precise integers (_BitInt(N))
Binary integer constants
u8 character constants
Type change of u8 string literals
Digit separator '
Empty initializer = {}
Attributes
Unnamed parameters in function definitions
Identical cvr-qualifications for array types and their element types
Single-argument _Static_assert
Labels followed by declarations and }
nullptr constant and the associated nullptr_t type
true and false become keywords (may be predefined macros for compatibility reasons)
New library features
Extended binary floating-point math functions
This section is incomplete
Reason: List TBD
Decimal floating-point math functions
-dN variants for existing and new floating-point math functions
quantizedN()
samequantumdN()
quantumdN()
llquantexpdN()
encodedecdN()
decodedecdN()
encodebindN()
decodebindN()
Floating-point formatting functions
Library support for UTF-8
char8_t type alias
mbrtoc8()
c8rtomb()
atomic_char8_t type alias
ATOMIC_CHAR8_T_LOCK_FREE test macro
POSIX functions
memccpy()
strdup()
strndup()
gmtime_r()
localtime_r()
Extensions for strftime() and wcsftime()
Extensions for fscanf() and fprintf() function families
wN and wfN length modifiers for [u]intN_t and [u]int_fastN_t respectively
H, D, and DD length modifiers for _Decimal32, _Decimal64, and _Decimal128 respectively
b conversion specifier for unsigned integer types
timespec_getres()
Macro constants for width of integer types
Additional numeric limit macros for floating-point types
Library version-test macros
__STDC_VERSION_FENV_H__
__STDC_VERSION_MATH_H__
__STDC_VERSION_STDINT_H__
__STDC_VERSION_STDLIB_H__
__STDC_VERSION_TGMATH_H__
__STDC_VERSION_TIME_H__
Draft standard renamed to "C2y"
editIn the June 2024 working draft, the draft language standard was renamed from "C23" to "C2y". 209.183.136.7 (talk) 21:13, 15 September 2024 (UTC)
- Note that wikipedia will not allow me to link to the June 2024 draft standard. However, you can find it by doing a web search on these keywords: open-std JTC1 SC22 WG14 n3301 209.183.136.7 (talk) 21:16, 15 September 2024 (UTC)
- Doc N3301 (which is actually from July) is a draft for the next edition after C23, currently nicknamed "C2y". At some point a new Wikipedia article for that edition will be needed, but there's been no change in the common name of C23. See Annex M of the doc, page 690 (PDF page 705), which says "Major changes in this sixth edition (__STDC_VERSION__ 202ymmL) include: [a very short list so far] ... Major changes in this fifth edition (__STDC_VERSION__ 202311L) include: [the long list of C23 changes]". Birdfern (talk) 05:23, 17 September 2024 (UTC)
N3220, N3219, N3096
editI've added a "Further reading" link to the public working draft N3220 that shares its date with the draft C23 standard N3219, as well as a short section explaining how N3220 relates to N3219 and how the previous public working draft N3096 differs from them both.
I see in the page's history that several editors have previously tried to just replace references to N3096 with references to N3220, and those have been reverted. It looks like those previous editors didn't really give any explanation of why N3220 was relevant. I hope the text I added, and its citations, makes the story clearer.
In particular, N3220 differs from N3219 (which is the official draft of the C23 standard) by adding just one clarifying word in one footnote in an annex. That makes it a nearly 100% perfect approximation of the draft C23 standard. I interpret the publication of N3220 — with such a spectacularly tiny diff from the non-public N3219 — as the WG14 editors doing their darndest to go absolutely right up to the line in order to make the standard all but public, while staying just short of breaching the rules that the ISO sets for them. Admirable work! Greg Price (talk) 06:24, 8 October 2024 (UTC)
- Thanks for these edits. I've changed the lede to point people straight to this more useful draft. Birdfern (talk) 18:08, 8 October 2024 (UTC)