Hatena::ブログ(Diary)

miura1729の日記 このページをアンテナに追加 RSSフィード

2007-12-30

Ruby 1.9.0のバイトコードをいじり倒す(その4)

08:54 |  Ruby 1.9.0のバイトコードをいじり倒す(その4)を含むブックマーク  Ruby 1.9.0のバイトコードをいじり倒す(その4)のブックマークコメント

そういえば、言い忘れていましたが、タイトルにいじり倒すと書いてある割りには、バイトコードを1から作る話は出てきません。バイトコードを1から作る話としては、hzkrさんのScheme on YARV(http://d.hatena.ne.jp/hzkr/20070323#p3)がすばらしいです。

私のほうは、Rubyコンパイラの生成したバイトコードパッチを当てる方向で突き進みたいと思います。

今後の方針ですが、現在バイトコードパッチを利用してbreak pointとbacktraceを実現したデバッガを作っています*1。このデバッガの解説をしていきたいと思います。(その3)までは単に配列の変形だけで簡単なのですが、この先はなかなか険しいです。YARV Maniacsだけではなく、

を読んでおくと良いと思います。あと、Rubyのソース中のiseq.cやcompile.cとは顔なじみになることでしょう。

私個人では、デバッガを開発中で止まっていてこの先の解説は出来ないのですが、まだまだ夢は広がります。

  • 実行時にプロファイルを採って、実行時に最適化する
  • 互換性回復ツール

遠くを見ると面白いのですが、現実には問題がごろごろしています。次は、今デバッガの開発が止まっている原因になっている、VM::InstructionSequenceの問題について説明します。

*1ソースコード(だけ)はhttp://d.hatena.ne.jp/miura1729/20071125/1195963181に貼り付けてあります。