2.0.0-rc1 release [DRAFT!]

Japanese follows; 日本語はあとで

Hello all --

We are pleased to announce the release of Ruby 2.0.0-rc1.

New features in 2.0.0

  • Keyword arguments
  • Enumerable#lazy
  • Module#prepend
  • #to_h: Convention for conversion to Hash
  • %i: a literal for symbol array
  • Updated regexp engine: Onigmo (a fork of Oniguruma)
  • Enumerator#size and Range#size were introduced [#6636]
  • DTrace support
  • TracePoint
  • Optimized IO performance on Windows
  • NativeClient support
  • Documentation improvement
  • Enhanced asynchronous interrupt handling
  • Launch-time stack size tuning parameters
  • Refinements [experimental]

.. and more improvements. See NEWS for details.

Here are some introductory articles by third parties:

(If you volunteer to provide additional articles, we may cite or refer to them in the
next release announcement.)



There are three notable incompatibilities we know of:

  • The default encoding for ruby scripts is now UTF-8 [#6679]. Some people report
    that it affects existing programs, such as a some benchmark programs that have
    become very slow [ruby-dev:46547].
    The spec may change for the official release.

  • iconv was removed, which had already been deprecated when M17N was introduced
    in ruby 1.9. Use String#encode, etc. instead.

  • There is ABI breakage [ruby-core:48984]. We think that normal
    users can/should just reinstall extension libraries.
    You should be aware: "DO NOT COPY .so OR .bundle FILES FROM 1.9".

There are some comparatively small incompatibilities. [ruby-core:49119]
Please report any other incompatibility you notice.

FYI: We are creating upgrade notes, but some parts are already outdated.

Status of Refinements

2.0.0 will include refinements as an "experimental feature" because we could not
agree on its detailed spec.
Note that the behavior may change in future versions of Ruby.

Support level of Each Platform

I plan to decide "supported level list" depending upon whether 2.0.0-rc1
builds/works or not on each platform.
Please try it on your favorite platform(s), and report if it works all right
or not!


こんにちは、Ruby 2.0.0-rc1 をリリースします。

2.0.0 の新機能

  • キーワード引数
  • Enumerable#lazy
  • Module#prepend
  • #to_h: Hash への変換メソッド
  • %i: シンボルの配列のリテラル
  • 正規表現エンジンを Onigmo に変更(鬼雲: 鬼車の派生版)
  • Enumerator#size が導入された [#6636]
  • DTrace サポート
  • TracePoint
  • Windows での IO の性能改善
  • NativeClient サポート
  • ドキュメントの改善
  • 非同期割り込み制御機能の改良
  • 起動時のスタックサイズ設定機能
  • Refinements [実験的機能]

その他改善多数。詳しくは NEWS をご覧あれ。




特筆すべき非互換を 3 つ把握しています。

  • デフォルトのスクリプトエンコーディングが UTF-8 になりました [#6679] 。
    ベンチマークプログラムが非常に遅くなるなど [ruby-dev:46547]

  • iconv が削除されました。元々 M17N が導入された 1.9 の時点で非推奨のものでした。
    String#encode などを使って書き換えてください。

  • ABI 互換性がなくなっています [ruby-core:48984] 。通常のユーザは、拡張
    ライブラリを再インストールするだけでよいはすです。「1.9 の .so, .bundle ファイル


ご参考: 以下にアップグレードガイドを作成中ですが、すでに一部内容が古いです。

refinements の扱い

2.0.0 では refinement を「実験的機能」として提供します。仕様の詳細について合意に
挙動が Ruby の将来のバージョンで変化する可能性があることに注意してください。


各プラットフォームのサポート状況は、2.0.0-rc1 の動作実績を元に決める予定です。