Ask HN: JIT Compiler Landscape of 2019?
in a little project of mine I wanted to add some JIT. Without going into details, the goal of this project is to create the blocks in a DSP chain at runtime from the signal graph. Right now I'm producing compute shader GLSL code. The next step is to skip the GLSL entirely and directly produce SPIR-V.
In addition to targeting GPUs I also want to be able to fall back to CPU execution. The current kludge is glslc, spirv-cross and the system's C++ compiler glued together.
Long term I'd like to have two backends, one generating SPIR-V to load into Vulkan, and one that through some JIT emits host system ISA code.
I looked at a number of candidate JITs
- GNU libjit: small and just about the right set of features I think I need. Also maintenance status unclear (last commit was about 1 year ago)
- LLVM ORC: huge feature set, but also huge library and comparatively slow. Seems like overkill to me.
- Mozilla NanoJIT: In the same ballpark like libjit, but no longer maintained
Then there's the JIT of LuaJIT and it's companion DynASM. I got the impression that this JIT requires some retargeting for each architecture you want to support in your own code, but I might be wrong (have to re-read the docs). And then there's AsmJI, which is not a compiler, but a JIT assembler for x86_64 archs.
Did I miss something?