翻訳にはプレゼンテーション資料が補足されます。
初日、デイブ・トーマスは彼の講演で3つの重要なことを述べました、そしてもちろん、それらの間には多様性がありました。 多様性は重要です。
Rubyといえば、これまでにさまざまな実装が登場しています。
これらの言語の完全な実装に加えて、「Rubyライクな」言語の部分的な実装もあり、実際にどれだけの数になるのかを推測することさえ困難です。
Pythonプログラマーは、「CPython、Jython、IronPythonを見てください。 Ruby(およびPerl)にこのようなものはありますか? これらの言語は、代替の実装を表示するには複雑すぎます。」 現在、さらに多くのRuby実装があります。 (ただし、PyPyなどの新しいPythonインタープリターも開発しているのは良いことです。)
一方、多様性には犠牲が必要です。 多くの異なるプラットフォームをサポートするには、特にJRuby、CRuby、MacRuby、Rubiniusなどの互換性レベルにまだ達していない新しい実装の場合、多くの労力が必要です。
私はあなたが多様性のために支払わなければならない価格を知っています、そしてそれは価値があります。
実際、私は新しい通訳を書くことによってそれをさらに増やしたいので、私は多様性をとても称賛します。
RiteVMと呼ばれ、組み込みデバイス用に設計されています。
RubyはもともとUnix用に開発されましたが、組み込みシステムでは、UnixおよびPOSIXインターフェースが不必要なものとして欠落していることがよくあります。
組み込みシステムのパフォーマンスは最近大幅に向上しているため、リアルタイム実行を無視して、より高いレベルの言語を使用することができます。
そのため、新しいインタープリターを開発しています。
- インタープリターは、Ruby言語の最小限のサブセットをサポートします。 ほとんどのI / Oおよびファイル管理機能は削除されます(ただし、後で追加される可能性があります)。
- 実装はLuaに似ています(ただし、より良い言語を使用します)。
- インタープリターはモジュール式になります。 たとえば、evalなしでトランスレーターを実装できます。 コンパイル中に多くのパラメーターを設定できます。Floatはfloatまたはdouble、Fixnum-int、long、long long、またはその他の方法として実装できます。 文字列関数はASCIIまたはUTF-8で機能します。 インタプリタはプラットフォームからそれほど抽象化されません。たとえば、単純なデバイスの実装では、ファイルI / Oが存在しない場合があります。
- 浮動小数点数は即値として実装され、計算が大幅に高速化されます。 (およその翻訳:Ruby MRIでは、整数はメモリ内で1つのプラットフォームポインタを占有するように実装されます。フロートはオブジェクトであり、メモリを大幅に消費します。)
- 最小要件にはC99コンパイラが含まれます。 Riteは、 RTOSの一部として、または単独でPC上で実行され、使用するメモリとCPUリソースが少なくなります。
- 32ビットワードとLuaに類似した一連の命令を含むレジスタ仮想マシンが使用されます。
- マークとスイープの遅延を減らすために、ガベージコレクターは滑らかになります[増分-以降は約。 transl。]、そしておそらく、世代を考慮に入れます[世代]。
さらに、九州工業大学の田中教授は、メソッドを見つけてゴミを収集しやすくするためのいくつかの命令を追加するFPGAベースのMIPSライクなプロセッサである「Rubyチップ」を開発しています。
Riteは、経済省[日本]が実施した2010年地域イノベーション研究開発プロジェクトの一部である、開発時のプロジェクトのコード名です。
結果は、次のように適用できるRubyのサブセットの実装です。
- ゲーム用のスクリプトエンジン、
- スマートホームシステム用のソフトウェア、
- デジタルテレビのファームウェアの通訳、
- リアルタイム応答が不要なロボットおよびその他の組み込みシステムの制御用。
もちろん、これらすべてが今すぐに現れるとは思いませんが、数年後、私たちのビジネスが成功すれば、これはかなり可能です。
はい、ほとんど忘れていました。
よくある質問
Riteの準備はいつですか?
知りません 私が述べたように、これは日本政府によって資金提供された2年間(2010-2011)のプロジェクトです。
RiteVMのソースコードは公開されますか?
はい おそらくMITライセンスの下で。 ただし、政府との契約の下では、ビジネスモデルが必要です。 おそらくGPLに加えてサブスクリプションを選択します(MySQLの配布時)。
RiteVM CRubyは置き換えられますか?
まったくありません。 Riteには、CRubyなどの完全な実装機能のごく一部しかありません。
C APIはどのようになりますか?
RiteVM APIはCRubyとは大きく異なります。 CRubyインターフェースは非常に使いやすいですが、[組み込み環境で]実装するのはより困難です。 理論的には、互換性レイヤーの開発は可能ですが、これを行う予定はありません。
RiteVMは複数の言語[多言語化]をサポートしますか?
いいえ、コンパイル時にACSIIまたはUTF-8のみを選択できます。 エンコーディング変換用の標準ライブラリもありません。
ネイティブシステムスレッドはサポートされますか?
いいえ、RiteVMのみではストリームをサポートしません。 OSスレッドを使用する場合は、それぞれでインタープリターを実行できます。 ファイバーは仮想マシンに実装できますが、これまでのところこれを計画していません。
RiteVMはYARV / JRuby / Rubiniusよりも高速ですか?
ほとんどない。 改善は、即値によって実装されるため、主に浮動小数点演算に影響します。
RiteVMの開発に貢献するにはどうすればよいですか?
ソースコードが開くまでお待ちください。 githubに投稿します。
儀式? おなじみですね。
2003年、RiteはRubyConfでの私の講演でRuby 2.0を実装するためのコード名として提案されました。 最終的には、YARV仮想マシンが使用されましたが、古い名前を使用しています。 「Ruby」と「lite」から形成されます。
CRubyはMatzです。 CRubyでの作業を停止する予定ですか?
一方で、私はもはやCRubyの開発に大きな貢献をしませんが、それを止めるつもりはありません。 CRubyは引き続きRubyの主要な実装であり、私は言語アーキテクトおよびコミュニティリーダーとして働き続けます。
レポートの第2部の翻訳もHabréで公開されています。