Ruby 2.0.0-p0 リリース
Posted by Yusuke Endoh on 24 Feb 2013
Ruby 2.0.0-p0 がリリースされました。
Ruby 2.0.0 は Ruby 2.0 系列の最初の安定版リリースです。 Ruby への要求の多様化・大規模化に対応するため、数多くの新機能や改善が搭載されています。
Ruby 2.0.0 でプログラミングを楽しんでください。
ダウンロード
-
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.bz2>
SIZE: 10814890 bytes MD5: 895c1c581f8d28e8b3bb02472b2ccf6a SHA256: c680d392ccc4901c32067576f5b474ee186def2fcd3fcbfa485739168093295f -
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz>
SIZE: 13608925 bytes MD5: 50d307c4dc9297ae59952527be4e755d SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed -
<URL:https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.zip>
SIZE: 15037340 bytes MD5: db5af5d6034646ad194cbdf6e50f49ee SHA256: 0d0af6a9c8788537efd8d7d2358ce9468e6e2b7703dacba9ebd064d8b7da5f99
特徴
主要な新機能
主要な変更点は以下のとおりです。
- 言語コア機能
- キーワード引数: API 設計の新しい柔軟性
- Module#prepend: クラス拡張の新しい方法
- シンボルの配列を簡単に作るリテラル %i
- __dir__: 実行中のファイルのあるディレクトリ名
- default UTF-8 encoding: 多くのマジックコメントが不要に
- 組み込みライブラリ
- Enumerable#lazy / Enumertor::Lazy: 無限の遅延ストリーム
- Enumerable#size: 遅延サイズ評価
- #to_h: Hash への変換メソッド
- Onigmo (鬼雲): 新しい正規表現エンジン (鬼車の fork)
- 非同期例外を安全にハンドリングする API
- デバッグサポート
- DTrace サポート: 本番環境での実行時診断を可能にする機能
- TracePoint: 改善されたトレース API
- 性能改善
- bitmap marking による GC 最適化
- Rails の起動時間を大幅に短縮する Kernel#require の最適化
- メソッドディスパッチなどの VM 最適化
- 浮動小数演算の最適化
また、実験的機能としてではありますが、Ruby のモジュール性に対する新しい 概念となる refinement も提供されています。
新機能の詳しい情報については NEW ファイルもご参照ください。
互換性
2.0.0 の設計では 1.9 と互換であることに非常に注意を払っています。 1.9 から 2.0 への移行は、1.8 から 1.9 の移行より苦労しないと思います。 (大きめの非互換については後述します)
実際、サードパーティの献身的な活動によって、Rails や tDiary など、 いくつかの広く使われているアプリケーションが 2.0.0 の Release Candidate 版で動作することが報告されています。
ドキュメント
長年の懸案であったドキュメント不足についても、rdoc が大幅に追加され、 1.9.3 のときはドキュメント率が 60% だったのに対し、2.0.0 では 75% と なり、大きく改善しています。また、Ruby の構文の説明も追加されています。
ri ruby:syntaxで読むことができます。
安定性
TEENY が 0 ですが、1.9.0 と違い、2.0.0 は「安定版」リリースであることに ご注意ください。ライブラリ作者には 2.0.0 をサポートすることを推奨します。 上述の通り、1.9 から 2.0 への移行は比較的容易なはずです。
Ruby 2.0.0 は実用可能な状態であり、あなたの Ruby 生活を確実に改善します。
注意点
紹介記事
サードパーティによる新機能の紹介記事があります。
- <URL:http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example> (包括的、おすすめ)
- <URL:https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0> (包括的、おすすめ)
- <URL:http://el.jibun.atmarkit.co.jp/rails/2012/11/ruby-20-8256.html> (概要のみ、日本語)
- <URL:https://speakerdeck.com/nagachika/rubyist-enumeratorlazy> (Enumerator::Lazy のみ、日本語)
以下の記事も参考になりますが、refinement に関しての記述が古いです。
- <URL:http://rubysource.com/a-look-at-ruby-2-0/>
- <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>
また、"Rubyist Magazine" の最新号で 2.0.0 の一部の新機能を紹介する記事が 掲載されています。
日本語で書かれていますが、後日英訳もされる見込みです。
非互換について
特筆すべき非互換を 5 つ把握しています。
- デフォルトのスクリプトエンコーディングが UTF-8 になりました [#6679] 。 これは既存のプログラムに影響を与えることが報告されています。例えば、 ベンチマークプログラムが非常に遅くなるなど [ruby-dev:46547] 。
- iconv が削除されました。元々 M17N が導入された 1.9 の時点で非推奨の ものでした。String#encode などを使って書き換えてください。
- ABI 互換性がなくなっています [ruby-core:48984] 。通常のユーザは、拡張 ライブラリを再インストールするだけでよいはすです。「1.9 の .so, .bundle ファイルをコピーするな」とだけ気をつけてください。
- #lines, #chars, #codepoints, #bytes メソッドが Enumerator ではなく 配列を返すようになりました [#6670]。この変更によって、"lines.to_a" というイディオムを書く必要がなくなります。 Enumerator が必要な場合は #each_line などを利用して下さい。
- Object#inspect は #to_s を呼び出さず、常に #<ClassName:0x…> のような 文字列を返すようになりました。 [#2152]
他にも比較的小さな非互換があります。[ruby-core:49119]
Refinements の扱い
Ruby のモジュール性に新しい概念を与える Refinement と呼ばれる機能を追加しました。 しかし、Refinement は「実験的機能」であることに注意してください。将来仕様が変化 する可能性があります。 それでも、ぜひお試し頂き、感想をお聞かせください。 あなたのフィードバックによってこの機能を進化させていきたいと思っています。
謝辞
2.0.0 は非常に多くの人々の貢献によって成り立っています。 貢献のごく一部の不完全な謝辞ですら、ここに掲載するには大きくなりすぎました。 special thanks のページヘのリンクを貼ることでその代わりとさせてください。
最近のニュース
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025