All checks were successful
per-push tests / build (pull_request_target) Successful in 39s
per-push tests / build (pull_request) Successful in 40s
per-push tests / test-utility (pull_request) Successful in 37s
per-push tests / test-backend (pull_request) Successful in 36s
per-push tests / test-backend (pull_request_target) Successful in 36s
per-push tests / timed-decomposer-parse (pull_request) Successful in 36s
per-push tests / test-frontend (pull_request) Successful in 37s
per-push tests / test-utility (pull_request_target) Successful in 37s
per-push tests / test-frontend (pull_request_target) Successful in 38s
per-push tests / timed-decomposer-parse (pull_request_target) Successful in 37s
75 lines
2 KiB
Markdown
75 lines
2 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 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
|
|
```
|
|
|
|
2. Verify nightly Rust dev env
|
|
|
|
```
|
|
cargo --version
|
|
rustup toolchain list
|
|
```
|
|
|
|
3. Clone repository
|
|
|
|
```
|
|
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
|
|
|