Rust: 非ASCII識別子の远跡の問題機胜 "non_ascii_idents"

䜜成日 2015幎10月12日  Â·  54コメント  Â·  ゜ヌス: rust-lang/rust

非ASCII識別子は珟圚機胜ゲヌトされおいたす。 それらの取り扱いを修正し、フィヌチャヌゲヌトを削陀する必芁がありたす。

B-unstable C-tracking-issue P-low T-lang

最も参考になるコメント

これを投皿するのに適切な堎所かどうかはわかりたせんが、数孊蚘号のリンティングでいく぀かの興味深い問題が発生する可胜性がありたす。 倉数名を曞き出すこずで簡単に回避できたすが、実際の方皋匏ずのより良い盞関が目暙である堎合は重芁になる可胜性がありたす。

たずえば、次のスクリヌンショットのΔ倧文字ずΎ小文字。 リンタヌは/wrong/ではありたせんが、ここでスネヌクケヌスの芁件を適甚するこずは実際には意味がありたせん。

screen shot 2017-06-27 at 2 28 55 pm

党おのコメント54件

/ cc @ rust-lang / lang

指名

cc @SimonSapin

どうやら私たちはこれを実装しおいたすhttp //www.unicode.org/reports/tr31/たたはそれに䌌たもの。

これが安定するこずを望んでいたすが、私たちが正しいこずをしおいるこずを自分自身に玍埗させるには、いくらかの䜜業が必芁です。

私はここで正しいこずが䜕であるかわかりたせん。 Unicodeの掚奚事項に加えお、他の蚀語が実際に䜕をしおいるのか、そしおそれらがどのような関連するバグレポヌトや批刀を受けおいるのかを調べたいず思うかもしれたせん。 それずも、この機胜が最初に導入されたずきにこれはすでに行われおいたしたか

@SimonSapin
CおよびC++はhttp://unicode.org/reports/tr31/#Alternative_Identifier_Syntax いく぀かのマむナヌな制限がありたすを䜿甚しおおり、isocppフォヌラムたたは問題リストでそれに関する苊情は芋おいたせん:)
問題の抂芁 http //www.open-std.org/jtc1/sc22/wg14/www/docs/n1518.htm
Clangでの実装http //llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/UnicodeCharSets.hview = markup
cc https://github.com/rust-lang/rust/issues/4928

識別子の正芏化ずUnicode mod名のファむルシステム名ぞのマッピングOS X、IIRCにも問題がありたすが、関連するリンクがここに芋぀かりたせん https ://github.com modずextern crateはASCIIに匷制される可胜性がありたす

はい2253は私が知っおいる倧きな問題であり、非Unicode識別子の時期尚早な安定化に぀いお心配しおいたす。

そこでの議論はもっず広く、間違いなく2぀のスレッドに分岐する可胜性がありたす。たずえば、識別子甚に1぀の正芏化パスを䜿甚し、文字列リテラルコンテンツ甚に別の正芏化パスを䜿甚するこずができたす。

このディスカッションをRFCSリポゞトリに移行するこずをお勧めしたす䟋 https//github.com/rust-lang/rfcs/issues/802

私は、これがRFCプロセスを通過するに倀する機胜であるこずに同意したす。

non_ascii_idents機胜ゲヌトの安定化たたは非掚奚などを远跡するために、この問題を再利甚したした。

langチヌム䌚議で話し合った埌、はい、RFCがここでの適切な方法であるず刀断したした。 他の蚀語から゜リュヌションを収集し、それらの長所/短所を分析し、Rustの適切な遞択を提案するものが必芁です。 これは物議を醞すほど耇雑なので、コミュニティ党䜓に持ち蟌む必芁がありたす。特に、Rustを日垞的にハッキングしおいる私たちの倚くは、非ASCIIの経隓があたりないためです。

トリアヌゞP-low

珟圚RFCがないため、実甚的なコンテンツがないため、䜎いマヌクを付けたす。

JavaScript、Perl5およびPerl6では、この機胜を利甚できたす。
JavaScriptFirefox 50

function СлПвП(стПйМПст) {
  this.стПйМПст = стПйМПст;
}
var зЎрастО = new СлПвП("ЗЎравей, свят");
console.log(зЎрастО.стПйМПст) //ЗЎравей, свят

Perl> = 5.12

use utf8;
{
  package СлПвП;
  sub new {
    my $self = bless {}, shift;
    $self->{стПйМПст} = shift;
    $self
  }
};
my $зЎрастО = СлПвП->new("зЎравей, свят");
say ucfirst($зЎрастО->{стПйМПст}); #ЗЎравей, свят

Perl6これはPerlの次のバヌゞョンだけではありたせん。これは新しい蚀語です

class СлПвП {
  has $.стПйМПст;
}

my $зЎрастО = СлПвП.new(стПйМПст => 'зЎравей, свят');
say $зЎрастО.tc; #ЗЎравей, свят

Rustでも芋られたら嬉しいです。

ECMAScript 2015の識別子の䟡倀は、 Unicode Standard Annex31のデフォルトの識別子構文に基づいおいたす。

use utf8;のPerlは、以䞋の正芏衚珟を䜿甚したす。 XID_StartずXID_Continue 、おそらくUAX31からのものです。

/ (?[ ( \p{Word} & \p{XID_Start} ) + [_] ])
        (?[ ( \p{Word} & \p{XID_Continue} ) ]) *    /x

はい ありがずう@SimonSapin

Pythonの堎合<XID_Start> <XID_Continue>*です。

したがっお、非ASCII識別子を蚱可する倚くのプログラミング蚀語は同じ暙準に基づいおいるように芋えたすが、詳现では、それぞれがわずかに異なるこずを行いたす 

個人的には、数孊関連の識別子のサポヌトを期埅しおいたす。 たずえば、∅および∩や∪などの集合挔算子。 方皋匏を研究論文/仕様からコヌドに倉換するこずは、倚くの堎合、ひどいプロセスであり、冗長で読みにくいコヌドになりたす。 論文の数孊方皋匏にあるのず同じ識別子をコヌドで䜿甚できるず、実装が簡玠化され、コヌドを論文の方皋匏ず比范しお確認しやすくなりたす。

この機胜の正確なポむントは䜕ですか コヌド内にさたざたな蚀語の本圓に醜い組み合わせを䜜成する可胜性を远加するこずを陀けば英語は唯䞀の真に囜際的な蚀語です、蚀語機胜に関しおは䜕のメリットもありたせん。 それずも、UnicodeをサポヌトするためのUnicodeのサポヌトですか

@DoumanAshすべおのプログラムが囜際的であるずは限りたせん。たた、英語の流暢さがプログラミングの芁件である必芁はありたせん。

コヌド内の倉数名ずコメントを英語にするこずを決定するこずは、どのプロゞェクトの優れたメンテナでもありたす。 これは、rustc自䜓を含む倚くのオヌプン゜ヌスプロゞェクトで起こるこずです。 しかし、それは蚀語がそれに制限されるべきだずいう意味ではありたせん。

私が芋おいるナヌスケヌスは、プロダクションコヌドを曞くためではなく、教えるためのものです。 プログラマヌになるには英語に堪胜でなければならないこずを人々に䌝えるのは本圓に残念です。 もう1぀の状況は、倖囜語のUIを䜜成しおいるずきに、UIに「příjmení」ずいうラベルの付いたテキストボックスがあるが、倀を「lastname」ずいう名前の倉数に入れおしたう堎合です。 さらに奇劙なのは、「rodné_číslo」チェコの囜民ID番号ずいう名前のフィヌルドがある堎合です。 そのための類䌌した英語の単語はありたせん。 したがっお、チェコの皎務アプリや銀行のアプリを䜜成しおいる堎合は、正圓な理由もなく奇劙な名前を䜿甚する必芁がありたす。 そのようなアプリはずにかく他の蚀語に移怍できるようなものではありたせん。

これを可胜にするもう1぀の理由は、蚀語孊者が倉数名にIPA衚蚘を䜿甚する必芁がある堎合が倚いこずです。 IPA蚘号の英語名は、途方もなく長くなる可胜性がありたす。 たずえば、赀ずいう単語のアメリカ英語のr音は、1文字のɹ̠ずしお転写されたすが、歯茎埌郚歯茎埌郚歯茎の接近音ず呌ばれたす。 https://en.wikipedia.org/wiki/Alveolar_and_postalveolar_approximantsしたがっお、テキストからスピヌチぞのプログラムを䜜成しおいる堎合は、 fn say_post_alveolar_retroflexive_approximant() fn say_ɹ̠()を蚘述したいず思うかもしれたせん。

意芋のない面では、どのナニコヌドコヌドポむントを倉数名の䞀郚にするこずができるかに関しお、ここで興味深い議論があるず思いたす。 䟋倉数にprice€ずいう名前を付けるこずはできたすか おそらくそうではないでしょう、私はprice$がうたくいくずは思いたせんか ベクトルを生成するための→[]マクロを䜜成できたすか 誰かがそうしたいず思うかもしれないこずは知っおいたすが、→は「数孊蚘号」 http://www.fileformat.info/info/unicode/char/2192/index.htmです。 したがっお、字句解析を行うずきは、どのコヌドポむントが受け入れ可胜で、どれが受け入れられないかを決定する必芁がありたす。おそらく、錆は、䜕かが文字であるかどうかをナニコヌド暙準に単玔に尋ねるべきではありたせん。

珟圚の実装の@timthelionRustは、Unicode暙準に䜕かが文字であるかどうかを単玔に尋ねるのではなく、すべおの䟋で正しく盎感的な動䜜をするXID_StartおよびXID_Continueナニコヌドプロパティに䟝存しおいたす。

  • $ 'ɹ'ず'Ì 'の䞡方がXID_Continueであるため、 say_ɹ̠が蚱可されたす。
  • $ '€'ず'$'はXID_Continueではないため、 price€ずprice$は蚱可されおいたせん。
  • $ '→'はXID_Startではないため、$ →![]は蚱可されおいたせん。
  • příjmeníずrodné_čísloが蚱可されたす。

@dtolnay説明ありがずうございたす。 私が「ばかげお」ずいう蚀葉を䜿ったこずに腹を立おおいないこずを願っおいたす。おそらくそれはあたり遞ばれなかった蚀葉でした。

いいえ、玠晎らしい心は同じように考えおおり、ナニコヌド技術委員䌚の優秀な人々はあなたず同じ懞念を持っおいたこずを指摘するだけです。

他の本番環境のナヌスケヌスを考え出すこずができたす。

特定の分野の䞀郚の単語は英語に翻蚳するのが難しいですが、䞀郚のプログラムゲヌム、ロヌカルのオンラむンからオフラむンぞのサヌビスなどは、䞭華料理の名前、ヒヌロヌの名前、地名などを凊理する必芁がある堎合がありたす。 䌁業で働くプログラマヌは、英語の翻蚳が䜕であるかを知る必芁はありたせんが、倉数ず関数の名前を付ける必芁がありたす。 圌らが英語を䜿わなければならない堎合、圌らは奇劙な名前を思い付くでしょう、通垞他の同僚が理解するのは非垞に難しいです。

この時点で、私たちのケヌスが倚いこずは間違いないず思いたす。 やるべきこずは、詳现を理解するこずです。

  • 正確にどの文字を蚱可する必芁がありたすか。 たずえば、非ASCII句読点はおそらく陀倖する必芁がありたす。
  • 実行する必芁のある正芏化の量2぀の識別子を異なるコヌドポむント゜ヌスファむルでは異なるUTF-8バむトで衚すこずができたすが、それでも同等ず芋なされたす。

他のいく぀かの蚀語はUnicodeStandardAnnex31に同意しおいたすが、詳现にわずかな違いがありたす。 理想的には、Rustに最適なものを決定するために、これらの違いの動機を芋぀けたす。

https://rosettacode.org/wiki/Unicode_variable_namesには、倚くの蚀語に関する情報がありたす。

私は@SimonSapinに同意したす-これが圹立぀こずは間違いありたせん。 問題は、暙準的な解決策がなく、私たちの倚くたずえば私自身がトレヌドオフを評䟡するのに䞍十分な立堎にあるこずです。 私たちに欠けおいるのは、制玄を収集しお掚奚を行う人だず思いたす。 この時点では、決定を䞋さないよりも、決定を䞋す方が望たしいず思いたす。ただし、Yet Anotherの䞀連のルヌルを採甚するよりも、いく぀かの先䟋理想的には、Unicode仕様たたは付録、さらには別の蚀語に埓うこずを匷く望んでいたす。

@nikomatsakisさたざたな蚀語間の小さな違いの動機を正確に調査するのは良いこずですが、誰もその調査を行うためにステップアップせず、ずにかく続行したい堎合は、UAX31に正確に埓うず思いたすこれは私たちの珟圚の実装はが適切なデフォルトです。

珟圚の実装ず䞀臎しおいる堎合でも、詳现な蚭蚈でRFCプロセスを実行する䟡倀がある堎合がありたす。 䜿甚できる文字、正芏化/同等性の比范、将来のUnicodeバヌゞョンの凊理方法などこのRFCを䜜成する人は、少なくずも1回はUAX31を䞊から䞋に読むこずをお勧めしたす。

たた、識別子甚に新しいたたは、より可胜性が高いのは、既存のプロファむルの1぀の制限されたサブセットを䜿甚するPRECISプロファむル[1]を䜜成するこずを怜蚎するこずもできたす。 これにより、わずかに異なる堎合でも同じず芋なされる識別子を正芏化できたずえば、同じように芋えるテキストを出力するが、Unicode衚珟がわずかに異なるキヌボヌドを備えたロケヌルの堎合、明確な情報を提䟛できたす。有効なRust識別子を決定するための簡朔なルヌルセット。

PRECISフレヌムワヌクの既存のRust実装を認識しおいたせん䜜成に必芁なUnicodeむンフラストラクチャの倚くがただ䞍足しおいるず思いたすが、これはおそらくいずれかの方法で修正する必芁がありたす。

私は自分自身を専門家ずは呌びたせんが、1぀のPRECIS実装の構築を支揎し、RFCずいく぀かの萜ずし穎ず萜ずし穎に䞀般的に粟通しおいるので、喜んで支揎したすたたはPRECISワヌキンググルヌプに助けを求めおバグを報告したす必芁に応じお。

[1] [RFC 7564]https://tools.ietf.org/html/rfc7564PRECISフレヌムワヌクアプリケヌションプロトコルにおける囜際化された文字列の準備、実斜、および比范

同じように芋える文字に぀いおの良い点。 これがりィキペディアです
この問題に関する蚘事
https://en.wikipedia.org/wiki/Duplicate_characters_in_Unicode

これは、からの重耇文字が
アゞアのスクリプトはほずんど統䞀されおいたす

https://people.w3.org/rishida/scripts/chinese/

2017幎4月11日午埌9時1分、SamWhitedは次のように曞いおいたす。
>>

たた、新しいものを䜜成するこずも怜蚎できたすたたは、より可胜性が高いのは、
既存のプロファむルの1぀の制限されたサブセットPRECISプロファむル[1]
識別子甚。 これにより、次のような識別子を正芏化できたす。
わずかに異なっおいおも同じず芋なす必芁がありたす䟋
同じように芋えるテキストを出力するキヌボヌドがあるロケヌルの堎合、
ただし、Unicode衚珟がわずかに異なりたす
有効なRustを決定するための明確で簡朔な䞀連のルヌル
識別子。

PRECISの既存のRust実装を認識しおいたせん
フレヌムワヌク1぀を䜜成するために必芁なUnicodeむンフラストラクチャの倚く
ただ行方䞍明だず思いたすが、おそらく修正する必芁がありたす
ややどちらの方法でも。

[1] RFC 7564 https://tools.ietf.org/html/rfc7564PRECISフレヌムワヌク
囜際化された文字列の準備、斜行、および比范
アプリケヌションプロトコルで

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/rust-lang/rust/issues/28979#issuecomment-293367700 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/ABU7-IMgXefW2yZYyM0tn8qLhpGFw0bSks5ru84GgaJpZM4GM3Lj 。

@SamWhitedなぜUnicodeのNFCたたはNFKCよりもPRECISなのか

UnicodeのNFCたたはNFKCよりもPRECISを䜿甚する理由

TLDR —正芏化は、䜕かが有効な識別子であるかどうかを刀断するずきに実行したい1぀のステップにすぎたせん。 他の操䜜も実行する必芁がある堎合たたは実行しない堎合がありたす。

@SimonSapin Unicodeの正芏化はPRECISプロファむルの1぀のステップにすぎたせんしたがっお、実際には正芏化を䜿甚したす。おそらくNFCを掚枬したすが、PRECISはより広範囲のものをカバヌしたす。 たずえば、正芏化フォヌムは幅のマッピングを行わないため私は思いたせんか、 FullWidthはず同じ識別子にはなりたせん。 党幅のテキストを入力したいキヌボヌドを䜿甚しおいる堎合、これは問題になる可胜性がありたすこれは、ラテン文字よりも東アゞアの文字の方が問題になる可胜性がありたすが、党幅のテキストを䜿甚するロケヌルの誰かが問題になる可胜性がありたすチャむムを鳎らしお、問題を誀っお䌝えおいるかどうか教えおください。 PRECISプロファむルで実行できるその他のこずには、蚱可される文字プロパティのサブセットの定矩が含たれたすたずえば、文字、数字、ダッシュ、文字などで始たる。

_免責事項_党幅のテキストをマッピングするこずが望たしいかどうかに぀いおは、実際には考えおいたせん。 これは単なる䟋です。 正芏化が重芁なのかもしれたせんし、マッピングをたったく気にしないのかもしれたせん。 Goは、識別子に文字たたは数字のプロパティがあるかどうかだけをチェックするので、それだけでうたくいくのであれば、私たちにずっおも問題ないかもしれたせん。 確かにもっず考えが必芁です。

さらに読むこれはGo仕様が行うこずですこれは私が提案したものよりもはるかに単玔で、良いこずかもしれないし、そうでないかもしれたせん https ://golang.org/ref/spec#Source_code_representation

PRECISを䜿甚するものは䜕ですか プログラミング蚀語はありたすか

PRECISを䜿甚するものは䜕ですか プログラミング蚀語はありたすか

どの蚀語でもわかりたせんが、Goはそうしたす。

関連するGo2の問題golang / go16033

2017幎4月11日火曜日02:07:49PM-0700に、SamWhitedは次のように曞いおいたす。

たずえば、正芏化フォヌムは幅のマッピングを行わないため、 FullWidthはず同じ識別子にはなりたせん。

NFKCはそれを行いたす

Python 3.6.0 (default, Jan 16 2017, 12:12:55)
[GCC 6.3.1 20170109] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>  = 1
>>> FullWidth
1

-
よろしくお願いしたす、
lilydjwg

@SamWhited 、あなたの最初のリンクで私は芋぀けたす

identifier = letter { letter | unicode_digit } .
letter        = unicode_letter | "_" .

しかし、私が知る限り、Goは珟圚正芏化を行っおおらず、PRECISを䜿甚するこずが提案です。 あれは正しいですか

しかし、私が知る限り、Goは珟圚正芏化を行っおおらず、PRECISを䜿甚するこずが提案です。 あれは正しいですか

@SimonSapinそれは正しいです。 たあ、実際には提案ではなく、この問題のように考え抜かれるアむデアです申し蚳ありたせんが、その文ず私のリンクを読み盎しおください、そしおそれは蚀葉が䞍十分でした;それが今それを䜿甚しおいるこずを瀺唆するこずを意味するのではなく、私だけ非ASCII識別子を凊理するためにGo以倖が実際に䜕をするのかわからない。

@SimonSapin

珟圚の実装ず䞀臎しおいる堎合でも、詳现な蚭蚈でRFCプロセスを実行する䟡倀がある堎合がありたす。

👍

UAX31を読んで、その機胜を確認したした。PRECISプロファむルを䜿甚するこずのもう1぀の利点は、stringprepを廃止し、代わりにPRECISを䜿甚するのず同じように、Unicodeバヌゞョン間で将来の互換性ずアゞャむルを実珟する方法を提䟛したす個々のコヌドポむント自䜓ではなく、コヌドポむントの掟生プロパティを操䜜するこずによっお。

TR31には、これに察凊するための「䞍倉識別子」の抂念がありたすが、事実䞊、自由圢匏クラスから掟生したPRECISプロトコルの制限がわずかに少ないバヌゞョンですが、PRECISは、ルヌルが必芁な順序を考慮しおいたせん。適甚されたす私は思いたせんかたた、ギリシャの最終シグマの䜿甚など、PRECISフレヌムワヌクでカバヌされる゚ッゞケヌス、たたはハングルゞャモ呚蟺のいく぀かの゚ッゞケヌスもカバヌしたせん繰り返したすが、私はこれらのどちらの専門家でもありたせん、しかしそれがPRECISが存圚する理由です;専門家はすでに䜜業を行っおいたす。

これは、Unicodeバヌゞョン間で将来の互換性ずアゞャむルを実珟する方法を提䟛したす個々のコヌドポむント自䜓ではなく、コヌドポむントの掟生プロパティを操䜜するこずにより。

この点がわかりたせん。 XID_StartずXID_Continueは掟生プロパティです。

この点がわかりたせん。 XID_StartおよびXID_Continueは掟生プロパティです。

その時、私はUAX31を誀解したかもしれたせん。 特定のUnicodeバヌゞョンが必芁なように芋えたした。 読み盎したしたが、どこから入手したのかわかりたせん。

これを投皿するのに適切な堎所かどうかはわかりたせんが、数孊蚘号のリンティングでいく぀かの興味深い問題が発生する可胜性がありたす。 倉数名を曞き出すこずで簡単に回避できたすが、実際の方皋匏ずのより良い盞関が目暙である堎合は重芁になる可胜性がありたす。

たずえば、次のスクリヌンショットのΔ倧文字ずΎ小文字。 リンタヌは/wrong/ではありたせんが、ここでスネヌクケヌスの芁件を適甚するこずは実際には意味がありたせん。

screen shot 2017-06-27 at 2 28 55 pm

Swiftのように、XID Start / Continueでなくおも、倉数名で絵文字を蚱可するこずは可胜でしょうか

@fwrs 、絵文字は非絵文字よりもはるかに耇雑になりたした。

䞀郚のベンダヌのおかげで、色や现郚を倉曎し続ける絵文字結合ZWJシヌケンスを䜿甚できるようになりたした。これらのシヌケンスの倚くは、必ずしも肉県では芋えたせん。

たた、絵文字の定矩は毎幎急速に拡倧しおいたす。これは、安定した信頌できるニヌズを望んでいるシステムレベルのプログラミング蚀語ではありたせん。

ですから、かわいいですが、Rustの目暙ずは盞性が悪いず思いたす。 ただし、錆ベヌスのスクリプト/教育蚀語は、目暙によっおは絵文字を蚱可するこずでメリットが埗られる堎合がありたす。

@ryankurteこの䟋には意味䞊の問題がありたす。数匏を曞き写しおいたすが、U +2206INCREMENTではなくU+0394 GREEK CAPITALLETTERDELTAを䜿甚したした。 前者はギリシャ文字の文字であり、ケヌスマッピングがありたす。 埌者は数孊蚘号であり、そうではありたせん。

このコメントをクロスリンクしたい https //github.com/rust-lang/rust/issues/4928#issuecomment -343137316

ここでホモグリフベヌスの攻撃を有効にする可胜性は芋おいたせんが誰かがそれらに蚀及した堎合は、ノむズを無芖しおください、次のようなコヌドで譊告するリントを芁求するために、ちょっずした問題を埋めたした

#![feature(non_ascii_idents)]
fn main() {
    let a = 2;
    let а = 3;
    assert_eq!(a, 2);  // OK
    assert_eq!(а, 3);  // OK
}

䞀蚀で蚀えば、これら2぀のaは異なるUnicode文字であるため、2番目のletバむンディングは最初のletバむンディングをシャドりむングせず、䞡方がパスをアサヌトしたすただし、遊び堎はUnicode識別子をサポヌトしおいないようです。これはロヌカルで詊しおください;私のために動䜜したす。

この「機胜」を䜿甚しお、怜出が難しいRustプログラムに゚クスプロむトを導入できたす。特に、シャドりむングレットバむンディングは、私を含め、倚くの人が慣甚的なRustず芋なしおいるためです。

PSこの「機胜」は、手に負えないRustコンテストで圹立぀かもしれたせんが、 #![feature(non_ascii_idents)]は眉をひそめるはずです:)

@gnzlbg人々があなたのセミコロンをギリシャ語の疑問笊などに亀換するのを防ぐために、玛らわしい怜出がすでにある皋床サポヌトされおいるず思いたすが、それが識別子に適甚されるかどうかはわかりたせん。 もしそうなら、それはその問題を解決したす。 そうでない堎合は、少なくずも、すぐに実行できるツヌルがありたす。

しばらくの間倧きな動きがなく、RFCが必芁なため、これが閉じられ、コヌドがコンパむラから削陀される可胜性があるこずを少し心配しおいたす。 私は、Rustが21䞖玀の蚀語、぀たりUnicodeであり、Rustが英語を話さないプログラマヌに優しいこずをかなり気にかけおいたす。 私に欠けおいるのは、RFCを実際に䜜成する機胜です。

@ケツバン

人々があなたのセミコロンをギリシャ語の疑問笊などに亀換するのを防ぐための玛らわしい怜出のサポヌトはすでにあるず思いたすが、それが識別子に適甚されるかどうかはわかりたせん。

はい、クリップの問題で@ oli-obkが瀺唆しおいるように、Rustの実装では、代わりに最新の公匏の玛らわしいリストを䜿甚するず思いたす。

http://www.unicode.org/Public/security/revision-06/confusables.txt

ホモグリフベヌスの攻撃を防ぐこずができたす。 このリストは同期を保぀必芁がありたすが、それはビルドシステムの䞀郚ずしお自動化できるものです。

@ケツバン

これを気にするなら、識別子でナニコヌドをサポヌトする他の蚀語があり、これらの蚀語にはRFCプロセスず同様のプロセスがありたす。 あなたはそれらをチェックするこずから始めるこずができたす。 誰が知っおいるでしょう、倚分あなたはこの問題のフィヌドバックず䞀緒にそれらをマヌゞしお、内郚フォヌラムでpre-RFCを取埗するこずができたすか その時点から、それは他の人ずのフィヌドバックを取り入れたり議論したりするこずであり、あなたがそれを知る前にあなたはRFCの準備ができおいるでしょう。

ある意味で、ASCII識別子を氞遠に䜿い続けるこずを願っおいたす。 Unicode識別子の凊理は、盞互運甚性の面で非垞に倧きな問題です。 NFKCマッピングのより奇劙な䟋のいく぀かは、このようなものが同じ識別子にマップされるこずです。

>>> ℌ = 1
>>> H
1
>>> ⅹ = 42
>>> IX
42
>>> ℕ = 23
>>> N
23
>>> import math
>>> ℯ = math.e
>>> e
2.718281828459045
>>> ℹ = 2
>>> Z
2

@mitsuhiko珟実の䞖界にはそういう痛みがありたす。 この問題は、察凊が難しく、_個人的に_圹に立たない機胜が含たれおいるため、無芖するこずはできたせん。

たた、珟圚のRFCは、それらに非垞に類䌌した䟋に぀いおの_lot_の議論の埌、NFKCよりもNFCを明瀺的に提案しおいたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡