Vít Starý Novotný submitted an update to the
expltools
package.
Version: 2026-03-10 License: lppl1.3c gpl2+
Summary description: Development tools for expl3 programmers
Announcement text: ----------------------------------------------------------------------
## expltools 2026-03-10
### explcheck v0.18.1
#### Fixes
This version of explcheck has fixed the following problems:
- Merge consecutive blocks of function (variant) definitions and function undefinitions into macro-statements that form flow-graph vertices instead of individual statements. (suggested by @lostenderman in #156, fixed in #183)
This change improves processing time by about 10% for an average package file in TeX Live 2024, and by up to 98% (or 53×) for large files such as `expl3-code.tex` when flow analysis is enabled despite incomplete code understanding. It also reduces the memory footprint of flow analysis by up to 3× for those files.
After this change, the default value of the Lua option `max_reaching_definition_inner_loops` has been reduced from 30,000,000 to just 650,000 inner-loop iterations.
- Fix the assignment of segment numbers to replacement texts. (#183)
This would cause function definition statements to point to segments other than the replacement texts, confusing the flow analysis.
This change reduces processing time by about 2% for an average package file in TeX Live 2024, and by up to 11% for large files such as `expl3-code.tex` when flow analysis is enabled despite incomplete code understanding.
- Raise an error on ambiguous uses of `--long-option VALUE`, where `VALUE` is a valid command-line option. (contributed by @muzimuzhi in #185 and c48fa116)
#### Docker image
This version of explcheck has made the following changes to our Docker image `ghcr.io/witiko/expltools/explcheck`:
- Replace Lua 5.3 with LuaJIT in `Dockerfile`. (#184)
This change improves processing time by about 33% for an average package file in TeX Live 2024, and by up to 61% for large files such as `expl3-code.tex` when flow analysis is enabled despite incomplete code understanding.
#### Continuous integration
This version of explcheck has made the following changes to our continuous integration:
- Run regression tests on different Lua interpreters: Lua 5.2, 5.3, 5.4, LuaTeX, and LuaJIT. (#184) - Bump `docker/login-action` from 3 to 4. (contributed by @dependabot in #186.)
Overall, the changes in this release reduce the processing time for large files such as `expl3-code.tex` from months to hours (up to 65×) when flow analysis is enabled despite incomplete code understanding, and reduce the memory footprint of flow analysis by up to 3× for those files.
While this is still insufficient for real-time use (e.g., in a language server; see ticket #68), it makes the tool practical for scenarios such as continuous integration.
For a discussion of other potential performance improvements of the flow analysis, see ticket #156.
----------------------------------------------------------------------
The package’s Catalogue entry can be viewed at https://ctan.org/pkg/expltools
The package’s files themselves can be inspected at https://mirrors.ctan.org/support/expltools/
----------------------------------------------------------------------
Thanks for the upload.
For the CTAN Team Vincent Goulet
----------------------------------------------------------------------
CTAN is run entirely by volunteers and supported by TeX user groups. Please join a user group or donate to one, see https://ctan.org/lugs