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

GPL-3.0-or-later

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