Skip to content
/ spacey Public
forked from cedricschwyter/spacey

a tiny whitespace interpreter/virtual machine in rust - executes some 809.7 million whitespace instructions per second* - I am tempted to declare this the fastest VM for whitespace in the world, but I cannot be sure :)

License

Notifications You must be signed in to change notification settings

helvm/spacey

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spacey

a tiny whitespace interpreter/virtual machine in rust

project roadmap

  • whitespace parser
  • whitespace virtual machine
  • usable exposed crate API
  • spacey executable
  • LLVM backend to compile to standalone executable
  • termion/ncurses frontend with debugging capabilities
  • make IO faster, get rid of .clone()'s in Interpreter::next_instruction()

building and running

make sure you have rust and the rust package manager cargo installed on your system. if not, the easiest way to do so is to install rust via rustup.rs.

then, clone the repository and run as follows:

git clone https://github.com/D3PSI/spacey.git
cd spacey
cargo build --release

to run the provided executable run:

cargo run --release -q -- -h

to show the help screen.

execute whitespace-files like:

cargo run --release -q -- -f ws/hello_world.ws

*data extrapolated from single-instruction benchmark (cargo bench), which executes a single PushStack followed by an Exit instruction. benchmark run on a single Intel i7-7700K CPU core clocked at 5.1 GHz. this measurement is statistically significant because it was made with the criterion.rs statistical benchmarking suite. for comparison, the reference interpreter in Haskell manages 94.5 million instructions per second, according to this. according to the same project, a JIT implementation beats spacey by about 200 million instructions per second, i.e., is a respectable (but only, considering JIT) around 25% faster than spacey. with some work I am confident I could match those numbers

About

a tiny whitespace interpreter/virtual machine in rust - executes some 809.7 million whitespace instructions per second* - I am tempted to declare this the fastest VM for whitespace in the world, but I cannot be sure :)

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages

  • Rust 67.8%
  • Witcher Script 32.2%