CTAN update: expltools
Date: March 14, 2026 8:48:04 PM CET
Vít Starý Novotný submitted an update to the
expltools
package.
Version: 2026-03-13
License: lppl1.3c gpl2+
Summary description: Development tools for expl3 programmers
Announcement text:
## expltools 2026-03-13 ### explcheck v0.18.2 #### Fixes This version of explcheck has fixed the following problems: - Support `c`-type arguments in variable and constants declarations, definitions, and uses. (#187) This improved [code coverage][] from ca 21% to 25% of all expl3 tokens on TeX Live 2024. - Do a better job detecting arguments in unrecognized replacement texts when extracting control sequence name patterns from `c`-type arguments in function calls. (#187) - In semantic analysis, consider the base variables in indirect variable definitions to be used, similarly to how base functions in indirect function definitions are considered used. (#187) This has removed a dozen false positive detections of issue W415 (Unused variable or constant) on TeX Live 2024. - Include `\q_no_value` among well-known expl3 control sequence names. (#187) - Have the issue E417 (Setting a variable as a constant) mask the issue E421 (Globally setting a local variable). (#187) This has removed a couple questionable detections of the issue E421 on TeX Live 2024. - Only consider potentially used function (variant) (un)definitions in the flow analysis. (suggested by @lostenderman in #156, fixed in #187) This change improves processing time by about 3% for an average package file in TeX Live 2024, and by up to 91% (or 11×) 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 4× for those files. After this change, the default value of the Lua option `max_reaching_definition_inner_loops` has been reduced from 650,000 to just 350,000 inner-loop iterations. Overall, the changes in the past two releases have reduced the processing time for large files such as `expl3-code.tex` from months to a little over an hour (up to 800×) when flow analysis is enabled despite incomplete code understanding, and have reduced the memory footprint of flow analysis by up to 12× for those files. [code-coverage]: https://witiko.github.io/Expl3-Linter-11/#code-coverage
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
## expltools 2026-03-13 ### explcheck v0.18.2 #### Fixes This version of explcheck has fixed the following problems: - Support `c`-type arguments in variable and constants declarations, definitions, and uses. (#187) This improved [code coverage][] from ca 21% to 25% of all expl3 tokens on TeX Live 2024. - Do a better job detecting arguments in unrecognized replacement texts when extracting control sequence name patterns from `c`-type arguments in function calls. (#187) - In semantic analysis, consider the base variables in indirect variable definitions to be used, similarly to how base functions in indirect function definitions are considered used. (#187) This has removed a dozen false positive detections of issue W415 (Unused variable or constant) on TeX Live 2024. - Include `\q_no_value` among well-known expl3 control sequence names. (#187) - Have the issue E417 (Setting a variable as a constant) mask the issue E421 (Globally setting a local variable). (#187) This has removed a couple questionable detections of the issue E421 on TeX Live 2024. - Only consider potentially used function (variant) (un)definitions in the flow analysis. (suggested by @lostenderman in #156, fixed in #187) This change improves processing time by about 3% for an average package file in TeX Live 2024, and by up to 91% (or 11×) 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 4× for those files. After this change, the default value of the Lua option `max_reaching_definition_inner_loops` has been reduced from 650,000 to just 350,000 inner-loop iterations. Overall, the changes in the past two releases have reduced the processing time for large files such as `expl3-code.tex` from months to a little over an hour (up to 800×) when flow analysis is enabled despite incomplete code understanding, and have reduced the memory footprint of flow analysis by up to 12× for those files. [code-coverage]: https://witiko.github.io/Expl3-Linter-11/#code-coverage
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
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.
| Package | expltools |
| Version | 2026-03-13 |
| Copyright | 2024–2026 Vít Starý Novotný |
| Maintainer | Vít Starý Novotný |