/luametatex

Temporary/draft repository with luametatex

Primary LanguageC

LuaMetaTeX

This is a follow up on the LuaTeX project. The source is considered part of the ConTeXt distribution and managed by the ConTeXt development team and the ConTeXt user group. That way we can guarantee that the engine and this TeX macro package work together as expected. The idea is that users can easily compile the source themselves and that way have a guaranteed long term (minimal) TeX based installation. Because the management scripts are in Lua, only one binary is needed to serve the ConTeXt distribution.

In the source code we try to stay close to the ancestors, LuaTeX, pdfTeX, eTeX and TeX, but in the meantime due to additions there is quite some diverge. There are new primitives and submechanisms, there is more control over the inner workings, font handling is mostly delegated to Lua and there is no built-in backend. The code base is all-inclusive and has no (nor will have) dependencies on external libraries.

Performance and memory consumption have been optimized and the additions (compared to LuaTeX) don’t have a negative impact. In spite of the extensions, we consider this a more lightweight version of its ancestor and want to keep it that way. There are a few optional interfaces to the outside world but ConTeXt will never depend on them for regular usage.

Version numbering starts 2.00 so that there is no confusion with LuaTeX where the stable 1.00+ version numbers now can bump with the yearly TeXlive updates. Backporting features to LuaTeX is yet undecided (also because the codebase is now too different). The internal MetaPost library is an enhanced version of the official one that ships with LuaTeX. Here we started with number 3.00 and to what extend there will be backports to the 2.00+ library is yet unknown. We use Lua 5.4+ and try to keep up to date with the latest greatest, also because the LuaMetaTeX-ConTeXt combination makes for nice test enviroment. Starting with LuaMetaTeX version 2.10 the interfaces are considered stable. Although we will fix bugs as fast as possible, we might end up with the same slow-paced release cycle as traditional TeX.

Bugs can be reported to the ConTeXt mailing lists (support or development) or the team members. Such a report should come with a (MEW) ConTeXt .tex file that illustrates the issue. The code repository is managed by the ConTeXt user group and its compile farm team (aka contextgarden built bot).

The first repository has what we use in ConTeXt. The second normally has the same code and is used by the compile farm. The third repository is (can) be used by us for testing new features and playing around with the code. That one is not to be used because it can have issues and we don’t run the test suite every time we submit; code can come and go. Accumulated patches and additions in work become a combined push into main after which we just wipe work and make a new clone which will then be used by the compile farm. Normally that also comes with incrementing the version number. The reason why work is not kept local is because that way we can check if the compilation works, for which it has to be public so that the compile farm can access it conveniently.

All kind of aspects of the LuaMetaTeX engine, its development, experiment, ideas and implementation have been (and are) reported in user group publications aas well as several documents in the ConTeXt distribution. The mailing list archives and contextgarden wiki are also a source of information.

Hans Hagen

LuaMetaTeX