1.9.3で、Arrayを継承したクラスのcompactメソッドを呼び出したとき、Arrayクラスのオブジェクトが帰ってくるこの変更自体は、r30148で導入された意図的な変更だと思います。methods.と言っているんですが、compact/uniq/transpose/shuffleもEnumerableでもともと定義されていないですよね。まつもとさんとくに理由がないのであれば、これらのメソッドはサブクラスのインスタンスを返すようにするか、flattenなどもArrayを返すようにした方がよいのではないかと思います。修正されたようですね。agoEnumerableで定義されていないArray独自のメソッドはサブクラスを返したほうが良いと思います。直すタイミングはいつがいいのかな。agoEnumerableで定義されていないArray独自のメソッドはサブクラスを返したほうが良いと思います。直すタイミングはいつがいいのかな。いまから2.0にspecレベルの変更が入るのは反対します。ago結局のところ、1.9.3の挙動は仕様だったのでしょうか?それとも実はミス?それによって、trunkに既にcharliesomeが先走って入れちゃった変更をrevertすべきかどうかとか(した方がいいと私個人は強く思っていることを表明しておきます>mameさん)、1.9.3で現状rubyspecが仕様と思って記述してしまっているのを変更した上で1.9.3でもバグとして直すべきかどうか、などといった判断に影響が出ます。ago正直なところ、どうして1.9.3と2.0の挙動が異なってしまっているのか経緯を把握してないので適切な答えはできません。ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。wrote:正直なところ、どうして1.9.3と2.0の挙動が異なってしまっているのか経緯を把握してないので適切な答えはできません。ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。好みということになります。その挙動でいきましょう。同じ挙動のはずなので)。変えるかどうかはうささんにお任せします。「もうRCだから変更すんな」と釘を刺すべきでは無いですかね。agoこんにちは、なかむら(う)です。wrote:正直なところ、どうして1.9.3と2.0の挙動が異なってしまっているのか経緯を把握してないので適切な答えはできません。1.9.3と2.0.0はつい先日まで同じでした。trunkを変更してしまったので、挙動に違いが発生しています。バグなら直すのもやむなしと思いますが、1.9.3では仕様だった(とこれまで理解されてきた)ので、このタイミングで2.0.0の挙動が変わってしまったことが問題になっています。ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。同感ですが、いつ、がいいのでしょうね。agoこんにちは、なかむら(う)です。変えるかどうかはうささんにお任せします。バグだったのなら1.9.3も当然変えます。仕様だったのなら当然そのままです。(中途半端な例があるのは把握してますが)どっちなんでしょうか...それでは。「もうRCだから変更すんな」と釘を刺すべきでは無いですかね。話した感じでは反省してくれてました。遠藤がもっと監視してる体制でないといけないんですが、全然余力がなくてすみません。ブランチを切るんで、そこからリリースまではなるべく全コミットを把握するように努めます。wrote:ただ、ArrayにあってEnumerableにないメソッドはレシーバーのクラスを返したほうが良いと思います。好みということになります。いや、そうなっていないと思います。[i686-linux]FoosortはEnumerableにもあるメソッドなので、まつもとさんの考えでは常にArrayを返すべきということになると思います。将来ArrayにしかないメソッドがEnumerableにも追加されたらどうするかとか考える¶と、本当にまつもとさんの方針でよいのかもちょっと検討の余地があるように思いますが。その挙動でいきましょう。同じ挙動のはずなので)。現状まつもとさんの意図が正しく反映されているか疑問ですので、r39004はいったんrevertすべきだと思います。その挙動でいきましょう。同じ挙動のはずなので)。現状まつもとさんの意図が正しく反映されているか疑問ですので、r39004はいったんrevertすべきだと思います。これがバグ修正扱いなのであれば2.0.0が出た後で直してもよいと思いますし、仕様変更なのであれば今さら入るのはおかしいのではないですか?議論の余地があるなら問答無用revertに一票。あわてて進めて吉が出ることは少ないよ。ago#7768の方にもコメントしましたので、議論の続きは(もしあれば)そちらでやりましょう。残してこちらは閉じます。判断が変わってすみません。「実はこれはバグだったんだよ!!」と言って挙動を変えるのは決して好ましいことではないですよね。希望を明確に言ってるので、なるべくその芽を摘んでおきたくて。現状で行けるなら行きたかったのでした。名にそぐわない実体になったのはスケジュールミスです。変更に対する拒否権を持ってるつもりですが、それはリリースを円滑に進めることが目的なので、今回はむしろ拒否権を発動しないほうがリリースが円滑に進むと思ったのでした。どのくらい変えたがっているかを読み間違えた感も)以上、言い訳でした。判断誤ったり優柔不断に変えたりしてすみません。今後もしばしば誤ると思いますが、生温かくご意見ください。以降は拒否権全開の予定です。