Lua is a powerful, fast, lightweight scripting language. It is particularly well-suited to being embedded as part of a compiled program to provide, for example, a user interface and scripting functionality.

User instructions

Lua 5.2.4 is installed on all machines. Other versions of lua, along with libraries and headers, are available via the modules system. To add it to your environment run (e.g.):

$ module load lua/5.3.4

Extensive documentation is available on the lua website. For embedding with Fortran I recommend AOTUS, the authors of which are very receptive to ideas and contributions.


MIT License.

Admin notes

Very easy and very fast: it’s only around 20000 lines of C!

wget -O - | tar xvzf -
cd lua-5.3.4
make linux -j2
make test
make install INSTALL_TOP=/common/debian/9.1/Core/lua/lua-5.3.4

Given the slight incompatibilities between lua versions, I installed the latest versions in the 5.1, 5.2 and 5.3 series.


We currently don’t have any lua modules installed as part of the lua system so the following is just a note work.

lua searches for modules using LUA_PATH (for pure lua modules) and LUA_CPATH (for shared libraries). If these are set, then they completely override the defaults (rather than extend them). This means that if an environment module is loaded which sets LUA_PATH and LUA_CPATH, lua can’t find any of its built-in libraries! My solution was to run lua:

$ lua -e "print(package.path, package.cpath)"

and using the default settings to set LUA_PATH and LUA_CPATH in a custom module file. Hacky but functional.