From: Tanaka Akira Date: 2005-01-09T12:41:55+09:00 Subject: [ruby-dev:25445] Re: 1.8 warn nonblocking IO#read and add IO#readpartial In article <20050109063005.3048a4ba.tommy@tmtm.org>, とみたまさひろ writes: > 1.8.2 までは警告が出なかったものが 1.8.3 では警告が出るようになるとい > うことでしょうか? はい、そのとおりです。 > であれば、反対です。 ふむ。 > # 以下、IO#read の挙動の話ではなく、一般的な話になってしまいますが…。 何かを変える時にどういう手順でやるべきかという話は、Ruby では定番とい えるものがないので、そういう議論は有用だと思います。 > 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 の警告がそういう印象を与えるのであれば、印象を弱 める工夫が必要かも知れません。 > 以前から「振る舞いが変わることについて事前に警告を出す」というのは、ほ > とんど意味がないと思ってました。 1.9 のリリース時に、ちゃんと「互換の > ない変更」「注意すべき変更」というドキュメントがあれば十分ではないかと。 必ずしもそのようなドキュメントを見て洩れなく判断できるほどプログラムの 隅々まで把握しているとは限りません。したがって、個々のプログラムを動作 させることによって、そのプログラムに含まれる非互換性にひっかかる箇所を 指摘することができれば、ドキュメントよりも適切であると考えます。 ただ、警告を迷惑に感じる人がいるのもわかります。 ひとつの案としては、警告を弱めることが考えられます。つまり、-w を指定 しないときには警告を行わないようにするわけです。 (現在、nonblocking な IO#read の警告は -w をつけなくても出ます。) ただ、-w は使わない人が多いように感じているので、それを指定しないと出 ないのでは、1.9 になった時にそんなのは知らなかったと言う人が出るように 思うのですが。 > その昔 cgi#[] で行なわれたような、以前の振る舞いを期待しているスクリプ > トを救うためにトリッキーな実装をするというのも迷惑なだけだと思ってます。 > 結局、完全な互換が保てないのなら、以前の振る舞いを期待する人にとっても、 > 新しい振る舞いを期待する人にとっても、不幸なだけかと…。 IO#read ではそのような実装は行いません。 -- [田中 哲][たなか あきら][Tanaka Akira]