-
Stack based bytecode API.
-
Designed to quickly generate bytecode and execute it; suitable for e.g. evaluating
constexpr
functions in a C++ compiler. -
Extensible instruction set via
lauf_builtin
: things likeadd
can be defined with your own semantics (e.g. overflow behavior). -
Support for fibers: cooperative user threads to implement stackful coroutines and generators.
-
Fully sandboxed VM that supports low-level operations like pointer arithmetic.
- How fast is it?
-
On an M1 processor, recursive
fib(35)
takes about 325ms while the luajit interpreter (without JIT) takes about 535ms. Proper benchmarks are TODO. - Does it support just-in-time compilation?
-
Currently, no. I have started implementing it, but it’s a lot of work, and I’ll focus on adding features first.
- Why is it called lauf?
-
"Lauf!" is German for "Run!" and lauf runs bytecode.