Rubyの変更点を書いていく予定。 気分によって「ですます調」だったり「だである調」だったりしますが気にしてはいけません。 どんどんファイルが大きくなっていったり最後まで読み終わらないと最新の情報が見えなかったりするのも気にしてはいけません。
現在は1.4から1.6への変更点(一部)と1.6.0から1.6.1への変更点(ChangeLogにあるものすべて)があります。
足りないものや間違いなどあれば*1掲示板、%ruby(IRC)、メールなどで教えてください。 [ruby-list:24985]も参照。
1.4.6より古い1.4系からのバージョンアップの場合は、filterからcollect!への変更やClass#module_functionがなくなった*2ことや/[/]/がエラーになる*3などの1.4系の途中での変更も注意が必要です。
-Xdirectoryが-Cdirectoryに変更になった。
RUBYOPTとRUBYLIB_PREFIXを参照するようになった。
シンボルのクラスがFixnumからSymbolになった。
*4
pがobsoleteになってmが追加された。
*5
(?>...)と\Gが追加された。
新機能。
可視性については[ruby-dev:10870]からのスレッド参照。 [ruby-dev:10677]からのスレッドもありますが、最終的な仕様とはちょっと違うかもしれません。
[ruby-dev:10906]と[ruby-dev:10903]にあるようにクラス変数は親から先に初期化した方が良いです。
rescue に => で変数が指定できるようになった。
文 rescue 式という書き方ができるようになった。
defにもrescue節、else節、ensure節をつけられるようになった。
$KCODEのデフォルトが普通は"NONE"になった。
block_given?
iterator?の名称変更。
failからraiseのように古いものも残っている。
Regexp::new(str[,option[,code]])
Regexp::compile(str[,option[,code]])
mに対応するRegexp::MULTILINEが追加されている。
Array#pack(template)
eEgGMUwZ_が追加された。 *6
Array#concat
[ruby-list:22546]自動的に配列へ変換しなくなった。
Array#+など他にも自動的に配列に変換しなくなったメソッドがある。
Numeric
Numeric#modulo(num)
Numeric#remainder(num)
[ruby-list:25031]やruby-math参照。
IO#stat
返値のクラスがStruct::StatからFile::Statに変更になった。
Thread::start([arg,...]){|x...|...}
Thread::fork([arg,...]){|x...|...}
Thread::new([arg,...]){|x...|...}
引数を渡せるようになった。
Thread::join
Thread.joinがなくなった。
1.4系でも使えるThread#joinを使えば良い。
ThreadGroup
スレッドグループクラスが追加された。
Time::at(time[,usec])
μ秒が指定できるようになった。
at以外も同様。
usecはTime::strftimeでは取り出せない。
Time::tv_usecまたはTime::usecで取り出す。
参考:[ruby-list:23707]。
Date::new(year,month,day[,start])
古いDateはDate2で置き換えられた。
今後はrequire 'date2'の代わりにrequire 'date'としてDateを使うのが望ましい。
require 'marshal'がobsolete。
[ruby-dev:10946]からのスレッド参照。
net/httpのHTTPReadAdapterがHTTPResponseReceiverになった。
その他バグ修正や内部的な変更のようです。
*1絶対あるはず。
*2理由は[ruby-dev:10340]参照。
*3/[\/]/にしないといけない。
*4s = s.id2name if s.is_a? Fixnumのようなコードは
s = s.id2name unless s.is_a? Stringに変更する必要がある。
*5perlのsやmについては[ruby-list:22575]に表があります。
*6wのBER(Basic Encoding Rules)については[ruby-list:22451]のスレッド参照。