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.
- https://archive.fosdem.org/2023/schedule/event/prescheme/
- https://codeberg.org/prescheme/prescheme-demo
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.
- https://3e8.org/pub/scheme/doc/s48-refman.pdf [mirror]
- https://groups.scheme.org/prescheme/1.3/
- https://mumble.net/~campbell/darcs/s48-refman/
- https://codeberg.org/prescheme/s48-refman
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.
- https://www.deinprogramm.de/sperber/papers/tractable-native-code-scheme-system.pdf [mirror]
- https://www.s48.org/cgi-bin/hgwebdir.cgi/s48-compiler
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.