CensoredUsername / whitespace-rs

A whitespace JIT compiler
Mozilla Public License 2.0
62 stars 4 forks source link

A whitespace JIT compiler, written in Rust

Features

Why

Benchmarks:

Whitespacers offers several interpretation methods. These benchmarks show the difference between the techniques and fallbacks. These benchmarks were created by executing wsinterws.ws (a whitespace interpreter written in whitespace) on this whitespace program. Correct execution requires the execution of 3.329.985.013 whitespace instructions. Executing this program requires --unchecked-heap.

The time mentioned is purely the execution time. Other operations are very insignificant compared to it as the second largest time consumer is parsing at approximately 0.001 s.

The used machine for benchmarking is a 2.6 GHz i7-4720HQ.

Execution tactic Time [s] whitespace instructions per second
The fallback bignum interpreter 193.514444790 17.207.940
The reference interpreter 35.265381255 94.426.457
Optimized interpretation 12.077388375 275.720.620
JIT-compilation 3.311839939 1.005.478.849

It should however be noted that this benchmark is heap-heavy code. In pure stack code speeds in excess of 3.000.000.000 instructions per second have been reached.

Documentation

Documentation is available here.

Build instructions

Just run cargo run --release to run the interpreter. The library can also be downloaded directly from crates.io.

License

MPL-2.0, see LICENSE