The DSI Project

What's DSI?

DSI is an architecture designed to support list-oriented, symbolic, concurrent programming languages. The architecture is currently implemented as a virtual machine for Unix-like OSes.

What's behind the name?

DSI was originally an acronym for "Data Space Interpreter", because it described a simple, interpreter-based virtual machine that traversed a suspending construction data space (see illustration at right).
A Suspending Construction Data Space
Drawing by Steven D. Johnson, 1980. Reproduced with permission.
A Suspending Construction Data Space

DSI has evolved to the point where there is more to it than this simple characterization implies, but we haven't come up with a better name or acronym for it, so "DSI" it remains, at least for the time being.

What's suspending construction?

Suspending construction is a computation model for list processing languages (e.g. "Lisp family" languages). The model provides a novel way to simplify programming by subsuming many "administrative" programming details that are required for concurrency and I/O.

The key ideas behind suspending construction are:

If a language based on suspending construction is suitably designed, suspensions are also independent of each other (subject only to result dependences), and thus may execute in arbitrary orders, including concurrently.

Suspending construction can also provide a seamless and transparent interface between the heap and the I/O devices. If device drivers and I/O routines are implemented with suspensions, I/O just "happens" with the ease of producing or consuming a list (i.e. all I/O is naturally memory-mapped).

The bottom line: the programmer is not required to handle any of the complicated aspects of thread management or I/O and can concentrate on writing a suitably concurrent algorithm. Programs become cleaner and more concise, even more so than in traditional Lisp-like languages that just automate memory management. Of course, there are arguments about expressiveness or efficiency, as with any language.

What languages are supported?

At present there is only one surface language implemented on the VM: Daisy. However, we are also working on a version of DSI-hosted Scheme.

Although the architecture is tailored for Lisp-like languages, the results of the research are relevant to other symbolic languages, especially functional languages.

Who's behind this project?

Suspending construction was proposed by Dan Friedman and David Wise of Indiana University in 1976, as an outgrowth of research into Lisp-derived lazy functional programming languages. The duo iteratively refined the model in a series of seminal papers in the late 70s and early 80s, incorporating concurrency, nondeterminism and other ideas that were hot language topics at the time.

The suspending construction model was the basis for a VM-based architecture designed and implemented by Steve Johnson in the early 80s. Eric Jeschke joined the project as Johnson's student in 1984 and further refined the architecture and surface language, particularly the multiprocessing capabilities, culminating in a dissertation on the topic in 1995. Jeschke and Johnson have been working sporadically on the project ever since.

What about related work?

We should note that similar and parallel lines of research have ocurred elsewhere in the same time frame; most notably Robert Halstead's work on Multilisp and futures at MIT in the 80s. There are many similarities between the two projects, with the main differences stemming from the semantic and philisophical approaches taken in the surface languages. For more information on this and other related projects, follow the dissertation link in the documentation section below. We don't know of anyone still working on Lisp with futures stuff; if you do, please let us know.

Can I download your system?

Yes, you can get the source here.

The system is known to build "out of the box" on recent versions of Mac OS X and Intel-Linux. Other systems have been used in the past, including Sparc/Solaris, Alpha, MIPS and Next, but some configuration or porting may be necessary.

At some point in the future we may provide binaries.

What about documentation?

There is some (rather sketchy) documentation in the source package.

The best documentation on the DSI architecture at present is probably Jeschke's 1995 dissertation: An Architecture for Parallel Symbolic Processing Based on Suspending Construction. Although the architecture has evolved since 95, the key ideas behind the resource management algorithms are still intact.

Other documentation:

[contact info]
Last modified: Sat Jan 17 00:16:36 HST 2004