Home

Awesome

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 tacticTime [s]whitespace instructions per second
The fallback bignum interpreter193.51444479017.207.940
The reference interpreter35.26538125594.426.457
Optimized interpretation12.077388375275.720.620
JIT-compilation3.3118399391.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