R6RS test suite の Hash table テスト全部通った!

やっと R6RS test suite の Hash table のテスト全部通った。これはうれしい。

% ../mosh -b tests/r6rs/run/hashtables.sps
Running tests for (rnrs hashtables)
249 tests passed


これが久々にくじけそうなくらい、作業のスタックが深くて大変だった。
例外周りの仕組みを一気に作らざるを得ないのがつらいところ。

  1. psyntax 動作
  2. psyntax 用に R6RS Records, Conditions を実装
  3. psyntax で Records, Conditions を動かす方法を解析
  4. Hash table 周りをすべて実装(Generic な Hash table 面倒)
  5. dynamic-wind を実装
  6. dynamic 変数をサポートする parameterize を実装
  7. with-exception-handler を実装
  8. raise / raise-continuableを実装
  9. apply がネイティブスタックを使っているバグを修正
  10. values のバグを修正
  11. assertion-violation を C++ 側に実装

などなど。

今日の作業ログ

WRITING SOLID CODEの影響を受けて、昨晩は寝床で考え事。
VM の改造中にスタックがずれて死んでしまうという症状を如何に捕まえられるか。デバッグビルドのときにスタックのチェックを厳しめにすることが可能なような仕組みづくりをすることに。
うまくいった。これは便利。


apply のリファクタリング完成。mosh -t のテストも通った。psyntax の起動に失敗する(rev326)

psyntax が起動しないのは

(eval 3 '())

などが死ぬ。→修正した。(rev327)


assertion-violation を実装した。