Vít Starý Novotný submitted an update to the
expltools
package.
Version: 2026-05-12 License: lppl1.3c gpl2+
Summary description: Development tools for expl3 programmers
Announcement text: --------------------------------------------------------------------------------
## expltools 2026-05-12
### explcheck v0.21.0
#### New features
This version of explcheck has implemented the following new features:
- Add command-line option `--inline-config`. (suggested by @muzimuzhi in #203, added in #211)
This option accepts a TOML string that is treated as a config file, overriding any options specified in config files. The option may be specified repeatedly; when the same Lua option appears in multiple TOML strings, later occurrences take precedence.
With this option, you can set ad-hoc Lua options without creating a config file. For example, to disable the Lua option `stop_early_when_confused`, you can write `--inline-config defaults.stop_early_when_confused=false`.
- Support specifying Lua options at the top level of the config file. (suggested by @muzimuzhi in #203, added in #211)
This allows you to omit the `[defaults]` section from your config file. For example, the following is now a complete valid config file:
``` toml max_line_length = 120 ignored_issues = ["w100", "S"] ```
This also simplifies the use of the `--inline-config` command-line option: you can now write `--inline-config stop_early_when_confused=false` without the previously required `defaults.` prefix.
- Change the semantics of the Lua options `max_reaching_definition_inner_loops` and `max_reaching_definition_outer_loops` to perform a partial reaching definition analysis when the limits are exceeded. (#212, 975f91d)
Previously, exceeding either limit would cause explcheck to abort the analysis. Now, processing only aborts when the number of reaching definition loops exceeds the theoretical upper bounds, which indicates a bug. By contrast, when the limits specified by these options are exceeded, explcheck now continues with a partial analysis. This may lead to false positive issues reported by the flow analysis, but can also greatly improve performance.
#### Fixes
This version of explcheck has fixed the following problems:
- Do not report issue W429 (Defined an unexpandable function as unprotected) for restricted-expandable functions. (e507747)
- Fix potentially untrue assertion predicates in the flow analysis. (reported by @muzimuzhi in #208, fixed in #209)
- Do not expect the `statements` key in all segments. (#212)
Some segment types such as `BOOLEAN_EXPRESSION` only contain `calls`, not `statements`.
#### Deprecations
This version of explcheck has deprecated the following features and scheduled them for removal in v1.0.0:
- Rename the Lua option `config_file` to `config_files` and deprecate `config_file`. (#211)
- Deprecate the command-line option `--expl3-detection-strategy`. (#211)
If you rely on this option, you may set it using `--inline-config`. For example, you would replace `--expl3-detection-strategy always` with `--inline-config 'expl3_detection_strategy = "always"'.
#### Continuous integration
This version of explcheck has made the following changes to our continuous integration (CI):
- Run the flow analysis on the whole TeX Live in the CI. (#208, #210, #212, 975f91d, 59be8c3) - Cancel previous CI run from the same branch or pull request. (cae310d) - Do not run the CI when tags are pushed. (d88b2f1, 8c7a960)
--------------------------------------------------------------------------------
This package is located at https://mirrors.ctan.org/support/expltools
More information is at https://ctan.org/pkg/expltools
--------------------------------------------------------------------------------
Thanks for the upload.
For the CTAN Team Manfred Lotz
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 .