Talks

Introduction to Pre-Scheme, Andrew Whatson (2023)

A 30-minute presentation in the FOSDEM '23 Declarative and Minimalistic Computing room, covering the early history of Pre-Scheme and some of the material in the following papers.

Streams

PreScheme: Low-Level Scheme Programming, David Wilson (2024)

A System Crafters live-stream where David gets hands-on with the original Pre-Scheme compiler, working from the instructions in Taylor Campbell's "Reference Manual".

Manual

The Nearly Complete Scheme48 1.3 Reference Manual, Taylor Campbell (2006)

The title is a play on The Incomplete Scheme 48 Reference Manual, the official manual for Scheme 48. Chapter 9 (sometimes referred to as The Nearly Complete Scheme48 PreScheme 1.3 Reference Manual) is currently the only detailed documentation of the Pre-Scheme language and compiler front-end.

Articles

History of T, Olin Shivers

Olin Shivers describes the history of the "T" project, an ambitious Scheme implementation which was a precursor to Scheme 48 and the Pre-Scheme compiler.

The T Project and Scheme 48, Jonathan Rees

Jonathan Rees provides his perspective on the history of the "T" project, and the history of Scheme 48 and the Pre-Scheme compiler.

Papers

Pre-Scheme: A Scheme Dialect for Systems Programming, Richard Kelsey (1997)

Richard Kelsey's paper describing the Pre-Scheme language and compiler, published a number of years after the compiler was originally developed.

Compilation By Program Transformation, Richard Kelsey (1989)

Richard Kelsey's dissertation on the "Transformational Compiler", where compilation is implemented as a series of transformations on a single internal representation based on the lambda calculus. This is conventionally referred to as a CPS IR (Continuation Passing Style Intermediate Representation), most famously described in Compiling with Continuations by Andrew Appel.

A Tractable Native-Code Scheme System, Martin Gasbichler, Richard Kelsey, Michael Sperber (2007)

This paper describes the re-purposing of the Pre-Scheme compiler as a just-in-time bytecode optimizer and compiler for the Scheme 48 virtual machine. They wrote an alternative front-end and back-end for the Pre-Scheme compiler to read bytecode as a source language and write it as a target language, using the existing compiler optimizations to get a 2x to 8x speedup in VM performance.

Experience Report: Putting an Oxymoron to Work, Using established functional-programming technology to implement TTCN-3, Michael Sperber, Matthias Neubauer (2009)

Another example of re-purposing the Pre-Scheme compiler, this time to implement a compiler for the commercial testing language TTCN-3, which is considerably different from Scheme or Pre-Scheme. This involved implementing a new front-end for the Pre-Scheme compiler, along with a runtime support library allowing the language to be compiled natively for an embedded platform.

Program Mobile Robots in Scheme, Jonathan Rees, Bruce Donald (1992)

This is not a Pre-Scheme paper, but an interesting example of using a minimal Scheme runtime on a robot in combination with an interactive development environment on a separate workstation.

Another Module System for Scheme, Jonathan Rees (1994)

This paper describes the design of the Scheme 48 module system, which is also used by the original Pre-Scheme implementation. The module system is described more thoroughly in Taylor Campbell's "Reference Manual", but this paper goes into more depth about the design challenges of a module system which supports static and dynamic linking alongside hygienic macros.