2.0.0-preview2 release [DRAFT!]

Japanese follows; 日本語はあとで

Hello all --

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

  • http://.../ruby-2.0.0-preview2.tar.bz2

New features in 2.0.0

  • Refinements
  • Keyword arguments
  • Enumerable#lazy
  • Module#prepend
  • #to_h: Convention for conversion to Hash
  • %i: a literal for symbol array
  • regexp engine was changed to Onigmo
  • Enumerator#size and Range#size were introduced [#6636]
  • DTrace support
  • TracePoint

.. 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.)


Unimplemented new features

We are planning to include the features shown in the following URL, but they
are not implemented, or need more discussion.

In particular, the spec of refinements [#4085] is still actively being discussed and
may change for the official release.


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 .
    The spec may change for the official release.

  • iconv was removed. It was deprecated for ruby 1.9.x. You should use
    the M17N features instead like String#encode.

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

There are some comparatively small incompatibilities.
Please report any other incompatibility you notice.

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

The main differences from 2.0.0-preview1

  • require is faster [#7158]
  • Rake was updated to 0.9.5 [#7256]
  • RDoc was updated to 4.0 [#7426]
  • RubyGems was updated to 2.0 [#7427]
  • minitest was updated to 4.3.2
  • The default script encoding was changed to UTF-8 [#6679]
  • libyaml was embedded [#7375]
  • DTrace support was implemented
  • Enumerator#size and Range#size were introduced [#6636]
  • Array#shift/unshift are faster [#6638]
  • hash algorithm was changed to siphash

(The list was made based on ruby trunk changes [1].)

[1] http://d.hatena.ne.jp/nagachika/searchdiary?word=%2A%5Bchanges%5D

Ruby 2.0.0-preview2 をリリースします。

  • http://.../ruby-2.0.0-preview2.tar.bz2

2.0.0 の新機能

  • Refinements
  • キーワード引数
  • Enumerable#lazy
  • Module#prepend
  • #to_h: Hash への変換メソッド
  • %i: シンボルの配列のリテラル
  • 正規表現エンジンを Onigmo に変更
  • Enumerator#size が導入された [#6636]
  • DTrace サポート
  • TracePoint

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




以下の URL に掲載されている機能は、未実装か、まだ議論が必要なものです。

特に、refinement の仕様 [#4085] は活発に議論されており、公式リリースまでに


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

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

  • iconv が削除されました。元々 deprecated なものでした。M17N の機能で
    ある String#encode などを使って書き換えてください。

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


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

2.0.0-preview1 からの主な差分

  • require が高速化された [#7158]
  • Rake が 0.9.5 に更新された [#7256]
  • Rdoc が 4.0 に更新された [#7426]
  • Rubygems が 2.0 に更新された [#7427]
  • minitest が 4.3.2 に更新された
  • デフォルトのスクリプトエンコーディングが UTF-8 になった [#6679]
  • libyaml が組み込みになった [#7375]
  • DTrace サポートが実装された
  • Enumerator#size が導入された [#6636]
  • Array#shift/unshift が高速化された [#6638]
  • ハッシュアルゴリズムが siphash に変更された

(このリストは ruby trunk changes [1] を元に作成しました)

[1] http://d.hatena.ne.jp/nagachika/searchdiary?word=%2A%5Bchanges%5D