Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NL029 05.10 [tab:lex.name.allowed] Disallow zero-width and control characters #28

Closed
wg21bot opened this issue Oct 23, 2019 · 8 comments
Labels
CWG Core rejected No consensus for a change.
Milestone

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Oct 23, 2019

Allowed characters include those from U+200b until U+206x; these are zero-width and control characters that lead to impossible to type names, indistinguishable names and unusable code & compile errors (such as those accidentally including RTL modifiers).

Proposed change:
Disallow invisible characters in this range

@wg21bot wg21bot added the CWG Core label Oct 23, 2019
@wg21bot wg21bot changed the title NL029 05.10 [tab:lex.name.allowed] NL029 05.10 [tab:lex.name.allowed] Disallow zero-width and control characters Oct 23, 2019
@jfbastien
Copy link
Collaborator

See sg16-unicode/sg16#48

@jfbastien jfbastien added SG16 Unicode and removed CWG Core labels Oct 24, 2019
@tahonermann
Copy link
Collaborator

SG16 plans to discuss this comment Tuesday morning:

@tahonermann
Copy link
Collaborator

SG16 in Belfast: Recommend to accept with modification to deprecate identifiers that do not conform to Unicode TR#31 with exception for use of underscore.

Rationale: Future direction via D1949R0 intends to make these identifiers ill-formed in C++Future, so we want to put programmers on notice now to give them time to react. Additionally, we don't want to break compatibility with C and we lack implementation experience with D1949R0.

We had strong consensus for addressing this concern in C++20. The recommendation above had slightly better consensus than a poll to, rather than deprecating identifiers that do not conform to Unicode TR#31, adding a non-normative note containing guidance that programmers should use conforming identifiers.

Removing the SG16 label. This now needs to be seen by EWG.

SG16 minutes are available at:

@tahonermann tahonermann added EWG Evolution and removed SG16 Unicode labels Nov 5, 2019
@davidstone davidstone added CWG Core and removed EWG Evolution labels Nov 6, 2019
@davidstone
Copy link
Collaborator

JF believes he may have created a CWG issue as the resolution for this NB comment, if not, one will need to be created. EWG recommended to adopt Unicode TR#31 with no particular ship vehicle. We did not have consensus to adopt NL029 for C++20.

@jfbastien
Copy link
Collaborator

I can't find it. I think I ended up just sending the email to SG16, not CWG chair.

@tahonermann
Copy link
Collaborator

I can't find it. I think I ended up just sending the email to SG16, not CWG chair.

I can't find one either and the above sounds right to me. sg16-unicode/sg16#48 contains a link to the following message that JF sent to the SG16 mailing list.

I'll request a CWG issue.

@jensmaurer
Copy link
Member

jensmaurer commented Nov 6, 2019

CWG in Belfast: Given the EWG recommendation: Rejected. There was no consensus to adopt this change.

@tahonermann
Copy link
Collaborator

I'll request a CWG issue.

SG16 has continued to discuss changes to allowed identifiers in line with UAX #31; most recently in our January 8th, 2020 telecon. We have not yet identified a precise solution to propose. I am therefore not going to pursue filing a CWG issue in the near term. We'll continue pursuing a solution for C++23 and, based on those results, I may consider filing a CWG issue at a later time.

@jensmaurer jensmaurer added this to the CD C++20 milestone Sep 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CWG Core rejected No consensus for a change.
Projects
None yet
Development

No branches or pull requests

5 participants