Vít Starý Novotný submitted an update to the

                   expltools

bundle.

Version:  2025-09-29
License:  lppl1.3c gpl2+

Summary description:  Development tools for expl3 programmers

Announcement text:
----------------------------------------------------------------------
 
 ## expltools 2025-09-29

 ### explcheck v0.13.0

 #### Fixes

 This version of explcheck has fixed the following bugs:

 - Do not deduplicate issues with the same identifier and range but different
   context. (#132)

 - Do not report issues E420 (Locally setting a global variable) and E421
   (Globally setting a local variable) in top-level code. (21e2023a, 61a40cb7,
   cfa7847b)

 - Support message definitions using the deprecated function `\msg_gset:nn...`.
   (3101d9ff)

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

 - Plan issue S105 (Needlessly ignored issue). (#130, #132)

  [warnings-and-errors]: 
https://github.com/witiko/expltools/releases/download/latest/warnings-and-errors.pdf

 #### Development

 This version of explcheck has implemented the following new features:

 - Support inter-file dependencies. (#129, #131)

   After this change, you may manually _group files_ from the command-line
   interface as follows:

         explcheck first.tex + second.tex , third.tex , fourth.tex

   The above command would cause the files `first.tex` and `second.tex` to be
   processed together and allow explcheck to assume that these files will always
   be used together. As a result, using e.g. a function in the file `first.tex`
   that is only defined in the file `second.tex` would no longer raise the error
   E408 (Calling an undefined function).

   To control how files are grouped by default, you may use the new command-line
   option `--group-files`. To process a group of files in Lua, you may use the
   function `process_files()` from the file `explcheck-utils.lua`:

   ``` lua
   local utils = require("explcheck-utils")
   local first_group_results = utils.process_files({"first.tex", "second.tex"})
   local second_group_results = utils.process_files({"third.tex"})
   local third_group_results = utils.process_files({"fourth.tex"})
   ```

 - Add a new command-line option `--files-from`. (#131)

   Use this option to read the list of expl3 files to check from a text file.

 - Report a warning for needlessly ignored issues. (#130, #132)

   Needlessly ignored issues produce warning S105 (Needlessly ignored issue).

 - Update the representation of segments according to [the work-in-progress TUG
   2025 paper][expltools-tug25-paper]. (#128, #133)

   Previously, calls and statements were tied to expl3 parts, similarly to
   groupings and tokens, and the notion of "nested calls" and "nested
   statements" was tackled ad-hoc. Following this change, syntactic and
   semantic analyses no longer operate on expl3 parts but on segments that
   represent blocks of either top-level or nested code in some expl3 part from
   some file in the current group of files.

   This more general notion of a block of code that may carry calls and
   statements makes it possible to dynamically support new kinds of segments
   without changing the logic of the code. Furthermore, segments can be
   easily referenced regardless of their files and expl3 parts of origin, and
   subdivided into "chunks of well-understood code", which will be the base data
   type for the flow analysis. Therefore, this change lays the groundwork for
   the implementation of the flow analysis, where we'll be working with a
   directed graph with chunks as the nodes.

 - Recognize `T`- and `F`-type arguments as code segments. (#92, #136)

   This allows issues to be reported in true- and false-branches of conditional
   functions, even if these functions are unknown or nested.

 - Report code coverage in the verbose human-readable output. (#134, #135)

   The code coverage provides an estimate of how well-understood a piece of code
   is. Circa 14% of all expl3 code and 2% of all TeX code in current TeX Live is
   considered well-understood. The cut-off for performing the flow analysis is
   likely going to be circa 95% well-understood expl3 tokens, so most code will
   initially only be analyzed using semantic analysis, not flow analysis.

 #### Continuous integration

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

 - Compare code coverage on TeX Live 2024 with a baseline. (#134, #135)

   This acts as an extra precaution against regressions. In general, changes
   should only increase the code coverage compared to the baseline.

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

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
    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
_______________________________________________
ctan-ann mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to