Posted by Yusuke Endoh on 8 Feb 2013
Ruby 2.0.0-rc2 がリリースされました。Ruby 2.0.0 の最後の Release Candidate 版の予定です。
どうぞお試しください。もし何か問題があればお知らせ下さい。
所在
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.bz2>
SIZE: 10822239 bytes MD5: e92420131bd7994513e0bf09a3e2a19b SHA256: d55f897bb04283c5fa80223d96d990fe8ecb598508dd59443b356cbba1f66145
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.tar.gz>
SIZE: 13616756 bytes MD5: 9d5e6f26db7c8c3ddefc81fdb19bd41a SHA256: 87072ab3e6d393d47f7402682364e4f24efe1c518969795cc01fcdeeb0e646f3
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc2.zip>
SIZE: 15118480 bytes MD5: 1a2d33f1c50e32ca1532f8dea4790d53 SHA256: c28e9baf3aa00b41b8823c16df436ae143e8a63e43e7a53302f23119e13d0ebf
2.0.0 の新機能
- キーワード引数
- Enumerable#lazy
- Module#prepend
- #to_h: Hash への変換メソッド
- %i: シンボルの配列のリテラル
- 正規表現エンジンを Onigmo に変更(鬼雲: 鬼車の派生版)
- Enumerator#size が導入された
- DTrace サポート
- TracePoint
- require 速度の向上(特に Windows において)
- NativeClient サポート
- ドキュメントの改善
- 非同期割り込み制御機能の改良
- 起動時のスタックサイズ設定機能
- Refinements [実験的機能]
その他改善多数。詳しくは NEWS をご覧あれ。 サードパーティによる紹介記事があります。
- <URL:https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails>
- <URL:http://globaldev.co.uk/2012/11/ruby-2-0-0-preview-features/>
- <URL:http://www.infoq.com/news/2012/11/ruby-20-preview1>
- <URL:http://timelessrepo.com/refinements-in-ruby> (Refinements)
- <URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html> (in Japanese)
- <URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy> (Enumerator::Lazy, in Japanese)
(他にも記事を書いて頂けると、今後のリリースアナウンスで引用や参照をさせて頂くかも)
注意点
非互換について
特筆すべき非互換を 3 つ把握しています。
- デフォルトのスクリプトエンコーディングが UTF-8 になりました [#6679] 。これは既存のプログラムに影響を与えることが報告されています。例えば、ベンチマークプログラムが非常に遅くなるなど [ruby-dev:46547] 。公式リリースまでに仕様が変化するかもしれません。
- iconv が削除されました。元々 M17N が導入された 1.9 の時点で非推奨のものでした。String#encode などを使って書き換えてください。
- ABI 互換性がなくなっています [ruby-core:48984] 。通常のユーザは、拡張ライブラリを再インストールするだけでよいはすです。「1.9 の .so, .bundle ファイルをコピーするな」とだけ気をつけてください。
他にも比較的小さな非互換があります [ruby-core:49119] 。 さらに非互換に気づいたらぜひ報告してください。
ご参考: 以下にアップグレードガイドを作成中ですが、すでに一部内容が古いです。
refinements の扱い
2.0.0 では refinement を「実験的機能」として提供します。仕様の詳細について合意に至らなかったためです。 挙動が Ruby の将来のバージョンで変化する可能性があることに注意してください。
special thanks
preview と rc1 を試してくれた皆さんに感謝します。 相変わらずたくさんのバグを直してくれているコントリビュータの皆さんに感謝します。 このリリースを支えてくれた皆さんに本当に感謝します。