Landing: b200f4d92f1d
Project / Subsystem
gcc / libcpp
Date
2026-08-06
Author
Jakub Jelinek
Commit
b200f4d92f1d75aa36623dad71e5970a4a819acf
Source
github
Perf win
No
Breaking
No
All attributes
- project
- gcc
- subsystem
- libcpp
- patch_id
- —
- commit_hash
- b200f4d92f1d75aa36623dad71e5970a4a819acf
- source_type
- github
- headline
- Unicode identifier rules updated for C++29.
- tldr
- Implements C++29 P3658R1, adjusting Unicode identifier character rules and differentiating between C++ and C compatibility.
- author
- Jakub Jelinek
- outcome
- committed
- performance_win
- false
- breaking_change
- false
- series_id
- —
- series_parts
- []
- tags
-
- • libcpp
- • c++
- • unicode
- • identifier
- • standardization
- discussion_id_link
- —
- bugzilla_pr
- —
- date
- 2026-08-06T00:00:00.000Z
This commit updates libcpp to implement the C++29 standard’s changes to identifier rules based on new Unicode recommendations (P3658R1). It introduces a distinction between characters that are valid for C++ identifiers (XID_Start/XID_Continue) and those valid for C compatibility (ID_Compat_Math_Start/ID_Compat_Math_Continue). For C++98 through C++26, both sets are accepted. However, for C++23 and C++2Y, the compatibile characters are only accepted in non-pedantic modes, ensuring stricter adherence to evolving standards.