• CTAN update: expltools

    From CTAN Announcements@vincent@ctan.org to CTAN Announcements on Wed Mar 11 10:23:54 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the
    expltools
    package.
    Version: 2026-03-10
    License: lppl1.3c gpl2+
    Summary description: Development tools for expl3 programmers
    Announcement text: ----------------------------------------------------------------------
    ## expltools 2026-03-10
    ### explcheck v0.18.1
    #### Fixes
    This version of explcheck has fixed the following problems:
    - Merge consecutive blocks of function (variant) definitions and function
    undefinitions into macro-statements that form flow-graph vertices instead
    of individual statements. (suggested by @lostenderman in #156, fixed in #183)
    This change improves processing time by about 10% for an average package file
    in TeX Live 2024, and by up to 98% (or 53|u) 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 3|u for those files.
    After this change, the default value of the Lua option
    `max_reaching_definition_inner_loops` has been reduced from 30,000,000
    to just 650,000 inner-loop iterations.
    - Fix the assignment of segment numbers to replacement texts. (#183)
    This would cause function definition statements to point to segments other
    than the replacement texts, confusing the flow analysis.
    This change reduces processing time by about 2% for an average package file
    in TeX Live 2024, and by up to 11% for large files such as `expl3-code.tex`
    when flow analysis is enabled despite incomplete code understanding.
    - Raise an error on ambiguous uses of `--long-option VALUE`, where `VALUE` is
    a valid command-line option. (contributed by @muzimuzhi in #185 and c48fa116) #### Docker image
    This version of explcheck has made the following changes to our Docker image `ghcr.io/witiko/expltools/explcheck`:
    - Replace Lua 5.3 with LuaJIT in `Dockerfile`. (#184)
    This change improves processing time by about 33% for an average package
    file in TeX Live 2024, and by up to 61% for large files such as
    `expl3-code.tex` when flow analysis is enabled despite incomplete code
    understanding.
    #### Continuous integration
    This version of explcheck has made the following changes to our continuous integration:
    - Run regression tests on different Lua interpreters: Lua 5.2, 5.3, 5.4,
    LuaTeX, and LuaJIT. (#184)
    - Bump `docker/login-action` from 3 to 4. (contributed by @dependabot in #186.) Overall, the changes in this release reduce the processing time for large
    files such as `expl3-code.tex` from months to hours (up to 65|u) when flow analysis is enabled despite incomplete code understanding, and reduce the memory footprint of flow analysis by up to 3|u for those files.
    While this is still insufficient for real-time use (e.g., in a language server; see ticket #68), it makes the tool practical for scenarios such as continuous integration.
    For a discussion of other potential performance improvements of the flow analysis, see ticket #156. ----------------------------------------------------------------------
    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
    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
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From CTAN Announcements@vincent@ctan.org to CTAN Announcements on Sat Mar 14 16:48:04 2026
    From Newsgroup: comp.text.tex

    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|u) 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|u 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|u) when flow analysis is enabled despite incomplete code understanding, and have reduced the memory footprint of flow analysis by up to 12|u for those files.
    [code-coverage]: https://witiko.github.io/Expl3-Linter-11/#code-coverage ----------------------------------------------------------------------
    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
    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
    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From CTAN Announcements@vincent@ctan.org to CTAN Announcements on Tue Mar 31 21:51:32 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the
    expltools
    package.
    Version: 2026-03-30
    License: lppl1.3c gpl2+
    Summary description: Development tools for expl3 programmers
    Announcement text: ----------------------------------------------------------------------
    ## expltools 2026-03-30
    ### explcheck v0.19.0
    #### New features
    This version of explcheck has implemented the following new features:
    - Add more support for flow analysis. (#188)
    This adds support for the following issues from Section 5.1 of the document titled [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]:
    1. E500 (Multiply defined function)
    2. W501 (Multiply defined function variant)
    3. E504 (Function variant for an undefined function)
    4. E506 (Indirect function definition from an undefined function)
    5. W507 (Setting a function before definition)
    [warnings-and-errors]: https://github.com/witiko/expltools/releases/download/latest/warnings-and-errors.pdf
    #### Continuous integration
    This version of explcheck has made the following changes to our continuous integration:
    - Update regression baselines from TeX Live 2024 to 2025. (f57c0080..e0ce50c4) - Test TeX Live 2026. (c578802e)
    - Disable caching in the `zauguin/install-texlive` action.
    (added by @zauguin in zauguin/install-texlive#128 and 611fde4) ----------------------------------------------------------------------
    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
    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
    --- Synchronet 3.21f-Linux NewsLink 1.2
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Thu Apr 9 10:35:58 2026
    From Newsgroup: comp.text.tex

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

    expltools

    package.

    Version: 2026-04-07
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

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

    ## expltools 2026-04-07

    ### explcheck v0.19.1

    #### Fixes

    This version of explcheck has fixed the following problems:

    - Fix malformed context for issue E505 (Calling an undefined function).
    (reported by @muzimuzhi in #191, fixed in #193)

    - Do not capture a newline after expl3-like material. (#193)

    This excludes the newline from the context messages and byte ranges for
    issues like E102 (Expl3 material in non-expl3 parts).

    - Only put argument specifiers in the context of issue E201 (Unknown argument
    specifiers), not the whole control sequence name. (#193)

    This makes the context of issue E201 consistent with issue E427 (Comparison
    conditional without signature `:nnTF`).

    - Fix the context of issue W200 ("Do not use" argument specifiers) missing
    characters when the name of the control sequence ends with double-superscript
    characters, like `\tex_let:^^44`. (#193)

    - Report resolved control sequence names (like `\tex_let:D`) instead of the raw
    input text (like `\tex_let:^^44`) for issues W200 and W202 (Deprecated
    control sequences). (#193)

    - Fix an incorrect assertion in code that reports issues E500 (Multiply defined
    function) and W501 (Multiply defined function variant). (reported by
    @muzimuzhi in #192, fixed in #194)

    - Do not consider a definition being reached by itself a redefinition.
    (reported by @muzimuzhi in #192, fixed in #194)

    This prevents false positive detections of the issues E500 and W501.

    - Do not report issue E505 (Calling an undefined function) when calling empty
    functions. (reported by @muzimuzhi in #192, fixed in #194)

    - Weaken the confidence of incoming reaching definitions when the in-degree is
    greater than one. (reported by @muzimuzhi in #192, fixed in #194)

    - Do not report issues for uninteresting macro-statements that are skipped
    during flow analysis and therefore have incomplete or unreliable information
    recorded. (#194)

    - Only require definite reaching definitions for issues E500 and W501, not
    issues E504 (Function variant for an undefined function), E506 (Indirect
    function definition from an undefined function), and W507 (Setting a function
    before definition). (#194)

    #### Continuous integration

    This version of explcheck has made the following changes to our continuous integration:

    - Check issue context in tests. (reported by @muzimuzhi in #191, added in #193)

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

    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.21f-Linux NewsLink 1.2
  • From CTAN Announcements@vincent@ctan.org to CTAN Announcements on Tue Apr 14 12:29:07 2026
    From Newsgroup: comp.text.tex

    V|!t Star|+ Novotn|+ submitted an update to the
    expltools
    package.
    Version: 2026-04-13
    License: lppl1.3c gpl2+
    Summary description: Development tools for expl3 programmers
    Announcement text: ----------------------------------------------------------------------
    ## expltools 2026-04-13
    ### explcheck v0.19.2
    #### Fixes
    This version of explcheck has fixed the following problems:
    - Recognize `\prop_new_linked:N` as a variable declaration statement
    and `\prop_const_from_keyval:Nn`, `\prop_const_linked_from_keyval:Nn`,
    `\prop_set_from_keyval:Nn`, and `\prop_gset_from_keyval:Nn` as
    constant and variable definition statements. (reported by @muzimuzhi in #196,
    fixed in #198)
    More generally, this change also adds support for constant definitions in the
    form `\rf?typerf-_const_from_rf?base_typerf-:*`. This improves [code coverage][] by
    37,759 expl3 tokens (~0.004% of all expl3 tokens) on TeX Live 2026.
    - Correctly differentiate between direct and indirect variable and constant
    definitions in the form `\rf?typerf-_(set|gset|const)_from_rf?base_typerf-:*`. (#198)
    - Only report issues E504 (Function variant for an undefined function),
    E506 (Indirect function definition from an undefined function), and
    W507 (Setting a function before definition) for top-level reachable segments.
    (reported by @muzimuzhi in #195, fixed in #198)
    - Do not report issue E505 (Calling an undefined function) for indirect
    definitions that resolve to well-known control sequence names.
    (reported by @muzimuzhi in #197, fixed in #198)
    [code coverage]: https://witiko.github.io/Expl3-Linter-11/#code-coverage
    #### Continuous integration
    This version of explcheck has made the following changes to our continuous integration:
    - Update the `zauguin/install-texlive` action to v4.3. (484989a)
    - Retry `tlmgr install` and `update`. (#198) ----------------------------------------------------------------------
    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
    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
    --- Synchronet 3.21f-Linux NewsLink 1.2
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Tue May 5 14:07:51 2026
    From Newsgroup: comp.text.tex

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

    expltools

    package.

    Version: 2026-05-03
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

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

    ## expltools 2026-05-03

    ### explcheck v0.20.0

    #### New features

    This version of explcheck has implemented the following new features:

    - Add more support for flow analysis. (#188)

    This adds support for the following issues from the document titled
    [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]:

    1. E428 (Unexpandable or restricted-expandable boolean expression)
    1. W429 (Defined an unexpandable function as unprotected)
    2. W502 (Unused private function)
    3. W503 (Unused private function variant)

    Out of these issues, warning W429 is particularly pervasive, being reported
    for 573 package files in TeX Live 2025.

    - In `explcheck-latex3.lua`, add `definitions["function"]` and
    `definitions.variable` properties with LPEG parsers that accept LaTeX3
    standard-library function and variable names, respectively, and capture their
    properties, such as expandability and the date when they were added or most
    recently updated. (#201, co-authored by @josephwright in latex3/latex3#1885
    and latex3/latex3#1886)

    For example, `lpeg.match(definitions["function"], "msg_expandable_error:nn")`,
    where `definitions = require("explcheck-latex3").definitions`, returns
    the Lua table `{ EXP = "full", added = "2015-08-06" }`.

    These parsers are generated by `generate-explcheck-latex3.lua` from a new
    third-party submodule at `third-party/latex3`, which points to a reasonably
    recent version of the LaTeX3 development repository. At commit
    latex3/latex3@ff6927ae8, the parsers recognize 4,850 LaTeX3 standard-library
    functions and 339 variables.

    - Support multiple user config files being specified in the command-line option
    `--config-file` and the corresponding Lua option `config_file`. (discussed
    with @muzimuzhi in #203, added in #201)

    - Add Lua option `defined_csnames` that specifies which control sequences
    should always be assumed to be defined. (discussed with @muzimuzhi and
    @alceu-frigeri in #206, added in #201)

    This option provides a more fine-grained alternative to the earlier
    `imported_prefixes`. For example, suppose the control sequences
    `\module_foo:` and `\module_bar:` are imported and should always be
    considered defined. A coarse-grained way to express this is:

    ``` toml
    [defaults]
    imported_prefixes = ["module"]
    ```

    However, this also suppresses warnings and errors for all control sequence
    names matching `\module_*`, as well as message names matching `module/*`,
    which may be undesirable. Using `defined_csnames`, the same intent can be
    expressed more precisely:

    ``` toml
    [defaults]
    defined_csnames = ["module_foo:", "module_bar:"]
    ```

    This way, only warnings and errors related to the listed control sequence
    names are suppressed.

    - Add Lua option `latex3_definitions_max_added_date`, which limits how recent
    LaTeX3 standard-library function and variable definitions are considered
    during analysis. (#201)

    This affects issues E428 and E508 (Unexpandable or restricted-expandable
    boolean expression) and W429 and W512 (Defined an unexpandable function as
    unprotected), as well as any issues that are only reported for user-defined
    functions and variables, not for LaTeX3 standard-library ones.

    For example, your config file `.explcheckrc` might look as follows if you
    want to only consider deprecations, prefixes, and definitions from
    TeX Live 2025 and earlier:

    ``` toml
    [defaults]
    l3obsolete_max_deprecated_date = "2025-09-29"
    l3prefixes_max_first_registered_date = "2025-12-02"
    latex3_definitions_max_added_date = "2025-07-08"
    ```

    These dates can be obtained by running `generate-explcheck-latex3.lua` with
    the Git submodule `third-party/latex3` checked out at a commit corresponding
    to TeX Live 2025. One reasonable approximation is the Git tag `2026-01-19`,
    since `/usr/local/texlive/2025/texmf-dist/tex/latex/l3kernel/expl3-code.tex`
    in the Docker image `texlive/texlive:TL2025-historic` contains
    `\def\ExplFileDate{2026-01-19}`. The script then produces output such as:

    ```
    LPEG parsers and other information extracted from LaTeX3 data files.
    Generated on 2026-04-30 from the following files:
    - "l3obsolete.txt" with the latest obsolete entry from 2025-09-29: `\l_keys_choice_tl`
    - "l3prefixes.csv" with the latest registered prefix from 2025-12-02: "asmejour"
    - 85 "l3*.dtx" files with 4,753 function and 340 variable definitions:
    - Latest added function or variable from 2025-07-08: `\tl_retokenize:n`
    - Latest updated function or variable from 2025-09-29: `\l_keys_choice_int`
    ```

    #### 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 issues E509 (Expanding an unexpandable function) and E510
    (Fully-expanding a restricted-expandable function), since none of these
    constitute an error: the functions simply remain unexpanded. (#201)

    - Plan for weaker versions of the issues E508 (Unexpandable or
    restricted-expandable boolean expression) and W512 (Defined an unexpandable
    function as unprotected) in semantic analysis under the identifiers E428 and
    W429, respectively, and the same names. (#201)

    - Plan for further analysis of integer expressions in Section "Caveats". (#201)

    #### Continuous integration

    This version of explcheck has made the following changes to our continuous integration:

    - Bump `softprops/action-gh-release` from 2 to 3. (contributed by @dependabot
    in #199)

    - Check that third-party submodules are up-to-date. (#201)

    [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://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.21f-Linux NewsLink 1.2
  • From CTAN Announcements@manfred@ctan.org to ctan-ann on Wed May 13 16:06:35 2026
    From Newsgroup: comp.text.tex

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

    expltools

    package.

    Version: 2026-05-12
    License: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

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

    ## expltools 2026-05-12

    ### explcheck v0.21.0

    #### New features

    This version of explcheck has implemented the following new features:

    - Add command-line option `--inline-config`. (suggested by @muzimuzhi in #203,
    added in #211)

    This option accepts a TOML string that is treated as a config file,
    overriding any options specified in config files. The option may be specified
    repeatedly; when the same Lua option appears in multiple TOML strings, later
    occurrences take precedence.

    With this option, you can set ad-hoc Lua options without creating a config
    file. For example, to disable the Lua option `stop_early_when_confused`, you
    can write `--inline-config defaults.stop_early_when_confused=false`.

    - Support specifying Lua options at the top level of the config file.
    (suggested by @muzimuzhi in #203, added in #211)

    This allows you to omit the `[defaults]` section from your config file. For
    example, the following is now a complete valid config file:

    ``` toml
    max_line_length = 120
    ignored_issues = ["w100", "S"]
    ```

    This also simplifies the use of the `--inline-config` command-line option:
    you can now write `--inline-config stop_early_when_confused=false` without
    the previously required `defaults.` prefix.

    - Change the semantics of the Lua options
    `max_reaching_definition_inner_loops` and
    `max_reaching_definition_outer_loops` to perform a partial reaching
    definition analysis when the limits are exceeded. (#212, 975f91d)

    Previously, exceeding either limit would cause explcheck to abort the
    analysis. Now, processing only aborts when the number of reaching definition
    loops exceeds the theoretical upper bounds, which indicates a bug. By
    contrast, when the limits specified by these options are exceeded, explcheck
    now continues with a partial analysis. This may lead to false positive issues
    reported by the flow analysis, but can also greatly improve performance.

    #### Fixes

    This version of explcheck has fixed the following problems:

    - Do not report issue W429 (Defined an unexpandable function as unprotected)
    for restricted-expandable functions. (e507747)

    - Fix potentially untrue assertion predicates in the flow analysis. (reported
    by @muzimuzhi in #208, fixed in #209)

    - Do not expect the `statements` key in all segments. (#212)

    Some segment types such as `BOOLEAN_EXPRESSION` only contain `calls`, not
    `statements`.

    #### Deprecations

    This version of explcheck has deprecated the following features and scheduled them for removal in v1.0.0:

    - Rename the Lua option `config_file` to `config_files` and deprecate
    `config_file`. (#211)

    - Deprecate the command-line option `--expl3-detection-strategy`. (#211)

    If you rely on this option, you may set it using `--inline-config`. For
    example, you would replace `--expl3-detection-strategy always` with
    `--inline-config 'expl3_detection_strategy = "always"'.

    #### Continuous integration

    This version of explcheck has made the following changes to our continuous integration (CI):

    - Run the flow analysis on the whole TeX Live in the CI. (#208, #210, #212,
    975f91d, 59be8c3)
    - Cancel previous CI run from the same branch or pull request. (cae310d)
    - Do not run the CI when tags are pushed. (d88b2f1, 8c7a960)

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

    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 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