From Newsgroup: comp.text.tex
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 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.21a-Linux NewsLink 1.2