LuaJIT has only a single stand-alone executable, called luajit. It can be used to run simple Lua statements or whole Lua applications from the command line. It has an interactive mode, too.
Note: The optimizer is not activated by default because it resides in an external module (see Installing LuaJIT). It's recommended to always use the optimizer, i.e.: luajit -O
Command Line Options
The luajit stand-alone executable is just a slightly modified version of the regular lua stand-alone executable. It supports the same basic options, too. Please have a look at the Manual Page for the regular lua stand-alone executable.
Two additional options control LuaJIT behaviour:
-j cmd[=value]
This option performs a LuaJIT control command. LuaJIT has a small but extensible set of control commands. It's easy to add your own.
The command is first searched for in the jit.* library. If no matching function is found, a module named jit.<cmd> is loaded. The module table must provide a start() function.
For the -j cmd form the function is called without an argument. Otherwise the value is passed as the first argument (a string).
Here are the built-in LuaJIT control commands:
- -j on — Turns the JIT engine on (default).
- -j off — Turns the JIT engine off.
- -j debug[=level] — Set debug level. See jit.debug().
The following control commands are loaded from add-on modules:
- -j trace[=file] — Trace the progress of the JIT compiler.
- -j dumphints[=file] — Dump bytecode + hints before compilation.
- -j dump[=file] — Dump machine code after compilation.
-O[level]
This option loads and runs the optimizer module jit.opt. The optimizer generates hints for the compiler backend to improve the performance of the compiled code. The optimizer slows down compilation slightly, but the end result should make up for it in almost every case.
The -O form sets the default optimizer level, which is currently 2 (this may change in future versions of LuaJIT).
The -Olevel form explicitly sets the optimizer level:
- -O0 — disable the optimizer but leave it attached.
- -O1 — perform standard optimizations (like hints for table lookups).
- -O2 — like -O1 but also loads jit.opt_inline to enable result hints and inlining for standard library functions.