Progress, experiments, new features etc. are described in various documents that come with the CONTEXT distribution, like followingup.pdf, articles in user group journals, and presentations at meetings (of which some are also available in the distribution). Here are some of the highlights.
- We aim at an even more tight relation between TEX, METAPOST and LUA.
- There are some extensions to the core engine: typesetting functionality, macro argument parsing, more control over the process, extra math related tweaks, consistent low level access, sub-runs, consistent node lists, and much more.
- The memory footprint is lowered and allocation is more dynamic (on demand). The idea is to make the engine less demanding when run as process in typesetting on demands workflows, which can involve running on a virtual machine or on low power devices.
- The code base is reorganized and bits and pieces are rewritten. We try to stay close to the original so that documentation of the original TEX engine still mostly applies. On the other hand, the code is now such that it is easier to maintain in for instance Visual Studio.
- Even more font support has been delegated to LUA, the memory footprint is again lower, and there are extensions to the way glyphs are scaled, placed, and treated all through the engine, without performance hit.
- Some extensions (coming from other engines) that no longer make sense have been removed; LUA is your friend.
- There is no backend included, all this is delegated to LUA (which already is the case in CONTEXT MKIV anyway). This comes at a noticeable performance hit but it is well compensated by other features and some optimizations in the engine.
- Graphic inclusion is handled by LUA, for which some helpers have been added, This avoids dependencies on external libraries of which only very little is used. (These libraries are constantly updated in the LUATEX codebase and sometimes demand adaptation of the build setup. We want to avoid that.)
- Even more in- and output have been delegated to LUA which simplifies the engine. The error handling has been improved too.
- We no longer compress the so called format file because there is no real gain. The format file is more compact anyway.
- There is a follow up to the METAPOST library which now is not only leaner (no backends, by default less number systems) but also provides ways to enhance the user interface (scanners, access, feedback). We still use CWEB here but the conversion is done with LUA so we don't depend on additional programs.
- The resulting binary is small (less that 3MB), which also makes for a better stand alone LUA engine (it can now act as stub too). We use LUA version 5.4 (the latest greatest) and when possible will follow its development.
- The dependency on operating system features has been minimalized, MSWINDOWS wide UNICODE is supported where that makes sense.
- Performance has become much better, which was also needed because support for LUAJIT is dropped. On the average CONTEXT LMTX runs faster and we keep making that better.
- The support for libraries has changed a bit. The CONTEXT system will never rely on libraries outside the formal set we've decided upon. Keep in mind that all this started in 2005 and in the meantime potential subsystems came and went. This is not how it works in the TEX environment where we often plan long term. You cannot burden the average user with enforced (re)compilation.
- The self contained LMTX distribution is easier to use as high quality and high performance rendering component. Installation and updating is relatively easy and we also want to provide alternative ways of installation.
Binaries for multiple platforms are compiled on the compile farm but eventually users can do that themselves because there are no dependencies (GCC, CLANG and MSVC all work okay). The whole codebase stays below 12MB (around 2MB compressed).
We started LUATEX in 2005, froze it after more than a decade with version 1, had a few succesive updates, and picked up more fundamental development with LUAMETATEX in 2018. Beginning 2021 most has been realized and we entered the stage of stabilization.
There are plans for future experiments but it depends on CONTEXT users demands. First the engine has to be stable.
If you are (interested in) using it or want support you can join the CONTEXT mailing list, have a look at the CONTEXTGARDEN, or just contact us.