From: Hidetoshi NAGAI Date: 2008-01-26T02:42:48+09:00 Subject: [ruby-dev:33382] Re: Binary String 永井@知能.九工大です. From: Yukihiro Matsumoto Subject: [ruby-dev:33333] Re: Binary String Date: Thu, 24 Jan 2008 00:57:59 +0900 Message-ID: > うーん、 > > (a) 1.8対応ライブラリ(1.9未対応) > (b) そのうちUNDEFINED-8BITで救済できるもの > (c) 根本的に対応不可能なもの > > があって、a=b+cなわけですが、bの割合がどれだけ大きいかですよ > ね。これは「encodingが明示されていないのでASCII-8BITになって > しまった(ので、永井さん的にはUNDEFINED-8BITになるべき)文字列」 > と「意図的にASCII-8BITを指定した文字列」がそれぞれどれだけ存 > 在するかにかかってくると思います。 そうですね. > で、現在、みなさんの努力によって意図せずにASCII-8BITを使って > しまう割合はどんどん減っています。エンコーディングが明示され > る局面は増えていますし、ASCIIであるべきものの多くはUS-ASCIIに > なっていますし。つまり、UNDEFINED-8BITがあっても、それと > ASCII-8BITを区別しなければならない局面が減っている、言い方を > 変えると、bの割合はどんどん減っていて、永井さんのアイディアの > 有効性も下がっているということではないかと思います。 う〜ん,どうなんでしょう? どんどん改善されていることは否定するつもりはありませんし その通りだと思いますが,それと「b の割合がどんどん減っている」とが 本当に直結しているのかは私にはわかりません. 別メールに述べたようなライブラリの絡みを考えると, そう単純には減ってくれないのではないかという気もします. > UNDEFINED-8BITがあってもブラックボックスの戻り値は同じエンコー > ディングであると推定するしかないと思うんですが、なにか間違っ > てます? > > あ、個々のライブラリ呼び出しの前にdefault_undefinedを指定するっ > てことなのかな。そうか、それだと意味があるかな。でも、その > APIは避けたいのですが。スレッドセーフじゃないし。 はい. default_undefined を指定してから呼んでやることで,1.8 のように, 想定している encoding はあるけれど明示はしていないというケースで 想定した encoding に基づく処理を行っている部分の救済を考えています. なお,別に UNDEFINED-8BIT を強引に押し込もうというような 意図はありませんし,1.8 との互換性をある程度は捨てねばならない というのも承知しています. でも,ちょっとしたことで互換性を維持できるのであれば できるかぎり維持した方がいいのではないかとは思ってます. で,例えば UNDEFINED-8BIT のようなものを加えることで 維持できる可能性とそれを加えることによる害とを 対比しなければならないのでしょうけど, 「実装が面倒」,「なくても大丈夫では」という程度で 害の内容や規模についてまだ十分に納得できていません. 「本当にそれは 1.8 との互換性を捨てざるを得ないほどに 害になることなのか」という話です. もちろん,互換性維持をどの程度重要と見るかは 人それぞれでしょうけど... -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp