(with Dan Wang; Appeared at SPACE'04;
In this paper we outline the implementation of a simple
Scheme interpreter and a copying garbage collector that
manages the memory allocated by the interpreter. The entire
system including the garbage collector is implemented
a safe dialect of C, which supports safe and explicit memory
management. We describe the high-level design of the system, report
preliminary benchmarks, and compare our approach to other Scheme
systems. Our preliminary benchmarks demonstrate that one can build a
system with reasonable performance when compared to other approaches
that guarantee safety. More importantly we can signicantly reduce
the amount of unsafe code needed to implement the system. Our
benchmarks also identify some key algorithmic bottlenecks related to
our approach that we hope to address in the future.
Although most of the theoretical ideas in this work are not
by themselves novel, there are a few interesting variations
and combinations of the existing literature we will discuss.
However, the primary motivation and goal is to build a realistic
working system that puts all the existing theory to
test against existing systems which rely on larger amounts
of unsafe code in their implementation.