N2913 - Editor's Report, Post May 2022 Meeting

Happy New Year! 🎉 🐯 (Halfway through the year, hah!)

Welcome to Editor's Report N2913, which is for the Standard N2912. We're glad you're still here and alive to read this: rest in peace, all the others who didn't quite make it this far during this pandemic.

Papers that were integrated this time around are included in the frontmatter of N2912. This report is for the post-August/September and post-November/December 2021 meetings (in the very literal sense that it is sometime after both meetings), and it merges all of the papers, editorial issues, and Annex work completed. You can find the last editor's report here.


This includes changes from 4 meetings (January had a 2-part meeting) and an entire Annex Deletion (language-independent arithmetic) and Annex Creation (Floating Point / Decimal Floating Point Interchange), with the old Floating Point Annex X's letter being changed to fit in the previously-deleted Annex's space (Annex H).

Full Integrations - August/September 2021 Virtual Meeting

The papers that were integrated without issues - as done by following the issue and merge request trackers at the C Standard GitLab Instance - for the August/September Virtual Meeting are as follows:

  • N2686: #warning Directive
  • N2688: Sterile Characters
  • N2710: SNAN Fixes (fixed editorially prior to now, but acknowledged since it was turned into a paper just to be safe.)
  • N2711: fmin, fmax
  • N2713: Integer Constant Expressions
  • N2714: hypot Changes
  • N2715: cr_ Prefix Potentially Reserved for Identifiers
  • N2716: Fix "numerically"/"numerically equal" Usage
  • N2726: _Imaginary_I and _Complex_I Qualifiers
  • N2728: char16_t & char32_t String Literals Shall be UTF-16 & UTF-32
  • N2745: Range Error Definition
  • N2748: Effects of fenv Exception Functions
  • N2749: IEC 60559 Bindings
  • N2755: Static Initialization of Decimal Floating Point
  • N2776: ckd_* Should be Potentially Reserved Identifiers
  • N2799: __has_include for C

All edits to be applied to the TS should have also been applied to its working draft version as well. (I likely got a few things wrong / missed a few things, so please do let me know if I have failed you here.)

Full Integrations - November/December 2021 Virtual Meeting

The papers that were integrated without issues - as done by following the issue and merge request trackers at the C Standard GitLab Instance - for the November/December Virtual Meeting are as follows:

  • N2747: Annex F Overflow and Underflow
  • N2770: Remove UB from Incomplete Types in Function Parameters
  • N2778: Require Variably-Modified Types
  • N2781: Types do not have Types (with meeting-agreed changes plus some editorial changes)
  • N2790: remquo Changes
  • N2805: Overflow and Underflow Definitions
  • N2806: § Cleanup
  • N2808: Allow 16-bit ptrdiff_t
  • N2823: Freestanding CFP Functions
  • N2838: Types and Sizes
  • N2837: Clarifying Integer Terms (also, delete Annex H and replace with the Floating Point TS / Annex merge)
  • N2842: Normal and Subnormal Classification
  • N2843: Clarification of Max Exponent Macros
  • N2845: feraiseexcept Update
  • N2846: Clarification about Expression Transformations
  • N2848: INFINITY Macro Contradictions (Wording #1 only!)
  • N2872: Require Exact-Width Integer Types (Change §3.1 only)

Full Integrations - January/February 2022 Virtual Meeting

The papers that were integrated without issues - as done by following the issue and merge request trackers at the C Standard GitLab Instance - for the January/February 2022 Virtual Meeting are as follows:

  • N2701: @, \$, and ` in the source/execution character set.
  • N2754: Decimal Floating Point: Quantum Exponent of NaN
  • N2762: Fixes for Potentially Reserved Identifiers
  • N2764: The _Noreturn Attribute
  • N2775: Literal Suffixes for Bit-Precise Integers
  • N2797: *_HAS_SUBNORM == 0 Implies What?
  • N2810: calloc Overflow Handling
  • N2819: Disambiguate the Storage Class of Some Compound Literals.
  • N2826: unreachable()
  • N2828: Unicode Sequences More Than 21 Bits are a Constraint Violation
  • N2829: Make assert() user friendly in C
  • N2836: Unicode Syntax Identifiers for C
  • N2840: Make call_once() Mandatory
  • N2841: No Function Declarators without Prototypes
  • N2844: Remove default promotions for _FloatN Types
  • N2847: Revised Suggestions of Change for Numerically Equal / Equivalent
  • N2879: Cleanup, Again Again
  • N2880: Overflow and Underflow Definitions Update
  • N2881: Normal and Subnormal Classification Update
  • N2882: Clarification for the Max Exponent Macros
  • N2900: Consistent, Warningless, and Intuitive Initialization with {}.
  • N2927: Not-So-Magic: typeof(...)
  • N2931: Macros and Macro Spellings from C Floating Point Integration
  • N2934: Revised Spelling of Keywords
  • N2935: Make false and true Language Features
  • N2937: Properly Define Blocks in the Grammar

Full Integrations - May 2022 Virtual Meeting

The papers that were integrated without issues - as done by following the issue and merge request trackers at the C Standard GitLab Instance - for the May 2022 Virtual Meeting are as follows:

  • N2601: Annex X (replacing Annex H) for IEC~60599 Interchange (ratified early 2021 but integrated over a long period of time).
  • N2861: Indeterminate Values and Trap Representations
  • N2867: Checked N-Bit Integers? (Not Now)
  • N2886: Remove ATOMIC_VAR_INIT
  • N2888: Require Exact-width Integer Type Interfaces, Part II
  • N2897: memset_explicit
  • N2992: Wording Clarification for Variably-Modified Types

Editorial (But Significant) Change: Modifying Objects

This change is not actually significant, but it must be called out in an Editor's Report nonetheless since it has a weird paper trail. We fixed a bad change made previously to the definition of "side effect".

Importantly, this almost became a full paper. But, upon inspection and reviewing of relevant meeting notes and conferring with stakeholders and the Committee, it became clear that removing the "modifying an object" portion of the side effect changes was not done properly. The author, people in the room when the Defect Report and Proposal were discussed, all agreed that its removal was not intentional but a mistake.

For a brief moment, C23 was a more functional language than Haskell or Pure could ever dream of being. Alas, it was not meant to be.

Editorial Changes

There were a number of tiny editorial improvements to make and adjustments to be had to papers integrated and to the standard itself:

  • Fix for "in this declaration" for the text in the Attributes section.
  • Fix a mistake when integrating some NaN changes.

    The description in the Annex has been changed to refer to the literal nan functions (nanf, nanl, etc.) and not the value NaN.

  • Fix "integer constant" to be "integer constant expression" for the _Alignof description and similar places.
  • Adjust c16rtomb and c32rtomb description for their usage of '\0'/L'\0'/u'\0'/U'\0' constants, to match the input type.
  • Add a footnote describing valid pointers and "one past the end of the array" when given alongside a size of 0.
  • No more mojibake in the sidebar.

    This was caused by an installation of postgresql and a few other utilities injected an iconv with (terrible) custom behavior that inserted byte order marks, which appear as þÿ in the table of contents for various PDF rendering software. The POSIX standard's requirements on iconv are so loose that it was an acceptable implementation of such a library, and the linker found these weird libiconv personal copies on the path before it found any normal ones.

  • Fix collapsed syntax rule for static_assert-declaration and attribute-declaration.
  • Fix unusually specific "floating-point number x" in

A special thanks to Joseph Myers, Jens Gustedt, Aaron Ballman, and Marin Uecker for finding many, many typos and needed changes. Furthermore, there were many changes that the C Floating Point Technical Specification Working Group found as well, including Jim Thomas, Fred Tydeman, Rajan Bhakta and Vincent Lefevre.

Paper Submissions

The paper submission website is still not yet released. I'll let you know when it comes up, which should hopefully be soon. We have unfortunately spent most of our time focusing on paper integration and writing our own papers for the incoming deadline for C23; please forgive me the tardiness!

— JeanHeyd Meneide, Project Editor <wg14@soasis.org>