Commit graph

19 commits

Author SHA1 Message Date
333beba0bb WIP: Adding BVTON instruction to convert from ByteVector to Number 2025-12-04 12:07:45 -08:00
d008ce8060 updated NTOBV and test 2025-12-04 12:07:45 -08:00
54a0e32fe1 Wrote number to bytevector conversion and test 2025-12-04 12:07:45 -08:00
18770575cb Add instruction definition for number to bytevector conversion 2025-12-04 12:07:45 -08:00
5582da5b41 Begin implementing human interface for Hyphae
Some checks failed
per-push tests / build (push) Failing after 39s
per-push tests / test-frontend (push) Has been skipped
per-push tests / timed-decomposer-parse (push) Has been skipped
per-push tests / test-utility (push) Has been skipped
per-push tests / test-backend (push) Has been skipped
This commit implements Display and FromStr for Datum, Operation,
Operand, Instruction, and Program types. Additionally, tests are
added for the new routines. This change was implemented in furtherance
of a command line assembler and disassembler, as well as for the
implementation of a debugger.
2025-12-03 22:14:48 +00:00
389bf6e9a0 serialization/deserialization of datum in VM
All checks were successful
per-push tests / build (push) Successful in 1m34s
per-push tests / test-frontend (push) Successful in 41s
per-push tests / test-utility (push) Successful in 45s
per-push tests / test-backend (push) Successful in 44s
per-push tests / timed-decomposer-parse (push) Successful in 50s
This commit adds logic to serialize and deserialize datum, as well
as the start of some total binary format. It implements serialize
and deserialize routines per datum type. Tests are included for
comples cases. Similar code existed in the organelle package which was
then centralized here.

Additionally: this commit makes release target binaries smaller and
faster

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-11-25 21:53:21 +00:00
0f85292e6f Generate a user manual.
All checks were successful
per-push tests / build (push) Successful in 1m11s
per-push tests / test-frontend (push) Successful in 1m3s
per-push tests / test-utility (push) Successful in 1m3s
per-push tests / test-backend (push) Successful in 58s
per-push tests / timed-decomposer-parse (push) Successful in 1m3s
This commit extends the documentation held in instructions.toml into a
full description of the hyphaeVM design and capabilities. Additionally,
instructions.toml is renamed to vm.toml. Finally, the build script
outputs a text file (hyphae_manual.txt) that provides a comprehensive
manual on the use and effects of HyphaeVM.

fixes: #37

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-08-19 20:32:40 +00:00
f48867db42 VM Bytecode char to string instructions
All checks were successful
per-push tests / build (push) Successful in 3m17s
per-push tests / test-frontend (push) Successful in 1m11s
per-push tests / test-utility (push) Successful in 2m10s
per-push tests / test-backend (push) Successful in 1m52s
per-push tests / timed-decomposer-parse (push) Successful in 1m39s
New instrucions: CTOS and MKSTR. CTOS creates a string containing
a single (input) character. MKSTR creates a new blank string. Unit
tests included.

fixes: #42

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-08-09 05:23:45 +00:00
e310b901c3 Add Bool and Char addressing modes
All checks were successful
per-push tests / build (push) Successful in 1m45s
per-push tests / test-frontend (push) Successful in 2m5s
per-push tests / test-utility (push) Successful in 2m12s
per-push tests / timed-decomposer-parse (push) Successful in 1m8s
per-push tests / test-backend (push) Successful in 1m17s
This commit adds addressing modes for boolean and character data.
The Address enum is extended, along with its TryFrom<u8> implementation
and its operand_size function. The access macro is extended to handle
the new modes. The CONST instruction can now create Char and Bool data.
The instructions.toml has information on the new addressing modes. Unit
tests have been added to test new CONST logic.

fixes: #41

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-08-09 04:48:00 +00:00
4fb7e78c2a add documentation for current addressing modes to instructions.toml
Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-08-09 04:45:21 +00:00
3bc256dab2 Early ISA Unit tests
Some checks failed
per-push tests / test-frontend (push) Blocked by required conditions
per-push tests / timed-decomposer-parse (push) Blocked by required conditions
per-push tests / test-utility (push) Blocked by required conditions
per-push tests / test-backend (push) Blocked by required conditions
per-push tests / build (push) Has been cancelled
This commit provides some but not all unit tests for VM instructions.
All tests pass, and this commit includes modifications to logic to allow
for that.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-08-07 21:25:14 +00:00
609e65a8db Test harness for HyphaeVM
All checks were successful
per-push tests / build (push) Successful in 49s
per-push tests / test-frontend (push) Successful in 53s
per-push tests / test-utility (push) Successful in 1m2s
per-push tests / test-backend (push) Successful in 54s
per-push tests / timed-decomposer-parse (push) Successful in 56s
This commit adds a testing framework for HyphaeVM which enables
testing various aspects of the VM state after running input programs
against a VM with possibly preinitialized state.

This includes a builder pattern initializer for the VM, and bespoke
logic for a test case tester.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-29 23:37:22 +00:00
ddb49788af String Instructions
All checks were successful
per-push tests / build (push) Successful in 47s
per-push tests / test-utility (push) Successful in 53s
per-push tests / test-frontend (push) Successful in 59s
per-push tests / test-backend (push) Successful in 43s
per-push tests / timed-decomposer-parse (push) Successful in 51s
The following instructions are modified to act on strings:
- INDEX: Now pulls a char out at index
- SUBSL: Now pulls a substring out of a source string
- INSER: Now inserts a char into a string at index
- LENGTH: Now returns length of a string

In addition to the above instructions, additional instructions
are now implemented to handle strings:
- CONCAT: appends a string onto another string
- S_APPEND: appends a char on to the end of a string

Fixes: #38

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-29 18:19:16 +00:00
63554191f8 fix: #39 Adds a garbage collected deep copy test
All checks were successful
per-push tests / build (push) Successful in 53s
per-push tests / test-utility (push) Successful in 40s
per-push tests / test-frontend (push) Successful in 40s
per-push tests / test-backend (push) Successful in 40s
per-push tests / timed-decomposer-parse (push) Successful in 39s
Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-28 23:39:32 +00:00
2392d5c2fa Finish garbage collected heap
This commit adds unit tests for garbage collection as well as a
deep copy implementation for cons which fully deep copies the whole
tree and a clone implementation for Datum which deep copies cons.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-28 23:02:06 +00:00
524f79733c HyphaeVM Cons instruction prototype
All checks were successful
per-push tests / build (push) Successful in 49s
per-push tests / test-frontend (push) Successful in 33s
per-push tests / test-utility (push) Successful in 35s
per-push tests / test-backend (push) Successful in 29s
per-push tests / timed-decomposer-parse (push) Successful in 34s
This commit implements the Cons instruction with desired behavior.
Tests are yet to be implemented for any instruction, but are coming
soon.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-27 07:18:14 +00:00
cf626b2bfc HyphaeVM Garbage Collection
All checks were successful
per-push tests / build (push) Successful in 36s
per-push tests / test-utility (push) Successful in 36s
per-push tests / test-frontend (push) Successful in 37s
per-push tests / test-backend (push) Successful in 31s
per-push tests / timed-decomposer-parse (push) Successful in 34s
This commit removes the dependency upon Mycelium::sexpr::Datum from Hyphae
and instead adds a heap.rs module including three types:

- Gc: This is essentially a Box<Rc<T>> but passed around as a *const Rc<T>.
    not only does this allow the wrapped T to be passed around in a format
    that fits completely within a single physical register, this also
    applies a greedy reference counting garbage collection to each and
    every object allocated in the VM.

- Datum: This is a simplified enum for type polymorphism. Similar to the
    original Mycelium::sexpr::Datum.

- Cons: This is a very standard Cons cell type.

Additionally, two new instructions are added:
- DUPL: a deep copy instruction
- CONST: an instruction to create number datum from embedded constants
- NTOI: casts a number to its inexact form
- NTOE: casts a number to its exact form

Fixes: #35 and #36

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-25 22:27:51 -07:00
8d2d0ebf0c Clean up project structure
All checks were successful
per-push tests / build (push) Successful in 32s
per-push tests / test-utility (push) Successful in 32s
per-push tests / test-frontend (push) Successful in 34s
per-push tests / test-backend (push) Successful in 30s
per-push tests / timed-decomposer-parse (push) Successful in 26s
The number package is moved into its own package henceforth referred
to as "organelle". Hyphae and Mycelium are updated accordingly. In
addition, Hyphae gets a copy of the sexpr module of Mycelium. This
will not remain a copy, rather it will be the basis of a heap manager
module within Mycelium to be worked on in the future.

Fixes #32

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-24 19:44:43 +00:00
4ad319213d HyphaeVM - WIP
This commit is a WORK IN PROGRESS for the base implementation of the
HyphaeVM. This will be squashed into a larger commit eventually when
the work of implementing the HyphaeVM is finished.

Of note, the ISA is mostly finished and much of the VM design is in
place. Yet to be done are a few traps in mycelium, migrating pieces
like the number package and the sexpr package into the VM package,
and of course much testing.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-07-24 19:26:31 +00:00