{"action":"created","issue":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/2457","repository_url":"https://api.github.com/repos/rust-lang/rfcs","labels_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2457/labels{/name}","comments_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2457/comments","events_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2457/events","html_url":"https://github.com/rust-lang/rfcs/pull/2457","id":328846052,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyMjU3OTg5","number":2457,"title":"Allow non-ASCII identifiers","user":{"login":"pyfisch","id":2781017,"node_id":"MDQ6VXNlcjI3ODEwMTc=","avatar_url":"https://avatars0.githubusercontent.com/u/2781017?v=4","gravatar_id":"","url":"https://api.github.com/users/pyfisch","html_url":"https://github.com/pyfisch","followers_url":"https://api.github.com/users/pyfisch/followers","following_url":"https://api.github.com/users/pyfisch/following{/other_user}","gists_url":"https://api.github.com/users/pyfisch/gists{/gist_id}","starred_url":"https://api.github.com/users/pyfisch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyfisch/subscriptions","organizations_url":"https://api.github.com/users/pyfisch/orgs","repos_url":"https://api.github.com/users/pyfisch/repos","events_url":"https://api.github.com/users/pyfisch/events{/privacy}","received_events_url":"https://api.github.com/users/pyfisch/received_events","type":"User","site_admin":false},"labels":[{"id":211667886,"node_id":"MDU6TGFiZWwyMTE2Njc4ODY=","url":"https://api.github.com/repos/rust-lang/rfcs/labels/T-lang","name":"T-lang","color":"bfd4f2","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":84,"created_at":"2018-06-03T17:25:38Z","updated_at":"2018-06-07T06:47:06Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/rust-lang/rfcs/pulls/2457","html_url":"https://github.com/rust-lang/rfcs/pull/2457","diff_url":"https://github.com/rust-lang/rfcs/pull/2457.diff","patch_url":"https://github.com/rust-lang/rfcs/pull/2457.patch"},"body":"Allow non-ASCII letters (such as accented characters, Cyrillic, Greek, Kanji, etc.) in Rust identifiers.\r\n\r\n[Rendered](https://github.com/pyfisch/rfcs/blob/unicode-idents/text/0000-unicode-idents.md)\r\nAlternative to #2455\r\n\r\n----\r\n\r\nThe proposal is based on the excellent [PEP 3131](https://www.python.org/dev/peps/pep-3131/) and adapts it for Rusts use. Python accepts Unicode identifiers and normalizes them with NFKC. This proposal adds confusable detection to prevent homoglyph attacks and help fixing typos.\r\n\r\nIt uses the feedback from rust-lang/rust#28979 and #2455.\r\n\r\nThe different options for identifier Unicode support can be summarized in this list, ordered from least complex to most complex:\r\n\r\n0. ASCII identifiers (currently implemented in stable Rust)\r\n1. Immutable Identifiers (implemented in C++)\r\n2. Unicode Identifiers (JavaScript, currently implemented in `feature(non_ascii_idents)`)\r\n3. Normalized Identifiers (Python)\r\n4. Confusable Detection (proposed in this RFC)\r\n\r\nLevel 2 already provides good Unicode support for most uses. Normalizing identifiers and confusable detection improves security and usability."},"comment":{"url":"https://api.github.com/repos/rust-lang/rfcs/issues/comments/395311725","html_url":"https://github.com/rust-lang/rfcs/pull/2457#issuecomment-395311725","issue_url":"https://api.github.com/repos/rust-lang/rfcs/issues/2457","id":395311725,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NTMxMTcyNQ==","user":{"login":"hsivonen","id":478856,"node_id":"MDQ6VXNlcjQ3ODg1Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/478856?v=4","gravatar_id":"","url":"https://api.github.com/users/hsivonen","html_url":"https://github.com/hsivonen","followers_url":"https://api.github.com/users/hsivonen/followers","following_url":"https://api.github.com/users/hsivonen/following{/other_user}","gists_url":"https://api.github.com/users/hsivonen/gists{/gist_id}","starred_url":"https://api.github.com/users/hsivonen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hsivonen/subscriptions","organizations_url":"https://api.github.com/users/hsivonen/orgs","repos_url":"https://api.github.com/users/hsivonen/repos","events_url":"https://api.github.com/users/hsivonen/events{/privacy}","received_events_url":"https://api.github.com/users/hsivonen/received_events","type":"User","site_admin":false},"created_at":"2018-06-07T06:47:06Z","updated_at":"2018-06-07T06:47:06Z","author_association":"NONE","body":"> I think the idea is that this way things like spaces and punctuation still get left out\r\n\r\nWhy is that something that needs to be prescribed as opposed to something that will emerge naturally in usage? That is, why is leaving them out important enough that it's worth risking leaving out something that actually turns out to be important to allow? (I find it particularly strange that UAX 31 treats allowing zero-width joiners and non-joiners as an optional feature given how Unicode analyzes many scripts as needing them as opposed to encoding all identifiable glyph forms atomically.)\r\n\r\n> as well as lots of emoji.\r\n\r\nWhy is leaving out emoji important when math symbols have been presented as a _use case_?"}}
{"actor":{"display_login":"hsivonen"}}