README.md

Magus

Goal: smallest (nearly) compatible R7RS-small implementation of Scheme. (We might go a bit light on the numeric tower, and will only support integers and floats at first)

The endgoal is to have a nice implementation that compiles cleanly in Rust, and is easily embeddable in and from Rust to use as something like an event scripting system (and maybe logic too).

Requirements

  • Pure Rust! (we want to compile cleanly to WASM with minimal/no effort)
  • Embedding values into the engine and embedding the engine are part-and-parcel of why the project even started!
  • Correctness
  • Simplicity
    • our goal is that whatever we've implemented is correct first and foremost, before it is simple. (and simple before it is fast.)

Nice-to-haves

  • Speed/Performance
    • not the main goal, but extremely good to have
  • Send/Sync
    • having the runtime be multi-thread compatible is nice to have, but we'll live if we don't have it.
    • this should be locked behind the feature flag "send".

Reference

Using the R7RS-small pdf off of https://small.r7rs.org/attachment/r7rs.pdf.