Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zackradisic/rust-vs-zig
Comparing unsafe Rust vs Zig by writing a bytecode interpreter with GC in both langs
https://github.com/zackradisic/rust-vs-zig
Last synced: about 1 month ago
JSON representation
Comparing unsafe Rust vs Zig by writing a bytecode interpreter with GC in both langs
- Host: GitHub
- URL: https://github.com/zackradisic/rust-vs-zig
- Owner: zackradisic
- Created: 2022-10-11T18:30:02.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-06-21T15:25:06.000Z (over 1 year ago)
- Last Synced: 2024-10-23T04:55:33.495Z (about 2 months ago)
- Language: Rust
- Homepage:
- Size: 2.14 MB
- Stars: 154
- Watchers: 6
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-zig - zackradisic/rust-vs-zig
- awesome-rust-list - zackradisic/rust-vs-zig - vs-zig?style=social"/> : This is an experiment to evaluate Rust vs. Zig by writing a bytecode interpreter with GC in both languages and comparing them. (Performance Benchmark)
- awesome-rust-list - zackradisic/rust-vs-zig - vs-zig?style=social"/> : This is an experiment to evaluate Rust vs. Zig by writing a bytecode interpreter with GC in both languages and comparing them. (Performance Benchmark)
README
# Rust vs. Zig
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](https://craftinginterpreters.com) book.
I wrote a comprehensive summary of this experiment [on my personal blog](https://zackoverflow.dev/writing/unsafe-rust-vs-zig).
## Rust implementation
This is in the [loxide](loxide/) folder.
To build it:
```bash
# in the root project directory
make rust# inside the rust folder
cargo build --release
```To run the tests:
```bash
cargo test# Run with miri to check for undefined behaviour
cargo miri test
```## Zig implementation
This is in the [zlox](zlox/) folder.
To build it:
```bash
# in the root project directory
make zig# inside the zlox folder
# run `zig build help` for options
zig build
```To run the tests:
```bash
zig build test
zig-out/bin/zlox
```## Benchmarks
The [benchmarks](benchmarks/) folder contains the code ("\*.lox" files) the two interpreters run and the results of the benchmarks. The results are run using hyperfine.