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:

  1. Provide a common build environment for Scheme implementations we consider realistic, possibly even for others.
  2. 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.
  3. 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.]

  4. 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:

  1. Replace make altogether in this setup and provide automatic recompilation from within the module system.
  2. Provide backends for other Scheme implementations. Desirable next candidates are MzScheme from Rice, Donovan Kolbly's RScheme, and Marc Feeley's Gambit.
  3. 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