Vít Starý Novotný submitted an update to the
expltools
package.
Version number: 2026-05-29 License type: lppl1.3c gpl2+
Summary description: Development tools for expl3 programmers
Announcement text: ----------------------------------------------------------------------
## expltools 2026-05-29
### explcheck v0.22.0
#### New features
This version of explcheck has implemented the following new features:
- Add more support for flow analysis. (#218)
This adds support for the following issues from the document titled [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]:
1. W517 (Unused variable or constant)
- In the semantic analysis, add a call type for standalone variable or constant control sequences. (#213, #215)
Previously, standalone variable or constant control sequences were considered other unrecognized tokens. This has improved [code coverage][] by 33,294 expl3 tokens (~0.4% of all expl3 tokens) on TeX Live 2025.
- Perform semantic analysis on boolean expression segments. (#213, #215)
- Detect boolean expression segments in calls to control sequences like `\bool_if:nTF`. (#215, #217)
- Emit both `VARIABLE_DECLARATION` and `VARIABLE_DEFINITION` statements for constant definitions like `\tl_const:Nn`. (#218)
Previously, only a `VARIABLE_DEFINITION` statement would have been produced, requiring special-casing for issues like W415 (Unused variable or constant), W416 (Setting an undeclared variable), and W419 (Using an undeclared variable or constant).
- In flow analysis, draw `VARIABLE_USE` and `VARIABLE_USE_RETURN` edges. (#218)
- Include the number of reaching definition loops in verbose command-line output. (#218)
#### Fixes
This version of explcheck has fixed the following problems:
- Do not report issue W415 (Unused variable or constant) for defined box variables. (reported by @dcpurton in #214, fixed in #216)
Defining box variables can have useful side effects even if the variable isn't used elsewhere.
- In the semantic analysis, consider `\⟨type⟩_log:*` a variable use. (#217)
- Reduce false positive detections of issues E408 (Calling an undefined function), E411 (Indirect function definition from an undefined function), and W416 (Setting an undeclared variable). (#218)
This was achieved by using pattern-based matching for only partially understood variable declarations and function definitions.
#### Warnings and errors
This version of explcheck has made the following changes to the document titled [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]:
- Remove planned issue W511 (Defined an expandable function as protected), since it doesn't actually constitute an issue: there are good reasons to protect a function from expansion, even if it is otherwise expandable. (#213)
#### Housekeeping
This version of explcheck has completed the following housekeeping tasks:
- Reduce repetition in the function `analyze_group_wide_statements()` from `explcheck-semantic-analysis.lua` by introducing two new mechanisms: maybe-trackers and statement category lists and indices. (#217)
#### Continuous integration
This version of explcheck has made the following changes to our continuous integration (CI):
- In the CI, force flow analysis for TeX Live 2025 rather than the latest TeX Live, so that we can compare the diff against our 2025 baselines. (ea03ec0) - In the CI, check that the `lua-toml` submodule is up-to-date even if checking the `latex3` submodule failed. (340f6bc)
#### Dependencies
This version of explcheck has made the following changes to third-party Git submodules and other dependencies:
- Update the `latex3` submodule from 2026-04-28-dev to 2026-05-15-dev. (85b126a)
[code coverage]: https://witiko.github.io/Expl3-Linter-11/#code-coverage [warnings-and-errors]: https://github.com/witiko/expltools/releases/download/latest/warnings-and-er...
----------------------------------------------------------------------
This package is located at https://mirrors.ctan.org/support/expltools
More information is at https://www.ctan.org/pkg/expltools
------------------------------------------------------------------------
Thanks for the upload.
For the CTAN Team Erik Braun
------------------------------------------------------------------------
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