The Scheme Underground - Tübingen Column
To quote the Scheme
Underground, MIT Column:
The Scheme Underground is an effort to develop useful software
packages in Scheme for use by research projects and for
distribution on the net.
We want to take over the world. The internet badly needs a
public domain software environment that allows the rapid construction
of software tools using a modern programming language. Our goal is to
build such a system [...].
Everywhere around the globe, new Underground Columns are rising.
MIT and
Northwestern
are just the beginning. Join us in furthering our plans for
world conquest.
First, here's a position statement on
the goals of our Column.
Our concrete project goals are this:
- Provide a common build environment for Scheme
implementations we consider realistic, possibly even for
others.
- Within the build environment, provide a module system which
maps to the native module system of a given implementation, if
present. It should at least provide the power of the module
system of Scheme 48.
- Provide a set of modules with well-thought-out interfaces to
implement common functionality. We consider Big Scheme, part of
Scheme 48, and some miscellaneous packages within Scheme 48, a
good start.
[Note that many parts of
SLIB (local
copy) are not especially well-thought out, and its packaging
system is not very flexible when it comes to batch
implementations of Scheme or co-existence with module systems.]
- Provide a common foreign-function interface that provides
precise garbage-collection information if needed. Provide tools
that extract the necessary stub information from C header files.
Investigate the relationship between a C FFI, Scheme callbacks,
garbage collection, and first-class continuations.
We have, at the moment, a build environment and module system
based on the Scheme 48 module system. Right now, there is only
one other Scheme implementation besides Scheme 48 that we have a
backend for: Bigloo. We can produce Makefile rules, Bigloo module
definition files, and other metadata for Scheme 48 projects so
that they run on Bigloo. The system is able to run itself.
(I.e., load the Scheme 48 module system into an arbitrary Scheme
implementation and run it there.)
We also have extracted a portable implementation of most of Big
Scheme, and an environment in which most Scheme 48 code is able to
load and run directly.
Our manpower is not sufficient to achieve all of the above, so we
need people to help with this. Concrete, doable sub-projects:
- Replace make altogether in this setup and provide
automatic recompilation from within the module system.
- Provide backends for other Scheme implementations.
Desirable next candidates are MzScheme from Rice, Donovan Kolbly's RScheme, and Marc Feeley's Gambit.
- Provide more library functionality. In particular, we want
full R5RS on all supported systems, a common interface to
execptions, and DSSSL-style argument lists, among others. We
also need to investigate the object systems found in the various
Scheme implementations.
Of course, we appreciate any input and suggestions on the more
general goals of the project. If you want to participate, or want
access to the current code, get in touch with Mike Sperber.
Mike Sperber [Mr. Preprocessor]
Last modified: Tue Feb 24 16:35:20 MET 1998