Embedded Scheme for the Rust Ecosystem
README.md

Scheme-rs: Embedded Scheme for the Rust Ecosystem #

github crates.io docs.rs

Scheme-rs is an implementation of the R6RS specification of the Scheme programming language that is designed to be embedded within sync and async Rust.

Scheme-rs is safe, fast, and does not sacrifice modern conveniences.

Features: #

  • Modern: scheme-rs is a modern scheme implementation of the R6RS standard and includes advanced features such as delimited continuations.
  • Fast: scheme-rs uses JIT compilation to provide performance on par with other modern scheme implementations.
  • Easy to use: scheme-rs makes it trivial to define Rust functions and data structures that are accessible from scheme code and vice-versa.
  • Safe: scheme-rs provides a completely safe API that is impossible to misuse.
  • Supports both async and sync Rust: by enabling the async feature flag it becomes possible (and easy) to define async scheme functions in Rust.
  • Language server protocol: scheme-rs includes a language server protocol implementation for editor agnostic tooling, requires enabling the lsp feature. The LSP only reports read/parse diagnostics by default; macro-expanding diagnostics require passing --dangerously-allow-macro-expansion-in-lsp.

Getting started: #

For embedding scheme-rs in your Rust project, take a look at the API documentation.

For installing scheme-rs as a standalone executable, cargo can be used:

$ cargo install scheme-rs 

To enable async features, install with the async and tokio features:

$ cargo install scheme-rs --features "async,tokio"

Documentation #

Contributing #

If you have any questions or comments about the project, feel free to join the scheme-rs discord server.

AI policy #

AI authored contributions to scheme-rs are expressively disallowed. You may use LLM tools for debuging or interacting with the codebase, but all PRs must be hand written by humans.