• CTAN update: expltools

    From CTAN Announcements via ctan-ann@erik@ctan.org to ctan-ann on Sun May 31 14:47:40 2026
    From Newsgroup: comp.text.tex

    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 `\rf?typerf-_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
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Fri Jun 26 17:13:49 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the

    expltools

    package.

    Version: 2026-06-25
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

    Announcement text: --------------------------------------------------------------------------------
    ## expltools 2026-06-25

    ### explcheck v0.23.0

    #### Dependencies

    This version of explcheck has made the following changes to third-party Git submodules and other dependencies:

    - Update the `latex3` submodule from 2026-05-15-dev to 2026-05-26-dev. (61b5ce2)
    - Update the `latex3` submodule from 2026-05-26-dev to 2026-06-19-dev. (25d108d)
    - Bump `actions/checkout` from 6 to 7. (contributed by @dependabot in #222) --------------------------------------------------------------------------------

    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
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Wed Sep 16 16:05:40 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the

    expltools

    package.

    Version: 2026-09-15
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

    Announcement text: --------------------------------------------------------------------------------
    ## expltools 2026-09-15

    ### explcheck v0.23.1

    #### Fixes

    This version of explcheck has fixed the following problems:

    - Do not report issue W429 (Defined an unexpandable function as unprotected)
    for indirect function definitions or function variants derived from fully or
    restricted-expandable functions.
    (reported by @u-fischer and @muzimuzhi in #223, fixed in #224)

    #### Documentation

    This version of explcheck has made the following improvements to the documentation:

    - Link [blog post about TUG 2026][Expl3-Linter-12] from `README.md`. (0dd48cb)

    [Expl3-Linter-12]: https://witiko.github.io/Expl3-Linter-12/ "Static analysis of expl3 programs (12): Expltools goes to Canada"

    #### Dependencies

    This version of explcheck has made the following changes to third-party Git submodules and other dependencies:

    - Update the `latex3` submodule from 2026-05-26-dev to 2026-09-09-dev.
    (4731ae7, 8cfa5cc, 7e544b0) --------------------------------------------------------------------------------

    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
  • From CTAN Announcements@petra@ctan.org to ctan-ann on Thu Sep 17 17:30:24 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the

    expltools

    package.

    Version: 2026-09-16
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

    Announcement text: ------------------------------------------------------------------------

    ## expltools 2026-09-16

    ### explcheck v0.23.2

    #### Fixes

    This version of explcheck has fixed the following problems:

    - Prevent TeX primitives like `\def` and `\let` from producing false positive
    detections of issue W507 (Setting a function before definition).
    (reported by @muzimuzhi in #221, fixed in #225)

    ------------------------------------------------------------------------

    The packagerCOs Catalogue entry can be viewed at
    https://ctan.org/pkg/expltools

    The packagerCOs files themselves can be inspected at
    https://mirrors.ctan.org/support/expltools/

    ------------------------------------------------------------------------

    Thanks for the upload.

    For the CTAN Team
    Petra R|+be-Pugliese

    ------------------------------------------------------------------------

    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
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Fri Sep 25 17:55:53 2026
    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