The PHP interpreter, a general-purpose scripting language especially suited to web development.
mattwparas/steel
An embeddable and extensible Scheme dialect implemented in Rust, with a standalone REPL and bytecode VM.
- Stars
- 2,629
- Forks
- 143
- Open issues
- 87
- Last commit
- 2 days ago
What is it?
Steel is a Scheme interpreter written in Rust that can run as a standalone interpreter and REPL or be embedded inside Rust applications. The language is implemented as a bytecode virtual machine and is mostly compliant with R5RS, with R7RS support in progress.
The language includes module support using require and provide in the style of Racket, along with syntax-rules and syntax-case macros. Higher-order contracts and built-in immutable data structures such as lists, vectors, hashmaps and hashsets are also provided.
Native Rust functions and structs can be exposed to Steel code through embedding or FFI. The project also includes a package manager, a language server and a standard library, and it is still pre-1.0, so the API may change.
Key features
- 01Mostly R5RS-compliant Scheme implemented as a bytecode virtual machine
- 02Module system using require and provide, similar to Racket
- 03syntax-rules and syntax-case macro support
- 04Embedding and FFI for calling native Rust functions and structs
- 05Higher-order contracts and built-in immutable lists, vectors, hashmaps and hashsets
Use cases
- Adding a scripting language to a Rust application
- Learning or experimenting with Scheme and interpreter design
- Writing configuration or extension scripts that call into Rust code
Quick start
- 1
Install Rust (required to build Steel)
- 2
Clone the repository
- 3
Run the REPL with cargo
cargo run
Things to know
- The API is pre-1.0 and may change at any time.
- Only mostly R5RS compliant; let-syntax is missing and R7RS support is still in progress.
In collections
Topics
FAQ
- What is steel?
- An embeddable and extensible Scheme dialect implemented in Rust, with a standalone REPL and bytecode VM. Steel is a Scheme interpreter written in Rust that can run as a standalone interpreter and REPL or be embedded inside Rust applications. The language is implemented as a bytecode virtual machine and is mostly compliant with R5RS, with R7RS support in progress.
- Is steel free to use? What license does it have?
- steel is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is steel still maintained?
- Actively maintained. The last commit to steel was on Oct 22, 2026.
- What can I use steel for?
- Adding a scripting language to a Rust application Learning or experimenting with Scheme and interpreter design Writing configuration or extension scripts that call into Rust code
- How do I install steel?
- Install Rust (required to build Steel) Clone the repository Run the REPL with cargo: cargo run
- Where can I get steel?
- The source code and installation instructions are on GitHub: https://github.com/mattwparas/steel
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
GNU Emacs, an extensible, customizable, self-documenting real-time display text editor built around an Emacs Lisp interpreter.
A jq-like command-line tool and query language for slicing, filtering and transforming Markdown files.
The main source repository for the Rust programming language, containing the compiler, standard library, and documentation.
Sway is a Rust-inspired programming language for writing smart contracts on the Fuel blockchain.
An ECMAScript 5.1 JavaScript engine written in pure Go, for embedding JS execution in Go applications.