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]のスレッド参照。