expltools: two years of latex3 static analysis

expltools two years of latex3 static analysis vít starý novotný ( ) tug 2026, calgary july 2026

Google Docs

In the upcoming v0.22.0 release of explcheck, planned for the end of May, I aim to add flow-aware analysis of the expandability of functions and boolean expressions, which we have been building towards over the past several releases.

For users, this will introduce support for the following new issue types:

1. E508 (Unexpandable or restricted-expandable boolean expression)
2. E512 (Defined an unexpandable function as unprotected)

This is another major step towards the first stable release of explcheck. I also plan to publish a blog post describing the underlying algorithm and its trade-offs. The current design is being discussed in https://github.com/Witiko/expltools/issues/215.

#LaTeX #expl3 #programming #TeXLaTeX #expltools

Report issues E508 (Unexpandable or restricted-expandable boolean expression) and E512 (Defined an unexpandable function as unprotected) · Issue #215 · Witiko/expltools

This PR continues #201 based on the tasks outlined there: In the syntactic analysis, consider a standalone variable or constant control sequence \⟨name⟩_⟨type⟩ to be a variable use like \⟨type⟩_use...

GitHub

While I am in Calgary, I will also present a talk titled "Expltools: Two years of LaTeX3 static analysis". I will cover the new developments in expltools from the past year and touch on AI coding tools and how they can complement static analysis in the development and debugging of expl3 code.

Abstract: https://www.tug.org/tug2026/abstracts/starynovotny-expl3tools.txt

#programming #TeXLaTeX #expltools

Five new flow-analysis issue types have been added in https://github.com/Witiko/expltools/pull/188 over the past two days:

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)

These will be included in explcheck v0.19.0, planned for release by the end of the month.

#LaTeX #expl3 #programming #TeXLaTeX #expltools

Support flow analysis by Witiko · Pull Request #188 · Witiko/expltools

This PR continues #176 based on the tasks outlined there and the recent blog post: Report issues from Section 5.1 (Functions and conditional functions) from the document titled Warnings and error...

GitHub

The v0.18.2 release of explcheck https://github.com/Witiko/expltools/releases/tag/2026-03-13 speeds up the flow analysis by another order of magnitude, reducing runtimes on corner-case examples from months in v0.18.0 to a little over an hour.

There are still plenty of optimization opportunities for a motivated master's student https://github.com/Witiko/expltools/issues/156 but nothing that can't wait until after v1.0.0. 🚀

#LaTeX #expl3 #programming #TeXLaTeX #expltools #explcheck

Release 2026-03-13 · Witiko/expltools

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. (#...

GitHub