4 个稳定版本
1.2.0 | 2022 年 11 月 1 日 |
---|---|
1.1.0 | 2022 年 7 月 10 日 |
1.0.1 | 2022 年 6 月 24 日 |
1.0.0 | 2022 年 6 月 23 日 |
在 文本处理 中排名 #933
67KB
1.5K SLoC
spacey
一个用 Rust 编写的小巧且为 WebAssembly 准备好的空白字符解释器/虚拟机
项目路线图
- 空白字符解析器
- 空白字符虚拟机
- 可用的暴露的 crate API
- spacey 可执行文件
-
wasm-bindgen
绑定以支持 WebAssembly - LLVM 后端以编译为独立可执行文件
- termion/ncurses 前端具有调试功能
- 提高 I/O 速度,移除
.clone()
的使用,在Interpreter::next_instruction()
中
构建和运行
请确保您的系统已安装 Rust 和 Rust 包管理器 cargo
。如果没有,最简单的方法是通过 rustup.rs 安装 Rust。
然后,克隆仓库并按以下方式本地构建
git clone https://github.com/D3PSI/spacey.git
cd spacey
cargo build --release
要为 wasm 构建,只需安装 wasm-pack 并执行
wasm-pack build
要运行提供的可执行文件,请运行
cargo run --release -q -- -h
以显示帮助屏幕。
执行空白文件,例如
cargo run --release -q -- -f ws/hello_world.ws
数据来自单个指令基准测试(cargo bench
),该测试执行单个 PushStack
指令后跟一个 Exit
指令。基准测试在一个单核的英特尔 i7-7700K CPU 上进行,主频为 5.1 GHz。这项测量具有统计学意义,因为它使用了 criterion.rs
统计基准测试套件。为了比较,Haskell 中的参考解释器每秒可处理 9450 万条指令,据此所述。根据同一项目,JIT 实现比 spacey 快约 2 亿条指令,即(考虑到 JIT)比 spacey 快约 25%。通过一些努力,我有信心可以达到这些数字。
依赖项
约 2–3MB
约 53K SLoC