Bytecode VM, dynamic number package, and R7RS compliant Scheme implementation.
Find a file
Kolby Heacock d973ccd011
All checks were successful
per-push tests / build (pull_request) Successful in 40s
per-push tests / test-utility (pull_request) Successful in 39s
per-push tests / test-frontend (pull_request) Successful in 39s
per-push tests / test-backend (pull_request) Successful in 38s
per-push tests / timed-decomposer-parse (pull_request) Successful in 38s
updated readme.md
2025-12-04 13:46:20 -07:00
.forgejo/workflows Early ISA Unit tests 2025-08-07 21:25:14 +00:00
decomposer normalize edition to 2024 2025-07-24 19:28:25 +00:00
hyphae Number-to-ByteVector-conversion (#44) 2025-12-04 12:09:44 -08:00
mycelium HyphaeVM Garbage Collection 2025-07-25 22:27:51 -07:00
organelle HyphaeVM Garbage Collection 2025-07-25 22:27:51 -07:00
.gitignore Lexer and S-Expression data types 2025-05-07 09:19:33 -07:00
.gitlab-ci.yml HyphaeVM - WIP 2025-07-24 19:26:31 +00:00
Cargo.lock Begin implementing human interface for Hyphae 2025-12-03 22:14:48 +00:00
Cargo.toml updated members in Cagro.toml 2025-12-04 13:34:10 -07:00
LICENSE Lexer and S-Expression data types 2025-05-07 09:19:33 -07:00
readme.md updated readme.md 2025-12-04 13:46:20 -07:00

Mycelium

Mycelium aims to provide an efficient compiled to intermediate bytecode implementation of R7RS Scheme as well as a virtual machine that will execute such bytecode.

Two major use cases are at the forefront of mind when designing and implementing this project: a POSIX shell interpreter as well as a compiled to bytecode language for running on ESP32 devices.

Current Status

The lexer and parser are implemented. On an X86 machine equipped with 64GB RAM and an AMD Ryzen 7900 CPU this lexer and parser are capable of creating a fully validated abstract syntax tree from approximately 11200 lines of handwritten scheme in about 55 milliseconds on average.

HyphaeVM is mostly implemented. The instruction set is defined and implemented, including extensibility interfaces and the VM layout. Additionally, instruction encoding and decoding are implemented. Garbage collection is implemented (via reference counting). Currently being implemented are datum encoding/decoding and full program encoding/decoding. Yet to be approached are debugging routines, CLI utilities, and concurrency features. However, Documentation has been written on programming with HyphaeVM.

The R7RS-Small Scheme to HyphaeVM compiler is not implemented.

R7RS-Large is not implemented.

The Linux/Mac/Windows runtime and extended compiler is not implemented.

Documentation is not implemented.

Installation

  1. Install the Rust programming language. Here are the instructions for Unix-like dev environments for installing the nightly build for Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
source $HOME/.cargo/env
rustup toolchain install nightly
rustup override set nightly
  1. Verify nightly Rust dev env
cargo --version
rustup toolchain list
  1. Clone repositories for dev toolchain and language
git clone https://code.forgejo.org/msrd0/rust-toolchain.git
git clone https://hephaestus.sunnypup.io/affine/Mycelium.git

Testing

  1. Run all project's unit tests
cargo test --all-features

License

GNU General Public License 3

Copyright (C) 2025 Ava Affine