# 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

## Non-goals
- Send/Sync
  - we don't need to support multi-threading, which should make gc *much* easier

## Reference

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