YARV
YARV (Yet another Ruby VM)
Ruby 1.9.1にマージされて実行速度が上がった
昔のRuby処理系の実装は単純な構文木をたどるインタプリタだから実行速度は遅かったらしい。この問題を解決するためにYARVが笹田耕一によって開発された。
スタックマシンな仮想VM
YARVは下記から成る
RubyソースコードをYARV命令列に変換するコンパイラ
YARV命令列を実行する命令評価機
YARV以前のRubyの問題点
『Ruby用仮想マシンYARVの実装と評価』のPDFから抽出。下記の問題があるとのこと。
プログラムによるパーサ作成が難しい
パフォーマンスの問題
オブジェクト指向機能
ガーベジコレクタ(GC)
ブロックつきメソッド呼び出しとクロージャ
例外処理機能のオーバーヘッド
Ruby C API のサポートの問題?
命令列評価関数の再帰呼び出しは,とくに例外処理と絡む場合実現が困難
スレッドの実装方式による並列実行の問題
プリミティブ型がない言語仕様
静的解析が困難な言語仕様
YARVの仕様
要参照
YARV: Yet Another Ruby VM
YARVアーキテクチャ
『Ruby用仮想マシンYARVの実装と評価』
VM
VM は 5 つの仮想的なレジスタによって制御される。
PC (Program Counter)
SP (Stack Pointer)
CFP (Control Frame Pointer)
LFP (Local Frame Pointer)
DFP (Dynamic Frame Pointer)
参考
YARV - Wikipedia
YARV: Yet Another Ruby VM
YARVアーキテクチャ
『Ruby用仮想マシンYARVの実装と評価』
ruby/NEWS-1.9.1 at 1fd1f7bbfc5603cdcfa98363a9ec9e106705a0a3 · ruby/ruby
ruby/ChangeLog-YARV at e0915ba67964d843832148aeca29a1f8244ca7b1 · ruby/ruby
関連
Ruby 1.9
#仮想マシン(VM) #Ruby