Commits
- new argument (-d/--debug)
- data_oob short arg is now -p
- threaded debug arg into main and vm/vmbuilder in evaluator
- moved script logic from publish-macos-arm into its own script
- each individual platform has a wrapper script that calls
publish-artifact with appropriate architecture and target vars
swap argument order to show path before options in examples
better middle ground. also the unreachable line itself was...
unreachable
- evaluator tests are now organized and properly fleshed out
- new tests for future optimization testing and benchmarks
delay & data_oob were conflicted as both auto-dervived 'd' for their
flags. decided to specify all of them just to be safe
- implemented Arc to solve excessive cloning
- implemented NamedSource for richer errors
- updated tests
- bumped version to 0.8.0
- checked off ROADMAP milestone
miette prints relevant information with NamedSource alone, making this
redundant
used for miette pretty errors
each Token is now constructed/pushed into the vector directly
makes argument intent much clearer
- use slice pattern matching with Ok([]) instead of using r.is_empty()
- removed redundant closures from .map_err
- removed redundant return keyword in parser.rs
no longer considering it for this project
- split DataPointerOutOfBounds into DataPointerOutsideTapeLength and
DataPointerNegative
- split CellOutOfBounds into CellUnderflow and CellOverflow
- split IoError into IoReadError and IoWriteError
- removed a leftover comment
- current token in run loop now gets passed into each vm instruction
function for updated errors to access
- updated tokenizer to produce Token values instead of raw bytes,
storing byte value along with source position
- adjusted parse_brackets and VM::run to destructure the new Token type
for comparison and display
- paves the way for nicer error messages in the future
pairs well with tracing, allows you to watch your brainfuck scripts step
through in real-time
prints the current cell on tape, the value within, the current
instruction the interpreter is on, and where in the instructions the
VM::run function is at*
* although as of right now its just an integer pointing at the tokenized
string, not very useful if you have line breaks and such... still, its
a start!
prints the current cell on tape, the value within, the current
instruction the interpreter is on, and where in the instructions the
VM::run function is at*
* although as of right now its just an integer pointing at the tokenized
string, not very useful if you have line breaks and such... still, its
a start!