Commit graph

7 commits

Author SHA1 Message Date
3d970a5a23 add usage instructions (#46)
All checks were successful
per-push tests / build (push) Successful in 39s
per-push tests / test-utility (push) Successful in 38s
per-push tests / test-frontend (push) Successful in 38s
per-push tests / test-backend (push) Successful in 39s
per-push tests / timed-decomposer-parse (push) Successful in 38s
Adds user commands to set up the Mycelium environment for usage and development

Reviewed-on: #46
Co-authored-by: Kolby Heacock <codeshiftster@gmail.com>
Co-committed-by: Kolby Heacock <codeshiftster@gmail.com>
2025-12-04 12:52:48 -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
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
e4c6e0924a Decomposer: fixes from found code
This commit includes a new utility, the decomposer, which has
primarily been used to test the AST against found scheme code in
the wild (internet). Decomposer will time and test the lexing and
parsing of any document full of scheme.

This commit includes additional test cases and logical fixes for
issues found during the testing performed.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-05-21 14:48:36 -07:00
6554a0639a Lexer and S-Expression data types
The lexer is complete with tests. It fully encapsulates the logic
of splitting an input document into a stream of tokens. It can be
instantiated from an Rc<str>, meaning no lifetimes need be managed
references to the original document (like a stringview) can be
passed around carelessly. The Lexer implements the iterator
method which should help elegantly design repls / compilers, etc.

The S-Expression data type represents the parsed AST. The actual
parsing logic is yet to be added. It is intended that the AST be
the last step before compiling to bytecode. The data representation
here is cons cells of datum. Formatting is implemented.

Signed-off-by: Ava Affine <ava@sunnypup.io>
2025-05-07 09:19:33 -07:00