Scheme Implementations We Know
This page contains references to some Scheme implementations and
some of their outstanding properties. Sometimes we quote from the
documentation, sometimes we added some comments of our own. We
mirror most of them in our software
archive, so the "local copy" links usually point to up-to-date
versions.
Note that this does not include all Scheme implementations, just
those that we regularly use or keep around for other reasons.
(And it probably doesn't even have all of those. Have patience
while we add to this.) They are (sort-of) in alphabetical order.
- Bigloo by Manuel Serrano
(home)
is a Scheme system devoted to one goal: enabling Scheme
based programming style where C(++) is usually required.
Bigloo is based on a highly optimizing batch compiler (even
though a simple interpreter is also included). It features a
simple module system, a simple exception system, an object
system, a type system, built-in lexing and parsing tools, and an
extensive C FFI. It makes use of the Boehm/Weiser conservative
collector for C; the FFI relies on this. Bigloo can generate
very fast code. It does not completely adhere to the Scheme
standard. In particular, it isn't fully tail-recursive.
- Gambit-C by Marc Feeley (home,
local
copy) Gambit-C includes a Scheme interpreter and an
optimizing compiler which can be used to build standalone
executables. The compiler produces portable C output code. It
has a CL-style define-macro macro facility.
- MzScheme by Matthew Flatt and the
Rice PLT group (home, local
copy) is a byte-code implementation of Scheme. It features
pre-emptive threads, an exception facility, a module system, a
C++-like object system. It uses the Boehm/Weiser conservative
garbage collector for C. MzScheme's C FFI depends on it. Also,
MzScheme is the Scheme engine of MrEd which provides an
extensive interface to various windowing system, and of
DrScheme, a comprehensive development environment for Scheme.
- RScheme by Donovan Kolbly (home,
local
copy) is
an object-oriented, extended version of the Scheme
dialect of Lisp. RScheme can be compiled to C, and the C can
then compiled with a normal C compiler to generate machine code.
This can be done from a running system, and the resulting object
code can be dynamically linked into RScheme as a program
executes. By default, however, RScheme compiles to bytecodes
which are interpreted by a (runtime) virtual machine.
RScheme features a precise incremental real-time garbage
collector, hygienic macros, persistence, pre-emptive threads, a
Dylan-like object system, and a simple module system.
- Scheme 48 by Jonathan Rees and
Richard Kelsey (web home, home, local
copy) is a byte-code implementation of Scheme. It features a
complete module system integrated with the interactive
environment, hygienic macros, an exception system, pre-emptive
threads. It has a primitive FFI and uses precise (albeit
two-space-copy) garbage collection. scsh, a variant of Scheme 48,
provides very powerful facilities for shell programming and a
complete systems programming interface for Unix. (home, local
copy) Scheme 48 also has a distributed variant Kali. Other
distinguishing features are a VM implemented in Scheme (rather
than C), and the structural simplicity of the system.
Michael Sperber [Mr. Preprocessor]
Last modified: Wed Feb 25 11:17:24 MET 1998