RJIT: Ruby JIT ↑

This document has some tips that might be useful when you work on RJIT.

Project purpose ↑

This project is for experimental purposes. For production deployment, consider using YJIT instead.

Supported platforms ↑

The following platforms are assumed to work. linux-x86_64 is tested on CI.

configure ↑

–enable-rjit ↑

On supported platforms, --enable-rjit is set by default. You usually don’t need to specify this. You may still manually pass --enable-rjit to try RJIT on unsupported platforms.

–enable-rjit=dev ↑

It enables --rjit-dump-disasm if libcapstone is available.

make ↑

rjit-bindgen ↑

If you see an “RJIT bindgen” GitHub Actions failure, please commit the git diff shown on the failed job.

For doing the same thing locally, run make rjit-bindgen after installing libclang. macOS seems to have libclang by default. On Ubuntu, you can install it with apt install libclang1.

ruby ↑

–rjit-stats ↑

This prints RJIT stats at exit.

–rjit-dump-disasm ↑

This dumps all JIT code. You need to install libcapstone before configure and use --enable-rjit=dev on configure.