An implementation of Scheme in Rust
August 30, 2026I 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.
