I'm playing a lot with VM, interpreters, JIT and recently compilers in Nim.<p>Here is a JIT brainfuck VM: <a href="https://github.com/mratsim/jitterland" rel="nofollow">https://github.com/mratsim/jitterland</a><p>Nim macros are extremely useful for assemblers and emulators as contrary to many codebases which needs to use an intermediate code generation step via text files [1][2][3] you can directly use them with type checking and all Nim facilities while keeping an easy to read syntax: <a href="https://github.com/numforge/laser/blob/e898f027/laser/photon_jit/x86_64/x86_64_ops.nim" rel="nofollow">https://github.com/numforge/laser/blob/e898f027/laser/photon...</a><p>[1]: Xbyak - <a href="https://github.com/herumi/xbyak/blob/v5.751/gen/gen_avx512.cpp" rel="nofollow">https://github.com/herumi/xbyak/blob/v5.751/gen/gen_avx512.c...</a><p>[2]: NNPack + PeachPy - <a href="https://github.com/Maratyszcza/NNPACK/blob/af40ea7d/src/x86_64-fma/relu.py" rel="nofollow">https://github.com/Maratyszcza/NNPACK/blob/af40ea7d/src/x86_...</a><p>[3]: Apache Milagro Crypto - <a href="https://github.com/apache/incubator-milagro-crypto/blob/d43ac938/version3/c/config64.py" rel="nofollow">https://github.com/apache/incubator-milagro-crypto/blob/d43a...</a>