From Newsgroup: comp.text.tex
V|!t Star|+ Novotn|+ submitted an update to the
expltools
package.
Version: 2026-09-24
License: lppl1.3c gpl2+
Summary description: Development tools for expl3 programmers
Announcement text: --------------------------------------------------------------------------------
## expltools 2026-09-24
### explcheck v0.24.0
#### Fixes
This version of explcheck has fixed the following problems:
- Ignore LaTeX3 standard-library commands newer than the value specified by the
Lua option `latex3_definitions_max_added_date`. (#231)
Since explcheck v0.20.0 from 2026-05-03, the option had no effect due to a
typo.
#### New features
This version of explcheck has implemented the following new features:
- Export the version date of the LaTeX3 data files as `expl3_version` in the
`explcheck-latex3.lua` module. (#219, #231)
- Include the dates when function and variable definitions were last updated in
`definitions` from `explcheck-latex3.lua`. (#219, #231)
This has increased the file size from circa 187K to circa 233K (+25%).
- Include lone macro definitions with no corresponding function or variable
definitions in `explcheck-latex3.lua`. (#219, #231)
Previously, `\begin{macro}` definitions in `l3*.dtx` files were disregarded
unless the same control sequence also had corresponding `\begin{function}` or
`\begin{variable}` definitions.
After this change, macros without corresponding `\begin{function}` or
`\begin{variable}` definitions are classified as functions or variables based
on their names. This has increased the number of function definitions in
`explcheck-latex3.lua` from 4,883 to 5,637 (+15%) and the number of variable
definitions from 340 to 371 (+9%).
This has further increased the file size from circa 233K to circa 247K (+6%).
Overall, the size of `explcheck-latex3.lua` has increased from circa 187K to
circa 247K (+32%) in this version of explcheck.
- In the command-line `--verbose` output, display the declared and estimated
version of LaTeX3 required by the package files. (suggested by @dcpurton in
#219, added in #231)
For example, here is the output of running explcheck with the `--verbose`
option on the files `markdown.tex` and `markdown.sty` from version 3.16.0 of
the Markdown package for TeX from TeX Live 2026:
```
Checking 2 files
Checking /usr/local/texlive/2026/texmf-dist/tex/generic/markdown/markdown.tex OK
[...]
Preprocessing results:
- Doesn't seem like a LaTeX style file
- Declares no required LaTeX3 version
[...]
Required LaTeX3 version estimates:
- Latest added LaTeX3 command: \tl_if_regex_match:nNTF (2024-12-08)
- Latest updated LaTeX3 command: \sys_if_engine_luatex:TF (2026-07-20)
- Earliest deprecated LaTeX3 command: \regex_match:Nn (2025-05-14)
[...]
[...]
Checking /usr/local/texlive/2026/texmf-dist/tex/latex/markdown/markdown.sty OK
[...]
Preprocessing results:
- Seems like a LaTeX style file
- Declares no required LaTeX3 version
[...]
Required LaTeX3 version estimates:
- Latest added LaTeX3 command: \msg_info:nnnn (2021-05-18)
- Latest updated LaTeX3 command: \cs_gset_protected:Npn (2023-09-27)
[...]
[...]
Aggregate statistics:
[...]
- Required LaTeX3 version: undeclared, estimated at 2024-12-08 or later
[...]
```
This allows package authors to determine how recent a version of `l3kernel`
their code requires.
Note that some obfuscated LaTeX3 commands may be missed by the analysis and
that only the latest added date, not the latest updated date, is considered
in the final recommendation in the "Aggregate statistics" section. The
reported version should therefore be treated as a lower-bound estimate that
requires human verification.
- Report a warning when a standard-library LaTeX3 command is too recent.
(discussed with @dcpurton in #219, added in #231)
This adds two new warnings W210 and W306, titled "LaTeX3 command too recent",
to sections 2 and 3 of the document titled [_Warnings and errors for the
expl3 analysis tool_][warnings-and-errors] and implements them. These
warnings are raised when a package file uses standard-library LaTeX3 commands
introduced after the date specified by the Lua option
`latex3_definitions_max_added_date`.
A possible workflow is to run `explcheck --verbose` on your package and pin
the reported required LaTeX3 version (e.g., `2024-12-08` in the example
above) using `\NeedsTeXFormat{LaTeX2e}[2024-12-08]` and/or
`\RequirePackage{expl3}[2024-12-08]`. Alternatively or additionally, set the
Lua option `latex3_definitions_max_added_date` to `"2024-12-08"` in your
`.explcheckrc` config file. If you later use newer LaTeX3 commands, these
warnings will prompt you to either raise the required version or replace
those commands.
#### Documentation
This version of explcheck has made the following improvements to the documentation:
- In the document titled
[_Warnings and errors for the expl3 analysis tool_][warnings-and-errors],
grey out labelled work-in-progress issues. (reported by @muzimuzhi in #227,
fixed in #228)
Previously, labelled issues were assumed to be finished, whereas issues with
automatically generated identifiers were assumed to be work-in-progress.
However, some recent issues, like W512 (Defined an unexpandable function as
unprotected), are labelled, since other issues already refer to them, but
they are still marked as a work in progress. After this change, these issues
are no longer considered finished and are properly designated as unfinished
in the documentation.
#### Continuous integration
This version of explcheck has made the following changes to our continuous integration (CI):
- Check if the `latex3` submodule points to the latest stable release.
(reported by @muzimuzhi in #226, fixed in #229)
Previously, the CI would nudge us to update the `latex3` submodule
to the latest development version of LaTeX3, which would cause the file
`explcheck-latex3.lua` to include bleeding-edge information from the
LaTeX3 files `l3obsolete.txt`, `l3prefixes.csv`, and `l3*.dtx`.
However, as mentioned by @muzimuzhi in #226, "in most cases, packages
are written to work with stable [...] releases". This preference was
corroborated by @u-fischer in the same ticket. Therefore, after this change,
the CI will nudge us towards the latest stable rather than development
releases.
- Check if the `latex3` submodule points exactly to a Git tag. (#229)
#### Dependencies
This version of explcheck has made the following changes to third-party Git submodules and other dependencies:
- Update the `latex3` submodule from 2026-09-09-dev to 2026-09-09 and continue
pinning stable rather than development releases. (reported by @muzimuzhi in
#226, fixed in #229) --------------------------------------------------------------------------------
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 .
--- Synchronet 3.22a-Linux NewsLink 1.2