Title
Undated reference to Unicode makes C++ a moving target
Status
drafting
Section
Clause [2] [intro.refs]
Submitter
Jonathan Wakely

Created on 2024-01-05.00:00:00 last changed 3 days ago

Messages

Date: 2024-03-15.00:00:00

Additional notes (March, 2024)

More drafting to rebase Annex E on Unicode 15.1 is needed.

Date: 2024-03-18.12:50:42

CWG 2024-01-19

CWG took note of the issue. No objections were raised regarding the suggested direction.

EWG 2024-03-18

Allow implementation-defined Unicode version, but require at least version 15.1.

Possible resolution:

  1. Change in Clause 2 [intro.refs] paragraph 1.10 as follows:

    • ...
    • The Unicode Consortium. The Unicode Standard, Version 15.1. Available from: https://www.unicode.org/versions/latest/https://www.unicode.org/versions/Unicode15.1.0/
  2. Add a paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:

    A conforming implementation may implement an implementation-defined version of the Unicode Standard that is a later version than the one referenced in Clause 2 [intro.refs].

    A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program.

Date: 2024-01-15.00:00:00

Additional notes (January, 2024)

Forwarded to SG16 and LWG by decision of the CWG chair, via paper issue 1736.

SG16 2024-01-10

SG16 has consensus to have a dated reference to Unicode in the "Normative references", indicating a minimum version, and add permission to implement an implementation-defined later version.

Possible resolution [SUPERSEDED]:

  1. Change in Clause 2 [intro.refs] paragraph 1.10 as follows:

    • ...
    • The Unicode Consortium. The Unicode Standard, Version 15.0. Available from: https://www.unicode.org/versions/latest/https://www.unicode.org/versions/Unicode15.0.0/
  2. Add a paragraph before 4.1.1 [intro.compliance.general] paragraph 8 as follows:

    A conforming implementation may implement an implementation-defined version of the Unicode Standard that is a later version than the one referenced in Clause 2 [intro.refs].

    A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program.

Date: 2024-01-10.21:09:25

Clause 2 [intro.refs] paragraph 1.10 uses an undated reference for the Unicode standard, meaning that a published (and otherwise frozen) standard for C++ (e.g. C++23) will implicitly refer to a new revision of the Unicode standard the moment such is issued:

... For undated references, the latest edition of the referenced document (including any amendments) applies.
  • ...
  • The Unicode Consortium. The Unicode Standard. Available from: https://www.unicode.org/versions/latest/

This situation is strictly worse than the lack of support for certain scripts or languages, which can be rectified by updating the reference to Unicode in the next revision of the C++ standard, as is regularly done with any other missing language feature deemed worth addressing.

Possible resolution [SUPERSEDED]:

Change in Clause 2 [intro.refs] paragraph 1.10 as follows:

  • ...
  • The Unicode Consortium. The Unicode Standard, Version 15.0. Available from: https://www.unicode.org/versions/latest/https://www.unicode.org/versions/Unicode15.0.0/
History
Date User Action Args
2024-12-18 21:53:33adminsetmessages: + msg7927
2024-12-18 21:53:33adminsetstatus: review -> drafting
2024-03-18 12:50:42adminsetstatus: open -> review
2024-01-21 13:30:12adminsetmessages: + msg7577
2024-01-06 21:29:25adminsetmessages: + msg7565
2024-01-05 00:00:00admincreate