ejit
ejit
is a generic JIT/bytecode interpreter with a
strong focus on compilation speed and portability. It's built on top of the
excellent lightening
pure JIT library,
but adds a bytecode layer for systems that lightening
doesn't support. The
bytecode layer also grants some QoL improvements, such as an (effectively)
unlimited number of virtual registers and a register allocator for mapping
theses virtual registers down to physical registers and a slightly easier to use
API (at least IMO).
Documentation is still a bit lacking and the library is under active
development, but can already be used for some simpler usecases. See the
posthaste
language I implemented for
a university course for example.
I also have a blog post about this library: https://metanimi.dy.fi/blog/ejit/