制限事項

GC 発生時にC言語のスタック上(引数、自動変数)にしかない参照が解放されてしまわない対策が行われていません。そのため任意のタイミングでGC を発生させると問題が発生します。現在はメモリの使用量を見て GC が必要になるとフラグをたてて VM ループの特定の場所でのみ GC 処理を行うようにしています。この方法には Heap メモリの少ないマシンでのクリティカルな状況に対応できないという問題があります。

ruby は保守的 GC という手法でC言語のスタックを走査しています。
Newton は C++ のクラス(RefVar, RefArg)をうまく使うことでこの問題を解決しているようです。

既知の問題

※どちらも yacc でちゃんと書いたつもりなのですがうまくいってません。少し修正すると部分的にはよくなりますが、他の構文でエラーが出るようになってしまってなかなかうまくいきません...

未実装

本家では 0 で割算をするとエラーを発生せずに Inf という値を返します。
現在は 0 で割算をするとエラー(例外)を発生するようになっています。

その他