R6RS Macros and R6RS librariesを今度こそ移植する

追記 : 以下はこの時点。http://github.com/okuoku/mosh/commit/aeee5a33f6cc588b6d2b8edf880513cfd19f4fee
キャッシュ周りの整理の第一歩として、今のpsyntaxを捨ててSRFI-72のリファレンス実装に切り替えることにした。これは現在のpsyntax移植に比べて :

  • 1つのファイル内に複数のライブラリを含むことが出来る
  • moshが自前で実装しているシンボルのリネームを予め含んでいる
    • セッションを区別するユニークな識別子を必要とする。現在のmoshMOSH_GENSYM_PREFIXとしているが、より長い識別子の方が適当だろう。
  • より厳密なステージ間の区別を含んでいる
  • 他のマクロシステムを効率的に組み込む余地が有る

というメリットが有る。ただし、今のpsyntaxによる実装よりもシンボルの操作が非常に増えるので最適化が面倒かもしれない。
コードはかなり適当に修正しているが、現時点ではbootstrapをGaucheで行い、実行はmosh -5で行うことでスクリプトを実行できている。僕のリポジトリ( git://github.com/okuoku/mosh.git )のsrfi-72refブランチをチェックアウトし、

cd ext/newruntime
make
mosh -5 run.scm

とすると、main5.scmの内容であるところの(display "hogehoge")(newline)が実行される。