Building LuaMetaTeX for TeX Live
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
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 email@example.com (TL) or firstname.lastname@example.org (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
build.sh 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
mtxrun both pointing to
luametatex, as well as symlinks
context.lua pointing to their respective files in the the
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 email@example.com (TL) or firstname.lastname@example.org (upstream) if you have any questions.