Talk:C23 (C standard revision)

Latest comment: 10 months ago by Sbmeirow in topic Move hidden comment to talk page

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)Reply

  DoneSbmeirowTalk • 23:44, 9 June 2023 (UTC)Reply

Move hidden comment to talk page edit

NOTE: 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. • SbmeirowTalk • 00:13, 10 June 2023 (UTC) • SbmeirowTalk • 00:13, 10 June 2023 (UTC)Reply

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

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 = {}
  • 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 preprocessor directives: #elifdef, #elifndef. #warning. #embed
  • 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

deprecated

fallthrough

maybe_unused

nodiscard

noreturn

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__