SEAM (Simple Extensible Abstract Machine) is a
virtual machine architecture and library. SEAM is designed to be
language- and platform-independent, to be simple
and based on few principled services.
- Uniform data representation and memory management.
All datastructures used to represent computations, including code and
threads, reside in an abstract store, which represents
an abstract graph of data nodes.
Language specific datastructures are modelled on top of the
language-independent store structures. The store manages the allocation
of nodes and their efficient layout in memory.
- Platform-independent external representation.
Store values are converted to a portable representation during
export (pickling), and converted back during
import (unpickling). A language-independent
transfer language is defined
to describe values independent from platform.
Unpickling operates with respect to runtime-pluggable
language-dependent transformation. For example, language specific code
can be instantiated either to byte code or to native code.
- Abstract execution model.
Computations are defined by a generic evaluator interface.
SEAM supports arbitrarily many codes and
evaluators to be used at the same time and interact freely. In particular,
common virtual machine services like foreign
function interfaces are easily expressible.
SEAM is used successfully to implement the new virtual machine underlying
the Alice Programming System.
- 2004/10/04: preliminary "SEAM" home page online
- 2002/03/20: first version of "SEAM" VM is working
The SEAM Project is partially funded by the DFG (SFB
378, Project MI
6 - NEP).
Wed Mar 21 12:05:26 2007