Running LuaJIT

LuaJIT

# Running LuaJIT

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.

Copyright © 2005-2008 Mike Pall · Contact