やっぱりruby1.9が好きになれない。takuyaですこんばんは
たったこれだけのコードで動作が違う。
list = (1..10).map{|e| Thread.new{loop{puts "test from #{e}";$stdout.flush}} } list.each{|t| t.join}
ruby1.8とruby1.9で動作が違って困ることが多い。
スレッドコンテキスト切り替わるタイミングが 改行の前後とか明らかにオカシイだろ。
文字コードといいスレッドといい、そこ変えるかぁって思う。大事なところが変わっててマジ困る。
・変数のスコープ
・スレッドの切り替わりタイミング
・マジックコメント
・文字コード
そこ変える必要あったのかなぁ。VM化と文字コードって同時にしなくちゃダメだったのかなぁ。
なんだろう。Rubyは期待を裏切らない動作が多い印象だったけど、1.9は期待を裏切る動作がおおいな。Rubyっていままでもこういう大胆な進化をしてきたんだろうか。
RVMやらrbenvが必要なのってこういうところを変えすぎて、互換性失ったからだよね。
ruby --1.8-comatibple
みたいな、オプション作っておいてほしいのである。
追加:実例
冒頭の例は、本当にオカシイんだよ。
Ruby1.8で実行すると、次のような感じ。
test from 5 test from 4 test from 3 test from 2 test from 1
ruby1.9で実行すると
test from 1 test from 7test from 8test from 5 test from 5 test from 9test from 4test from 10 test from 2test from 6test from 1 test from 8test from 10
改行が分れるのどう考えても不便だし何とかして欲しい。