stackless VM
stackless pythonなどの「stackless」という語はちょっと語弊がある。それを説明するにはC言語のスタックを説明せねばならない……と思ったが、http://practical-scheme.net/docs/stack-j.htmlを参照するだけで充分だった。stacklessというのはCスタックを使わないということである。
静的 vs 動的
Cスタックは利用後に必ず破壊される。スタックの親子関係を静的に決定できる。通常は一次元配列のスタックになり速度面で有利になる。逆にschemeスタックはGCまで破壊されない。スタックの親子関係を動的に決定する必要がある。通常は木構造のスタックになり速度面で不利になる。
C with POSIXではucontext.hを使って動的なスタックを作成することができる。動的スタックとコピーを上手く組み合わせることにより、継続を明示して扱うこともできるだろう。もちろんucontext.hによる動的スタックはかなり重い処理だが、そういった柔軟性を持たないからこそC言語は速度が出せるということでもある。