# 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.