A Just-In-Time compiler and interpreter for Clac. Written in Rust.
clacjit
is a Just-In-Time compiler and interpreter for clac
language.
clac
is a command line, stack-based calculator with postfix notation.
clacjit
generally follows the same clac
specification used in CMU 15-122. However:
-
Some clac programs will trigger error in 122-clac but not in
clacjit
. -
In jit mode, only stack underflow is checked. You will get segfault, fpe, etc. Technically, you can also access arbitrary address.
-
jit only supports x64 devices.
-
Build:
cargo b -r
-
Run without jit:
clacjit <file1> <file2> <...>
-
Run with jit:
clacjit --jit <file1> <file2> <...>
Run my MNIST implementation in clac:
-
With JIT:
cargo r ./clac/mnist.clac ./clac/mnist-main.clac --jit
Takes: 53.2 ms ± 5.9 ms
-
Without JIT:
cargo r ./clac/mnist.clac ./clac/mnist-main.clac
Takes: 142.4 ms ± 14.0 ms
As a comparison, clac-ref
takes 36.871 s.