Building LuaMetaTeX for TeX Live

From Wiki
Jump to navigation Jump to search

TeX Live 2023 includes the new LuaMetaTeX engine which is required to run the latest version of ConTeXt (LMTX/MkXL).

LuaMetaTeX is a successor to LuaTeX that features improved math typesetting, many new primatives, and faster runtimes. LuaMetaTeX has entirely removed the backend (PDF output), font-handling, and many primitives from TeX82 and pdfTeX; these must all be implemented by the format. Currently, only ConTeXt supports LuaMetaTeX, although nothing in the engine is specific to it. Proofs-of-concept exist for both LaTeX and Plain, but these are only of interest to developers and will not be useful anytime soon (if ever).

LuaMetaTeX is not built as part of TL because it uses a build system (cmake) which is incompatible with TL’s build system (autotools).

A snapshot of the source for the binaries included at the time of TL release is in the TL source/ tree (not duplicated in any TL release tarballs); this sources corresponds to the binaries distributed with TL and will thus always be compatible TL’s texmf-dist tree.

LuaMetaTeX is a quickly evolving engine, so you may benefit from the bugfixes included in the upstream LuaMetaTeX source. These releases will generally have fewer bugs; however, there may be brief incompatibilities with TL’s texmf-dist tree since TL updates ConTeXt less frequently than upstream.

LuaMetaTeX in its standard configuration successfully builds on Windows (x86, x86_64, and arm64; clang, msvc, and mingw), macOS (x86_64 and arm64), Linux (x86, x86_64, armhf, and aarch64; clang and gcc; glibc and musl), FreeBSD (x86 and x86_64), OpenBSD (x86_64), and Solaris (sparc, x86, and x86_64). LuaMetaTeX builds successfully for Cygwin with a patch. Unlisted platforms will likely compile with few modifications; please send any patches to (TL) or (upstream).

Building LuaMetaTeX needs cmake (required) and ninja (optional, but highly recommended). Aside from standard system libraries, LuaMetaTeX has no build- or runtime dependencies. Generally, building LuaMetaTeX only requires you to run the script in the source’s root directory; read the documentation included in the source archives for more details.

To install LuaMetaTeX, you must place the binary luametatex in your TL binary directory. To use with ConTeXt (which is the only practical use at the moment), in the same directory you must create symlinks context and mtxrun both pointing to luametatex, as well as symlinks mtxrun.lua and context.lua pointing to their respective files in the the texmf-dist/scripts/context/lua directory.

LuaMetaTeX does not use kpathsea or any of the standard TL configuration files/scripts. You can configure a few basic paths in texmf- dist/texmfcnf.lua (default configuration in texmf-dist/web2c/texmfcnf.lua); beyond this, most settings are undocumented, so ask on (TL) or (upstream) if you have any questions.