A platform-independent low-level JIT compiler for translating bytecode to machine code across multiple CPU architectures.
SLJIT is a platform-independent low-level JIT compiler that translates bytecode into native machine code. It supports multiple CPU architectures and provides fine-grained control over code generation, making it suitable for building interpreters, emulators, and runtime systems that require dynamic compilation.
Developers building interpreters, emulators, virtual machines, or runtime systems that need efficient, cross-platform just-in-time compilation capabilities.
SLJIT offers a portable, low-level JIT compiler with support for numerous CPU architectures and advanced features like serialization for AOT compilation, giving developers flexibility without sacrificing performance.
Platform independent low-level JIT compiler
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports x86, ARM, RISC-V, s390x, PowerPC, LoongArch, and MIPS in 32/64-bit variants, ensuring portability across diverse hardware, as listed in the README.
Includes advanced features like SIMD, atomic operations, self-modifying code, and tail calls, enabling efficient code generation for complex scenarios such as emulators.
Allows direct access to integer and floating-point registers, giving developers fine-grained control over machine code output for performance tuning.
Compiler state can be serialized into a byte buffer for ahead-of-time or partial AOT compilation, useful for performance-critical applications, as noted in the features.
Primary documentation is in the header file `sljitLir.h`, which is terse and lacks comprehensive tutorials, making onboarding difficult despite the website and docs folder.
Requires deep understanding of CPU architectures and assembly programming due to its low-level nature, posing a barrier for developers without systems programming experience.
Lacks built-in high-level abstractions, optimizations, or integration tools, forcing developers to handle low-level details manually compared to more mature JIT frameworks.