[#41278] [BUG:1.9] BINARY should not be ASCII-compatible — Yugui <yugui@...>

WXVndWkbJEIkRyQ5ISMbKEIKCgo+IBskQiRHISIkKiQqJGAkTSQzJDMkXiRHJE41RE9AJEclKyVQ

15 messages 2010/05/11

[#41407] [Bug #3339] win32ole test failure — Usaku NAKAMURA <redmine@...>

Bug #3339: win32ole test failure

20 messages 2010/05/25
[#41411] Re: [Bug #3339] win32ole test failure — Masaki Suketa <masaki.suketa@...> 2010/05/25

助田です。

[#41412] Re: [Bug #3339] win32ole test failure — "U.Nakamura" <usa@...> 2010/05/25

こんにちは、なかむら(う)です。

[ruby-dev:41296] Re: [BUG:1.9] BINARY should not be ASCII-compatible

From: Urabe Shyouhei <shyouhei@...>
Date: 2010-05-12 05:24:06 UTC
List: ruby-dev #41296
卜部です。

(2010/05/12 8:42), Yugui wrote:
> 2010/5/11 Urabe Shyouhei <shyouhei@ruby-lang.org>:
>> 偉い人の仕事には「どっしりと構えて些細なことでは動じない」というのもあると思っ
>> てます。
> 
> 偉い人は置いておいて、私はよりよい可能性があればいくらでも軽薄に立場を変えます。
> ただ、それが本当によりよいのかについては慎重でありたく、-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つけて回るとかでしょうか。アプリケーションは
ちょっと不便になりそうですね。その「ちょっと」が許容できるのなら、ありかなあと
いう気もします。

In This Thread