ruby/doc/mjit/mjit.md

1.2 KiB

MJIT

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

Supported platforms

The following platforms are either tested on CI or assumed to work.

  • OS: Linux, macOS
  • Arch: x86_64, aarch64, arm64, i686, i386

Not supported

The MJIT support for the following platforms is no longer maintained.

  • OS: Windows (mswin, MinGW), Solaris
  • Arch: SPARC, s390x

Developing MJIT

Bindgen

If you see an "MJIT bindgen" GitHub Actions failure, please commit the git diff shown on the failed job.

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

Always run make install

Always run make install before running MJIT. It could easily cause a SEGV if you don't. MJIT looks for the installed header for security reasons.

--mjit-debug vs --mjit-debug=-ggdb3

--mjit-debug=[flags] allows you to specify arbitrary flags while keeping other compiler flags like -O3, which is useful for profiling benchmarks.

--mjit-debug alone, on the other hand, disables -O3 and adds debug flags. If you're debugging MJIT, what you need to use is not --mjit-debug=-ggdb3 but --mjit-debug.