2025-05-21 14:58:42 -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
|
2025-12-04 13:24:20 -07:00
|
|
|
|
2025-08-26 17:11:37 +00:00
|
|
|
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
|
2025-05-21 14:58:42 -07:00
|
|
|
validated abstract syntax tree from approximately 11200 lines of handwritten scheme
|
|
|
|
|
in about 55 milliseconds on average.
|
|
|
|
|
|
2025-08-26 17:11:37 +00:00
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
2025-12-04 13:46:20 -07:00
|
|
|
Documentation is not implemented.
|
2025-12-04 13:24:20 -07:00
|
|
|
|
|
|
|
|
## 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
|
|
|
|
|
|