InfoQ

News

Ruby実装の概要: Ruby仕様、新しいデザインミーティング、RubiniusはC++を使用

作者 Werner Schuster, 翻訳者 編集部 投稿日 2008年5月20日 午前12時33分

コミュニティ
Ruby
トピック
テクノロジー,
言語,
ランタイム,
動的言語
タグ
IronRuby,
JRuby,
Rubinius,
Google Summer of Code
Ruby 1.8.x、Ruby 1.9.x、Rubinius、JRuby、IronRuby、およびその他のRubyの実装に伴い、多くの開発者がRubyランタイムに取り組んでいる。Rubyプラットフォームの将来性と互換性を調整するために、Rubyデザインミーティングが設定された(source)


最初のデザインミーティングは4月21日に行われた(source)(最初のRubyデザインミーティングについてはIRCログを参照のこと(source))。討論の議題には、次のようなものがあった。
  •  Ruby MVM実装に関する研究が最近開始されてから(source)、ミーティングではいくつかの実装の詳細とRubiniusとJRubyで現在利用可能なソリューションについて議論した。現在、Ruby MVMメーリングリストとデザインドキュメント(source)が利用可能である。
  •  RubySpecをRuby 1.8.xコードベースで実行することが議論された。Ruby1.8.7でのRubySpecの実行結果はオンラインで参照できる(source)
4月30日に行われた次のデザインミーティング - 次のRubyデザインミーティングの議題と詳細についてはRuby Design Wikiを参照してほしい(source)


 Ruby仕様への取り組みは、次の2つのRuby Google Summoer of Code(GSoC)2008プロジェクトの議題でもある(source)
  • Federico Builes氏による標準ライブラリの仕様(source)
  • Arthur Schreiber氏による標準ライブラリ仕様の改善(source) 
RubySpecを重視しているプロジェクトはRubiniusプロジェクトである。その開発者はRuby用の実行可能な仕様の記述にかなりの時間を費やしている。Rubiniusにおける最近の開発は、Evan Phoenix氏のCからC++へのコアVM('shotgun')の移植であった。注意すべきことは、Rubiniusの目標はRuby実装を(主に)Rubyで記述することであるが、コアVMはC(現在はC++)で記述されたことだ。このようなC++ VMにもかかわらず、Rubiniusチームがなぜ「Ruby in Ruby」のモットーを堅持しているのかについてEvan Phoenix氏は次のように説明している(source)
Rubiniusにはコミット権限を取得した約150人が関与しています。彼らの仕事の大部分はカーネルに関係しています。カーネルがシステム全体の最大部分であるからです。そして、恐らくその仕事の95%はRubyコードを記述することです。つまり、ほぼすべての貢献者にとって、Rubiniusの支援とはRubyコードを記述することを意味しています。したがって彼らにとって、これは「Ruby in Ruby」なのです。

Brian Ford氏(彼もまたRubiniusプロジェクトの一員である)は、さらに多くの情報を提供している(source)

新しいC++ VM(まだ未完成だが、ほぼ実装完了)では、12,619行のC++があり、カーネルディレクトリでは、23,882行のRubyコードがある。
     [..]

CVM(shotgunと呼ばれる)は私たちの最終目標ではありませんでした。また、次世代C++ VMも違います。これらはどちらも、より高い目標に向けた実質的なステップです。そして、明確にしましょう。私たちは最近、一連のコアメソッドをCで実装していません。私は最近、手直し作業の2つの主要部分を行い、多数のプリミティブ(直接VMにアクセスするCコードの塊)を導入しました。その1つはLookupTableです。これはVMでよく使用されるためCで記述されましたが、Rubyコードにも示されています。なぜなら、私たちはRubyでメソッドや定数参照に関連するものなどを大量に記述したからです。LookupTableはHashとよく似た役割を果たしますが、Hashと切り離すことで、実際にHashがより明確になり、Rubyでより多くのHashを記述することも可能になりました。


注意: Evan氏とBrian氏のブログ投稿は、JRubyの作者Charles' Nutter氏による投稿(そこで彼はRubiniusの「Ruby in Ruby」モットーに反論している)への返答として書かれたものである(source)

原文はこちらです:http://www.infoq.com/news/2008/04/ruby-impl-roundup-spec-meetings

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。

ソフトウェアのリーン思考入門

これは、InfoQ Chinaのアジャイル編集者、Jacky Li氏によるリーン思考とリーン思考をどのようにソフトウェア開発に適用するかについての入門です。

Java 6のスレッド最適化は実際に動作しているのか?

2つのパートからなるこの記事では、シングルスレッドベンチマークの助けを借りて、Java 6のスレッドのパフォーマンスに関する疑問に答える試みをしようと思います。

平鍋氏のGordon Pask Award受賞スピーチ

Agile2008において、Gordon Pask Awardの授与式が行われ、その一人として、チェンジビジョンの平鍋氏が受賞しました。本賞は、毎年、アジャイルコミュニティで定評のあるリーダーだけではなく、新たなリーダーになる可能性のある者に贈られるものです。InfoQでは、授与式のスピーチを動画にてお送りします。

Linda Rising氏による「誰を信頼しますか?」

Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。