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.