Rubyの変更点

Rubyの変更点を書いていく予定。 気分によって「ですます調」だったり「だである調」だったりしますが気にしてはいけません。 どんどんファイルが大きくなっていったり最後まで読み終わらないと最新の情報が見えなかったりするのも気にしてはいけません。

現在は1.4から1.6への変更点(一部)と1.6.0から1.6.1への変更点(ChangeLogにあるものすべて)があります。

1.4から1.6への変更点

足りないものや間違いなどあれば*1掲示板、%ruby(IRC)、メールなどで教えてください。 [ruby-list:24985]も参照。

1.4.6より古い1.4系からのバージョンアップの場合は、filterからcollect!への変更やClass#module_functionがなくなった*2ことや/[/]/がエラーになる*3などの1.4系の途中での変更も注意が必要です。

コマンドラインオプション

-Xdirectory-Cdirectoryに変更になった。

環境変数

RUBYOPTRUBYLIB_PREFIXを参照するようになった。

リテラル

シンボル

シンボルのクラスがFixnumからSymbolになった。 *4

Rubyの文法

正規表現

変数

クラス変数

新機能。

可視性については[ruby-dev:10870]からのスレッド参照。 [ruby-dev:10677]からのスレッドもありますが、最終的な仕様とはちょっと違うかもしれません。

[ruby-dev:10906][ruby-dev:10903]にあるようにクラス変数は親から先に初期化した方が良いです。

制御構造

例外処理

組み込み変数

$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以外も同様。 usecTime::strftimeでは取り出せない。 Time::tv_usecまたはTime::usecで取り出す。 参考:[ruby-list:23707]

Date::new(year,month,day[,start])

古いDateはDate2で置き換えられた。 今後はrequire 'date2'の代わりにrequire 'date'としてDateを使うのが望ましい。

Marshal

require 'marshal'がobsolete。 [ruby-dev:10946]からのスレッド参照。

1.6.0から1.6.1への変更点

net/httpのHTTPReadAdapterがHTTPResponseReceiverになった。

その他バグ修正や内部的な変更のようです。


copyright © 2000 ZnZ (Kazuhiro NISHIYAMA)

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