Ruby 2.0 リリース週記 (2012/05/14 - 20)

Ruby 2.0.0 のリリースに向けた活動について、毎週くらいのペースで書きたいなあと思ったので始めます。飽きたらやめます。
ユーザ視点で面白そうな機能や、リリースに向けた進捗について書くつもりです。コミット単位の詳しいニュースは nagachika さんの ruby-trunk-changes を見るといいです。

Ruby 2.0 について

Ruby 1.8 、1.9 に続く Ruby の新系統です。
新系統といっても、RubyKaigi 2010 の開発者会議にて、まつもとさんから「100% 互換」のスローガンが発表されていますので、原則として仕様変更は入らない予定です。*1
今のところ 2.0 に入ることが発表されている大きめの新機能は、

の 2 点です。[ruby-core:39837]
それぞれの詳細は、そのうち説明したいと思います。

リリースまでのスケジュール

[ruby-dev:44691] より

* 2012/08/24: big-feature freeze

  "big feature" の採否を決めて、大まかな仕様を決定します。

  この締め切りまでに、"big feature" の提案者は議論をまとめて、
  大まかな仕様の結論を出し、まつもとさんの承認を得てください。
  間に合わなかった提案は見送りになります。

  何が "big feature" かを明確に定義することは難しいですが、
  言語機能 (refinements や keyword arguments) や、安定させるのに
  時間のかかりそうな機能 (GC 関係や Dtrace など) は "big" と
  考えられます。例えば、[ruby-core:39810] に挙がっている機能は
  大体 "big" だと思います。

  便利メソッドを追加するだけとか、既存メソッドの機能拡張とかは
  "small" と考えられるかも知れませんが、保守的に考えることを
  おすすめします。早く提案するに越したことはありません。

* Oct. 24 2012:  feature freeze

  全機能の採否を決めて、仕様を詳細まで決めます。

* Feb. 24 2013:  2.0 release

  Ruby の生誕 20 周年です。

ということで、機能提案締め切りまであと約 3 ヶ月です。

今週のニュース: Native Client 対応パッチ導入

Google Chrome で native code を実行するための仕組みである Native Client 上で Ruby を実行するためのパッチがコミットされました。
簡単に言えば、JavaScript の代わりに Ruby を使えるようになるようです。HotRubyJRuby Applets に似ていますが、ネイティブで CRuby そのものがクライアント上で動くところが違います。*2
try ruby っぽいデモ。Native Client を有効にした状態 *3 で以下を開き、puts "Hello" などを実行してみてください。

実用にはまだまだ課題がありそうですが、うまくすれば 2.0 ではサーバもクライアントも CRuby で書けるようになるかもしれません。Google 自身が Ruby にパッチを送ってきているのも興味深い話です *4 。Yugui さんの頑張りに期待しましょう。

余談

今週は最初だったので内容多めでしたが、今後はもっと短いと思います。
NaCl 対応くらいわかりやすくて面白い新機能が毎週出てくるとは思えないので、特に話題が無い週は、議論中の新機能などを適当に紹介しようと思います。キーワード引数とか、refinement とか、dtrace 対応とか、標準添付ライブラリの gem 化とか。

「英語で書け」というツッコミは正しいですが、ハードルを上げると続かないのでとりあえず日本語で。勝手に英訳してくれてもいいですよ。

おまけ: 今のチケット残数

各コミッタが担当者になっているチケットの数。多いほどグズです。

 1: matz (137 tickets)
 2: nobu (64 tickets)
 3: ko1 (56 tickets)
 4: akr (30 tickets)
 5: mrkn (22 tickets)
 6: nahi (18 tickets)
 7: MartinBosslet (17 tickets)
 8: keiju (14 tickets)
 9: kosaki, naruse, usa (13 tickets)
12: authorNari (11 tickets)
13: marcandre (10 tickets)
14: drbrain (9 tickets)
15: tenderlovemaking (8 tickets)
16: knu, seki (7 tickets)
18: kouji, mame, sorah (6 tickets)
21: suke (4 tickets)
22: JEG2, akira, duerst, nagai, shyouhei, takano32, tarui, yugui (3 tickets)
30: Glass_saga, shugo (2 tickets)
32: aamine, kou, metanest, nagachika, ngoto (1 ticket)

*1:実際、非互換をもたらす機能提案がいくつも 3.0 に回されています。

*2:NaCl のサンドボックス内で動くので、ローカルファイルを盗まれるなどの危険はないはずです。NaCl に脆弱性が無い限り。

*3:chrome://flags を開いて、「ネイティブ クライアント」を有効にして再起動する。または、chrome を起動するときコマンドライン引数で --enable-nacl を与える。

*4:実体は Yugui さんですが。