Mycelium/readme.md
Kolby Heacock a3fa58c195
Some checks failed
per-push tests / build (pull_request) Failing after 31s
per-push tests / build (pull_request_target) Failing after 31s
per-push tests / test-frontend (pull_request) Has been skipped
per-push tests / timed-decomposer-parse (pull_request) Has been skipped
per-push tests / test-utility (pull_request) Has been skipped
per-push tests / test-backend (pull_request) Has been skipped
per-push tests / test-frontend (pull_request_target) Has been skipped
per-push tests / timed-decomposer-parse (pull_request_target) Has been skipped
per-push tests / test-utility (pull_request_target) Has been skipped
per-push tests / test-backend (pull_request_target) Has been skipped
added license info
2025-12-04 13:24:20 -07:00

76 lines
2.1 KiB
Markdown

# 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 still in progress.
## 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