とみたです。

On Sun, 9 Jan 2005 12:41:55 +0900
Tanaka Akira <akr / m17n.org> wrote:

> > 1.8.2 を 1.8.3 に上げる人の多くが期待しているのは、「1.8.2 と互換を持
> > ちつつ、1.8.2 リリース後のバグが修正されていること」だと思うからです。
> > そういう人に取っては、1.9 で変更がされるからと言って 1.8.x で警告が出
> > されるのは迷惑以外の何者でもありません。

> > 1.8.2 を 1.8.3 にすることで、正常に動作していたスクリプト達の修正を余
> > 儀なくされるのは、勘弁願いたいです。

> 修正を促しているのは事実で、そのような要請を行うこと自体は適切なもので
> あると思っています。ただ、「余儀なくされる」というほど強い要請である必
> 要はないので、IO#read の警告がそういう印象を与えるのであれば、印象を弱
> める工夫が必要かも知れません。

田中さんの考えている対象は Ruby スクリプトを作成している人だと思います
が、Ruby スクリプトを使用している人のことは考えなくても良いのでしょう
か。

Ruby での開発に興味がない人が、どこからか持ってきた「動作環境 Ruby
1.8.x」の便利なプログラムを今まで動かしていて、軽い気持で Ruby を 
1.8.3 にした途端、警告が出るようになってしまった… というのは 1.8.x を
「安定版」と言っている以上、あってはいけないことだと思います。そのよう
なことをしていると、「Ruby は安定版といいつつ仕様が変わる使えない言語」
だという悪評が立ってしまうと思います。

> > 以前から「振る舞いが変わることについて事前に警告を出す」というのは、ほ
> > とんど意味がないと思ってました。 1.9 のリリース時に、ちゃんと「互換の
> > ない変更」「注意すべき変更」というドキュメントがあれば十分ではないかと。

> 必ずしもそのようなドキュメントを見て洩れなく判断できるほどプログラムの
> 隅々まで把握しているとは限りません。したがって、個々のプログラムを動作
> させることによって、そのプログラムに含まれる非互換性にひっかかる箇所を
> 指摘することができれば、ドキュメントよりも適切であると考えます。

ドキュメントの方が適切だと思います。1.8 で正常動作していたスクリプトを 
1.9 で動かしたらおかしくなった…という場合、そのスクリプトの開発者であ
れば 1.8 から 1.9 への変更点のドキュメントがあれば、おそらく解決できる
でしょう。

> ただ、警告を迷惑に感じる人がいるのもわかります。
> 
> ひとつの案としては、警告を弱めることが考えられます。つまり、-w を指定
> しないときには警告を行わないようにするわけです。
> (現在、nonblocking な IO#read の警告は -w をつけなくても出ます。)

動作が変わるという点で、その案にもあまり賛成ではないです。

> ただ、-w は使わない人が多いように感じているので、それを指定しないと出
> ないのでは、1.9 になった時にそんなのは知らなかったと言う人が出るように
> 思うのですが。

バージョンの付け方の問題にもなると意味いますが、Ruby では、x.y.z の z 
が変わったときにはバグ修正だけで仕様変更はない。y が変わったときには仕
様変更もありうる…というものだと私は思ってました。

1.8.x で動いていたものがそのまま 1.9 で動くとは思う方が間違っていると
思います。どうせ 1.9 になったときには、スクリプトを見直さないといけな
いのだから、1.8.x の間でわざわざ警告を出す必要はないと思います。

> > その昔 cgi#[] で行なわれたような、以前の振る舞いを期待しているスクリプ
> > トを救うためにトリッキーな実装をするというのも迷惑なだけだと思ってます。
> > 結局、完全な互換が保てないのなら、以前の振る舞いを期待する人にとっても、
> > 新しい振る舞いを期待する人にとっても、不幸なだけかと…。

> IO#read ではそのような実装は行いません。

あ、それは承知してます。余計なことをしてみんな不幸になってしまった事例
として出しただけです。

-- 
とみたまさひろ <tommy / tmtm.org>