8 releases (1 stable)
Uses old Rust 2015
|1.0.0||Aug 27, 2020|
|0.2.0||Apr 24, 2018|
|0.1.3||May 31, 2017|
|0.1.0||Apr 27, 2017|
|0.0.1||Oct 20, 2016|
#5 in #whitespace
A whitespace JIT compiler, written in Rust
- Provides both a library for embedding and a command-line tool.
- Implements the whole whitespace standard, including arbitrary precision integers.
- Extremely fast. Whitespace code can be compiled to near-native speed levels. Executing over a billion whitespace instructions per second is common.
- Provides options for interpretation for unclear parts of the standard.
- Can convert whitespace code to/from a readable assembly language.
- I needed a project to learn Rust with.
- Every language needs a whitespace interpreter!
- I ended up overdoing it a bit.
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|
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 is available here.
cargo run --release to run the interpreter. The library can also be downloaded directly from crates.io.
MPL-2.0, see LICENSE