archives

A stackless runtime environment for a Pi-calculus

Frédéric Peschanski and Samuel Hym, A stackless runtime environment for a Pi-calculus, 2nd ACM/Usenix International Conference on Virtual Execution Environments.

From the abstract:

...We present in this paper the CubeVM, an interpreter architecture for an applied variant of the Pi-calculus, focusing on its operational semantics. The main characteristic of the CubeVM comes from its stackless architecture. We show, in a formal way, that the resource management model inside the VM may be greatly simplified without the need for nested stack frames. This is particularly true for the garbage collection of processes and channels. The proposed GC, based on a reference counting scheme, is highly concurrent and, most interestingly, does automatically detect and reclaim cycles of disabled processes...
The slides that accompany the paper can be found here. A little more information on the CubeVM, including an early release of the source code, can be found on the project website.

Code generation vs. dynamic/introspective languages

Question from this seemingly eternal newbie: I don't grok things enough yet, but it seems like something in the world of Scrap your Boilerplate / GADTs / etc. type stuff might be able to obviate evil code generation in more static-than-dynamic languages? Or am I just hopelessly befuddling concepts?