• CTAN update: expltools

    From CTAN Announcements@erik@ctan.org to ctan-ann on Tue Aug 19 21:25:25 2025
    From Newsgroup: comp.text.tex

    V0t Star2 Novotn2 submitted an update to the

    expltools

    package.

    Version number: 2025-08-18
    License type: lppl1.3c gpl2+

    Summary description: Development tools for expl3 programmers

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


    ## expltools 2025-08-18

    ### explcheck v0.12.0

    #### 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]:

    - Postpone planned issue E417 (Multiply declared variable or constant) to flow
    analysis, under the identifier E519 and the same name. (#110, #112)

    - Postpone planned issue E242 (Multiply defined message) to flow analysis,
    under the identifier E524 and the same name. (#110, #112)

    - Plan for a weaker version of issue E522 (Too few arguments supplied to
    message) to semantic analysis under the identifier E425 and the same name.
    (#110, #112)

    - Remove issues S205 (Malformed function name), S206 (Malformed variable or
    constant name), and S207 (Malformed quark or scan mark name) and replan them
    to semantic analysis under the identifiers S412, S413, and S414, respectively,
    and the same names. (reported by @u-fischer in #109, added in #117)

    - Plan for a new issue E417 (Setting a variable as a constant). (#119)

    - Unplan issues W419 (Using a token list variable or constant without
    an accessor) and E420 (Using non-token-list variable or constant without
    an accessor). (#121)

    - Reclassify the planned errors E421 and E518 (Using an undefined variable or
    constant) as warnings W421 and W518, respectively. (#121)

    - Unplan issues W424 and E521 (Setting an undefined message). (#127)

    - Reclassify and rename the planned errors E426 and E522 (Too few arguments
    supplied to message) to W426 and W522 (Incorrect number of arguments supplied
    to message), respectively. (#127)

    #### Development

    This version of explcheck has implemented the following new features:

    - Include contextual information in human-readable issue descriptions.
    (suggested by @u-fischer at TUG 2025, reported in #110, added in #112)

    - Improve autodetection of expl3 for small example files. (c5ad7a4)

    Previously, we added a new Lua option `min_expl3like_material`, which would
    require at least 5 instances of expl3-like material for a file without
    standard expl3 delimiters to be recognized as expl3. However, this penalizes
    small example files, where there are only a few calls.

    After this change, the option has been renamed to
    `min_expl3like_material_count` and a new Lua option
    `min_expl3like_material_ratio` has been added that specifies the minimum
    portion of the file that must be occupied by expl3 material (defaults to 0.5,
    i.e. 50%) before it is automatically recognized as expl3 regardless.

    - Make `% noqa` comments at the beginning of a file silence issues everywhere.
    (suggested by @FrankMittelbach at TUG 2025, reported in #111, added in #116)

    - Add more support for semantic analysis. (#117..#122, #127)

    This adds support for all remaining issues from Section 4 of the document
    titled [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]:

    1. S412 (Malformed function name)
    2. S413 (Malformed function name)
    3. S414 (Malformed quark or scan mark name)
    4. W415 (Unused variable or constant)
    5. W416 (Setting an undeclared variable)
    6. E417 (Setting a variable as a constant)
    7. E418 (Setting a constant)
    8. W419 (Using an undeclared variable or constant)
    9. E420 (Locally setting a global variable)
    10. E421 (Globally setting a local variable)
    11. T422 (Using a variable of an incompatible type)
    12. W423 (Unused message)
    13. E424 (Using an undefined message)
    14. E425 (Incorrect parameters in message text)
    15. W426 (Incorrect number of arguments supplied to message)
    16. E427 (Comparison conditional without signature `:nnTF`)

    - Add Lua option `suppressed_issue_map`.

    This option defines a mapping between issues that suppress one or more
    other issues. At this point, this option only maps issue W200 ("Do not use"
    argument specifiers) to issues S412, S413, and S414, so that defining
    functions, variables, and constants with malformed names and a "do not use"
    specifier (`:D`) only produces issue W200 and not also S412, S413, and S414.

    In the future, this option will be highly used for issues from the flow
    analysis that have a weaker version in the semantic analysis. In these cases,
    the weaker version will always suppress the stronger version of an issue.

    - Make the Lua option `ignored_options`, the command-line option
    `--ignored-options`, the TeX comments `% noqa` and the Lua function
    `issues:ignore()` treat the issue identifiers as prefixes. (#123, #125)

    This allows you to e.g. ignore all style warnings on the current line with
    `% noqa: s`, all general warnings that originate from the semantic analysis
    with `--ignored-issues=W4`, etc.

    - Add Lua option `stop_after`. (#124, #126)

    This option allows you to specify after which processing step the analysis
    should stop. If an advanced processing step reports false positive issues
    on a complex expl3 file, this option can be used to reduce the number of
    false positive detections.

    - Add Lua option `stop_early_when_confused`. (#124, #126)

    This option, which is enabled by default, allows the processing steps to
    indicate that they are confused by the results of the previous processing
    steps and stop any further processing. If an advanced processing step reports
    false positive issues, then this option should stop the step from running
    and reduce the number of false positive detections.

    #### Fixes

    This version of explcheck has fixed the following bugs:

    - Prevent command-line option `--no-config-file` from raising the error
    `Config file "" does not exist`.
    (reported by @muzimuzhi in #107, fixed in 41446d0)

    - Do not report issue W401 (Unused private function) for well-known and
    imported prefixes. (#115)

    - Correctly parse indirect applications of creator functions via
    `\cs_generate_from_arg_count:NNnn`. (#118)

    - Properly use lazy matching and backtracking in control sequence name patterns
    produced during the semantic analysis. (#120)

    Previously, only wildcards at the end of a name would function properly (lazy
    matching) and any partial matches by previous patterns would prevent any
    potential matches by future patterns (backtracking). Both limitations were
    due to parsing expression grammars (PEGs) being greedy and non-backtracking
    by default. As a result, many wildcards would not match even though they
    should have.

    #### Continuous integration

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

    - Rename GitHub Action `teatimeguest/setup-texlive-action@v3` to `TeX-Live/...`.
    (reported by @pablogonz in markdown#576, fixed in 28ba10b5)

    - Bump actions/checkout and actions/download-artifact from 4 to 5.
    (contributed by @dependabot in #113 and #114)

    - Check Lua code blocks in `README.md` with luacheck. (1d21b97, 42f7504, 7b97271)

    #### Distribution

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

    - Install Bash in the Docker image. (e8c4a08)


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

    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.21a-Linux NewsLink 1.2