feat: init project

Jengamon
Feb 27, 2024, 10:49 PM
E2DXGKW7BOCR3JW6EFBX4Q6W3NPQZWMLV4DIZBNSXEKHKF24ABOQC

Dependencies

Change contents

  • file addition: src (d--r------)
    [2.1]
  • file addition: lib.rs (----------)
    [0.15]
    pub fn add(left: usize, right: usize) -> usize {
    left + right
    }
    #[cfg(test)]
    mod tests {
    use super::*;
    #[test]
    fn it_works() {
    let result = add(2, 2);
    assert_eq!(result, 4);
    }
    }
  • file addition: README.md (----------)
    [2.1]
    # 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.
  • file addition: Cargo.toml (----------)
    [2.1]
    [package]
    name = "magus"
    version = "0.1.0"
    edition = "2021"
    # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
    [dependencies]
    logos = "0.14.0"
    miette = "7.1.0"
    serde = { version = "1.0.197", features = ["derive"], optional = true }
    thiserror = "1.0.57"
    winnow = "0.6.2"
    [dev-dependencies]
    goldenfile = "1.6.0"
    miette = { version = "7.1.0", features = ["fancy"] }
    [features]
    serde = ["dep:serde"]
  • file addition: .ignore (----------)
    [2.1]
    .git
    .DS_Store
    target