From: "NARUSE, Yui" Date: 2010-05-12T17:54:36+09:00 Subject: [ruby-dev:41298] Re: [BUG:1.9] BINARY should not be ASCII-compatible 成瀬です。 2010年5月12日14:24 Urabe Shyouhei : > 卜部です。 > > (2010/05/12 8:42), Yugui wrote: >> 2010/5/11 Urabe Shyouhei : >>> 偉い人の仕事には「どっしりと構えて些細なことでは動じない」というのもあると思っ >>> てます。 >> >> 偉い人は置いておいて、私はよりよい可能性があればいくらでも軽薄に立場を変えます。 >> ただ、それが本当によりよいのかについては慎重でありたく、-devで意見を聞きたい訳です。 > > 誤解を招いていそうなので補足しますと、-devで意見を聞くことは良いことで、そこは > 否定してません。また、本当にみんなにとって幸せな解決策が見つかればいいなという > 祈りのようなものは私も持っています。 > > そこで技術的な部分にフォーカスして考えるのですが、 > >> これに賛同します。rb_str_newが生成する文字列はascii-compatibleなままでいきましょう。それでも、もし可能ならば >> アプリケーション開発者の悲劇を防ぎたいです。たとえば、ASCII-8BIT(1.8との互換性のためのもの, index >> 0)とBINARY(octetのためもの)を分離して、 >> ASCII-8BITは任意のエンコーディングと結合可能で結果はASCII-8BIT、という仕組みなんかはどうでしょうか。 > > これはたぶんrb_str_newした文字列は新ASCII-8BITになって、それを連結していくと、 > 非互換な文字列でも黙ってASCII-8BITに汚染されるということかと思いました。すると > 既存のライブラリをそのまま動かすと、いつのまにかASCII-8BITな文字列が増えること > が想像できます。それをアプリケーション開発者が避けるにはどうすればいいのかな、 > やっぱことあるごとにforce_encodingつけて回るとかでしょうか。アプリケーションは > ちょっと不便になりそうですね。その「ちょっと」が許容できるのなら、ありかなあと > いう気もします。 「ASCII-8BIT(1.8との互換性のためのもの, index 0)とBINARY(octetのためもの)を分離して」 はこのケースの場合分離する理由は何でしょう。 また、ASCII-8BIT は任意のエンコーディングと統合可能とした場合、現状出ていた Encoding::CompatibilityError が出なくなることを意味するのですが、 それって、当初の問題意識である早期検出という観点に置いて、現状より悪化していませんか。 -- NARUSE, Yui naruse@airemix.jp