Roadmap

Thanks to an NGI Zero grant facilitated by the NLnet Foundation, the Pre-Scheme Restoration project is now underway! A high-level overview of the project is available in the announcement post, and the latest progress is detailed in the first progress report.

Portable Compiler

A major objective of this modern Pre-Scheme implementation is to have the compiler run on a wide variety of Scheme implementations. To achieve this, the codebase will be updated to target R7RS (the most recent Scheme standard).

The main portability challenge is the Pre-Scheme compiler's dependence on the Scheme 48 reader & macro expander, which is tightly integrated with the Scheme 48 virtual machine. Thankfully, a portable expander targeting R7RS is available in the Unsyntax project. This will be adapted as a new front-end for the Pre-Scheme compiler, bringing improvements such as support for syntax-case macros.

During this initial port, the compiler architecture will be documented, and an initial test suite will be written to serve as a baseline for subsequent changes to the language and compiler.

Language Modernization

The original Pre-Scheme dialect offers a minimal set of functionality which was sufficient for bootstrapping the Scheme 48 virtual machine, but is lacking some features expected of modern low-level programming languages.

Tooling Improvements

The original Pre-Scheme compiler includes a minimal Scheme interface for invoking the compiler, and little in the way of user documentation. Better documentation now exists, but more attention is needed to meet the needs of the present-day developer audience.

Future Work

These improvements will enable Pre-Scheme to fulfill its objective of providing a practical alternative to C for Scheme programmers, but there are many interesting possibilities for the language and compiler beyond this point. A few of these possibilities are: