This is an experiment to evaluate Rust vs. Zig by writing a bytecode interpreter with GC in both languages and comparing them.
The interpreter implementation is from the Crafting Interpreters book.
I wrote a comprehensive summary of this experiment on my personal blog.
This is in the loxide folder.
To build it:
# in the root project directory
make rust
# inside the rust folder
cargo build --release
To run the tests:
cargo test
# Run with miri to check for undefined behaviour
cargo miri test
This is in the zlox folder.
To build it:
# in the root project directory
make zig
# inside the zlox folder
# run `zig build help` for options
zig build
To run the tests:
zig build test
zig-out/bin/zlox
The benchmarks folder contains the code ("*.lox" files) the two interpreters run and the results of the benchmarks. The results are run using hyperfine.