Bytecode VM, dynamic number package, and R7RS compliant Scheme implementation.
Find a file
Ava Affine a12d15b2cd StackStack and CI Updates
This commit adds a new data type to the codebase. It organizes data
into first in last out linked lists of first in last out linked lists.
Hence the name: StackStack.

This data type was made to represent frames of execution, where there
there is a stack for each function call containing local variables and
arguments. The following tertiary goals were also met:
- no relocating of adjacent data on push or pop
- no copying or cloning of contained data on modification or mutation
- index access to all elements of all contained stacks starting with
  most recent insertions.

There are operations to allocate a new stack on the stackstack and
to deallocate the top stack on the stackstack. Additionally there are
operations for pushing and popping from the top stack.

Unit tests are added and CI is updated to include them.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-05-28 11:54:40 -07:00
decomposer Decomposer: fixes from found code 2025-05-21 14:48:36 -07:00
mycelium StackStack and CI Updates 2025-05-28 11:54:40 -07:00
.gitignore Lexer and S-Expression data types 2025-05-07 09:19:33 -07:00
.gitlab-ci.yml StackStack and CI Updates 2025-05-28 11:54:40 -07:00
Cargo.lock StackStack and CI Updates 2025-05-28 11:54:40 -07:00
Cargo.toml Decomposer: fixes from found code 2025-05-21 14:48:36 -07:00
LICENSE Lexer and S-Expression data types 2025-05-07 09:19:33 -07:00
readme.md Readme and early CI 2025-05-21 15:10:44 -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

Currently 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.

Currently the bytecode VM and its instruction set are next to implement.