CTAN update: expltools
Datum: 31. Mai 2026 12:47:40 MESZ
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-errors.pdf
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
## 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-errors.pdf
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
expltools – Development tools for expl3 programmers
This bundle introduces explcheck, a static analysis tool for developers working with expl3 code. Currently in its initial release, explcheck aims to help developers identify potential issues and improve code quality. In the future, this bundle may expand to include additional development tools for expl3.
| Paket | expltools |
| Version | 2026-05-29 |
| Copyright | 2024–2026 Vít Starý Novotný |
| Betreuer | Vít Starý Novotný |