fixedpoint.jp


Continuations from Generalized Stack Inspection (2010-03-29)

Readscheme.orgCompiler Technology/Implementation Techniques and Optimization に連なっている論文 "Continuations from Generalized Stack Inspection" は、題名からはあまり窺えませんが、call/cc を含んだ Scheme プログラムを如何にして従来の VM に適した形で実装するかという話です。

具体的な例として、PLT Scheme の Web アプリケーションフレームワークが出てきます。このフレームワークでは PLT Servlet と呼ばれる Scheme ライクな言語でアプリケーションが書けます。ここでは継続ベースのフレームワークで課題になってくる無限の生存期間を持つ継続を管理するために、どういう実装ができるかということを議論しています。(現在の Lunula ではタイムアウトによってリソースを管理していますが、これはスケールしない上、肝心の永続性が失われてしまいます。)

一般的には、継続を組み込みで扱わない VM で Scheme を実装する際の次のような問題が提起されています:

提案されている手法は、PLT Scheme 独自の continuation marks という仕組みを使って、call/cc を含む Scheme プログラムを call/cc を含まない言語のプログラムに変換するというものです。そして continuation marks は VM が提供している例外ハンドラによって実装できるということを主張しています。

上の課題の部分的な解として結論付けられているので、このあとの最近の進展についても気になるところです。


© 2006-2023 fixedpoint.jp