An implementation of Scheme in Rust

August 30, 2026

I wrote an interpreter for the Scheme programming language in Rust. It supports just enough of Scheme to run the code from Structure and Interpretation of Computer Programs (SICP).

Everything the book's programs need is there: proper tail calls, cons-stream and promises, mutable pairs, set!, quasiquotation, and a read that a driver loop can call. Everything they don't need is left out: no call/cc, no macro system, no bignums. The book builds most of that inside Scheme anyway, which is rather the point of chapters 2, 4 and 5.

I did this mainly as a way of learning Rust. Memory is reclaimed by a mark-and-sweep garbage collector I wrote from scratch, and the crate has no dependencies.

The code is available on GitHub under the MIT license.