# Changelog
All notable changes to the `l3build` bundle since the start of 2018
will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
## [2024-01-04]
### Changed
- Throw warnings on unknown doc name(s)
- Always execute `runtest_tasks()` if set (issue \#327)
- Print failures correctly when these occur in multiple configurations
## [2023-12-15]
### Fixed
- Test for blank `runtest_tasks()` (issue \#327)
## [2023-12-13-2]
- Correct setup for script running in TeX Live
## [2023-12-13]
### Fixed
- Syntax warning on Windows with some test setups
## [2023-12-12]
### Changed
- Document default value of `ctanpkg` as a valid lua expression
- Improve log for failed checks with no diff files
- Document full syntaxes of `\SHOWFILE` and `\ASSERT(STR)`
### Fixed
- Short-circuit `check --rerun` if `testdir` doesn't exist
- Retain errorlevel on Windows during `check` target
## [2023-11-01]
### Changed
- Drop duplicate backslashes in doc
### Fixed
- Support non-ASCII filenames that fall within the system codepage on Windows
(see \#122)
## [2023-09-13]
### Added
- Document ConTeXt as supported `checkformat`
### Changed
- Extend version string normalisation during checks
(see issue \#96)
- Extend excludefiles to cover `build.lua` (see \#286)
### Fixed
- Return passing errorlevel if BibTeX issues warnings
(see \#260)
- Respect `excludefiles` when doing (local) installation
## [2023-09-07]
### Changed
- Refine `-utc` support
- Apply `checkopts` in addition to engine-specific options
## [2023-09-05]
### Changed
- Initialise the random seed with the current time so `--shuffle` produces different orders each run.
- Normalise more `luaotfload` cache lines
- Apply `-utc` switch for LuaTeX when using a fixed epoch value
## [2023-07-20]
- Set `-kanji-internal=euc` when building pLaTeX
## [2023-07-17]
### Changed
- Improve stdout "Running l3build with target ..."
- Quote configuration name used in stdout
- Update one leftover outdated doc for `unpackexe`: defaults to `pdftex`
- Building pLaTeX format now uses e-upTeX engine
- Normalize more `luaotfload` path data (see issue \#301)
- Update ConTeXt settings to allow for LuaTeX and LuaMetaTeX runs
- Improve doc for default `stdengine`
### Fixed
- Avoid setting `TEMXFCNF` for ConTeXt (issue \#232)
## [2023-03-27]
### Fixed
- All LuaTeX `.tlg` files were wrongly considered not engine-specific.
Introduced in #292 which tried to fix #291.
## [2023-03-22]
### Changed
- Default value of `maxprintline` is now `9999`
(may require `.tlg` updates: see docs)
### Fixed
- Apply needed luatex-specific log normalization, even when `--rerun` is used
(issue \#291)
## [2023-03-08]
### Changed
- Generalize normalization of ghostscript version in PDF-based tests
- Include UNIX timestamps in generated ZIP files
- Normalize pdfTeX `.enc` file loading
### Fixed
- Ensure when used, value of `ps2pdfopts` is surrounded by a space on both sides
## [2023-02-26]
### Changed
- Run engine sanity check per config
### Fixed
- Restore epoch settings for `dvitopdf()`
- Use plural form of variable `ps2pdfopts` consistently in code and doc, and
retain compatibility with singular form `ps2pdfopt` (issue \#275)
- Remove the last trace of dropped variable `stdconfig`
## [2023-02-20]
### Changed
- Unify `testdir` by dropping possibly trailing `.lua` passed to `--config`
### Fixed
- Ensure directories `testdir` and `resultdir` exist when `--dirty` is set
- epoch settings with xetex
## [2023-02-16]
### Changed
- Drop a redundant setup line for upTeX
- Normalise more Lua stack trace data (may require `.tlg` rebuild)
### Fixed
- Ensure `texmf.cnf` work correctly for `dvips`
## [2022-11-10]
### Changed
- Suppress (new) LaTeX version data at end of `.log`
### Fixed
- Allow for local override of `ctanupload` variable
## [2022-09-15]
### Fixed
- Copying of nested directories
## [2022-04-19]
### Changed
- Normalise GhostScript version in PDF-based tests
- Sort list of names of difference files for failing tests.
## [2022-04-12]
### Added
- Basic support for `make4ht`
### Changed
- Support `bidi` version string in `\special` lines (closes \#226)
## [2022-03-15]
### Changed
- When `\pdfmeta_set_regression_data:` is defined it is used
to set metadata
- Support multiple configurations in bundles
### Fixed
- Correctly normalize luaotfload font cache path
## [2022-02-24]
### Fixed
- Creation of subdirectories in TDS structures on Unix-like systems
- use `form-string` rather than `form` for all curl fields to avoid
misinterpreting leading `@` or `<` eg a description starting `
`
- Check the boolean value returned by executing shell commands in
`l3build-upload` and throw an error if this is false. This fixes
the issue that previously "validation successful" was reported
if `curl` failed.
### Changed
- Documentation of how to validate an upload
## [2021-12-14]
### Fixed
- Use correct name for `options` table in multi configuration management code
## [2021-12-09]
### Added
- Support for pre-constructed TDS-style sources (variable `tdsdirs`)
- Support for injection of tokens using `specialformats`
### Changed
- If multiple configurations are present, let `l3build clean` run
on all of them by default. (issue \#214)
## [2021-12-06]
### Fixed
- Place PDF files inside `docfiledir` in all cases
## [2021-11-29]
### Changed
- Documentation improvements
- Use `checkengines[1]` as the default for `stdengine`
- Add sanity check for `TEXMFHOME` value
- Double \ when writing the curl options, so that \
does not need to be doubled in note and announcement texts.
### Fixed
- Installation of files when using MiKTeX (see #125)
- Incorrect line in `manifest` target (see #195)
- Placement of PDF files in subdirectory locations (issue \#209)
- Detection of engine-specific tlg files for non-standard LuaTeX based engines (issues #214)
## [2021-11-24]
- Always typeset in `typesetdir` (fixes #210)
## [2021-11-12]
### Changed
- Documentation improvements
### Fixed
- Allow config names ending with 'lua', as long as they don't end with '.lua'
- All documentation files are build in a consistent environment with support
files visible.
## [2021-08-28]
### Fixed
- Creation of zip files on Windows
- Only match filename and not full path for `exefiles`
## [2021-08-27]
### Added
- Add the `--show-saves` flag for `l3build check` to generate a list of
`l3build save` commands to regenerate all failing tests
### Changed
- No longer call an external program to generate `zip` files and generate
them directly instead. This disables the options `zipexe` and `zipopts`.
- Copy TDS-style zip files to main dir
## [2021-05-06]
### Fixed
- Issue when running PDF-based tests
## [2021-05-05]
### Changed
- Normalise Lua function calls (issue \#127) - may require `.tlg` update
- LuaTeX from TL'21 is no longer 'off by one' in log files - may require
`.tlg` update
### Fixed
- Installation now supports deeper directory levels (issue \#182)
- The `texmfhome` directory is now created before use if required
- Crash caused by yyyy-mm-dd epoch format
### Removed
- Support for use as `texlua build.lua `
## [2020-06-04]
### Added
- Store 'raw' PDF files when testing using PDFs, to allow further checks
with e.g. PDF validators
## [2020-03-25]
### Changed
- Exclude `sourcefiles` entries from file clean-up
- Adjust defaults for TeX Live 2020 LuaHBTeX usage
## [2020-03-16]
### Changed
- Suppress PDF compression in DVI route
- Suppress PDF ID data in DVI route
- Default to `dvips` for (p)TeX
- Refinement of `/ID` line suppression
## [2020-03-13]
### Changed
- Refinement of PDF test normalisation
## [2020-03-12]
### Added
- Option `ps2pdfopt`
### Changed
- Normalise `/ID` lines in PDF comparisons
- Normalise `%%` lines in PDF comparisons
### Fixed
- Enable `cleandir()` recursively
- Install files after *all* directory cleaning/creation
## [2020-02-21]
### Changed
- Avoid temporary file when unpacking
### Deprecated
- `os_yes`: use `io.popen(...,w)` instead
## [2020-02-17]
### Added
- Variable `textfiledir`
- Table `specialtypesetting` and support data
### Changed
- Documentation improvements
### Fixed
- When `checkruns` > 1 and `recordstatus=true`, testing code would crash
(issue \#90)
## [2020-02-03]
### Changed
- Normalise out DVI header lines
### Fixed
- Allow announcement field to be empty
(with a warning this suppresses the CTAN announcement)
## [2020-01-14]
### Fixed
- Allow for more extracted files from DocStrip
## [2019-11-27]
### Changed
- `\ASSERTSTR` no longer needs e-TeX
### Fixed
- Installation of files using the `--full` switch
## [2019-11-01]
### Added
- New `\ASSERT` and `\ASSERTSTR` functions (issue \#102)
### Changed
- Avoid normalisation of (u)pTeX data when this is standard engine
(fixes #103)
- Normalise Lua data references (#107)
- Extend `runtest_task()` to pass run number
- Allow `regression-test` to load when e-TeX is unavailable (fixes #105)
### Fixed
- Location of `testsuppdir` when multiple configurations are used
## [2019-10-02]
### Added
- `docinit_hook()`
### Changed
- Normalise out file paths in all cases
## [2019-09-30]
### Added
- New `flattentds` variable for controlling complex TDS structures
- Additional notes on `texmfdir`
### Fixed
- Copy TDS files inside subdirectories (fixes #100)
## [2019-09-29]
### Fixed
- Path searching if `texmfdir` is set but does not exist
## [2019-09-28]
### Fixed
- Typesetting when using an isolated system (use of texmfdir)
## [2019-09-25]
### Added
- New `texmfdir` variable for more complex local additions
### Fixed
- Clean out all configuration test dirs (see #98)
## [2019-09-18]
### Added
- `checkinit_hook()`
## [2019-09-14]
### Changed
- Use three typesetting runs as-standard
- Use `pdftex` not `tex` for unpacking
## [2019-08-24]
### Changed
- Include `LUAINPUTS` when setting `TEXINPUTS` for `checksearch = false`, etc.
### Fixed
- Remove `.log` file before each check run: prevent inter-engine confusion
## [2019-07-31]
### Fixed
- Interaction between secondary files in some tests
## [2019-07-30]
### Added
- Support for non-standard file layouts via `tdslocations` table
### Changed
- Only write (x)dvipdfmx specials for XeTeX and (u)pTeX (see #94)
## [2019-06-27]
### Changed
- Back out change for normalisation of LuaTeX v1.10 stack information
(timing issue: will reintroduce later)
### Fixed
- Correct test for LuaTeX (see #93)
## [2019-06-26]
### Added
- Support for HarfTeX (see #92)
### Changed
- Support for normalisation of LuaTeX v1.10 stack information
(may require new `.tlg` files)
### Fixed
- Support for spaces in paths when typesetting (see #91)
## [2019-06-18]
### Added
- Switch `--show-log-on-error` for use with `--halt-on-error`. Results in the `.log` file
being show in full on the console to aid in non-interactive debugging.
### Changed
- Moved LuaTeX-specific font cache normalisation
## [2019-02-10]
### Fixed
- Handling of ASCII engines
- Execution of all tests by `ctan` target (see #85)
## [2019-02-06]
### Added
- Table-based control of binary/format combinations: `specialformats`
(see #84)
- Switch `--debug` for chasing problems with the `upload` target
### Changed
- The `uploadconfig.update` field by default now automatically detects whether it
needs to be `true` or `false`
- The `tag` target now allows no tag name to allow for setting this programmatically
within a `build.lua` script
- Better support for multiple LuaTeX-like engines
### Fixed
- Uploading via Windows should now work
## [2018-12-23]
### Added
- Switch `--email` for providing upload email address
- Switch `-F|--file` for providing upload announcement from file
- Switch `-m|--message` for providing upload announcement from command line
### Changed
- Enable `--dry-run` option for `upload` target
- Enable tag/version to be passed as optional argument to `upload` target
### Fixed
- Packaging of some team-specific files
- Handling of upload data containing newlines (Windows only)
## [2018-12-18]
### Changed
- Add new `upload` target which uses `curl` with the CTAN API to send a package
for release (see #1)
## [2018-11-08]
### Changed
- Strip leading spaces from file loading/page number lines (see #78)
### Fixed
- Print test failures correctly per-config (see #77)
## [2018-10-30]
### Fixed
- Substitution of spaces in Unix paths (see #76)
## [2018-10-25]
### Added
- `\SHOWFILE` command
### Changed
- Better support for multiple LuaTeX engines (see #75)
## Fixed
- Support for spaces in directory names (fixes #76)
- Support relative directories as argument to `--texmfhome`
## [2018-09-23]
### Changed
- Entries in `scriptfiles` are excluded from `installfiles`
- Use a per-config directory for running tests
- Enable use of local `texmf.cnf` file in tests and documentation
- New `ctanreadme` variable
## [2018-09-21]
### Changed
- Normalise date lines to contain "...-..-.." rather than removing
(including normalising version data in such lines): note that
`.tlg` file updates may be required after this change
- Explicitly exclude `.fd` file lines
## [2018-08-07]
### Changed
- Suppress file name info in PDF output for included images, etc.
### Fixed
- Issue with creation of CTAN releases for bundles
## [2018-08-04]
### Added
- `ctanzip` variable
- `--full` option
### Changed
- Run PDF-based tests for all engines
- Tweaks to PDF-based normalisation: new `.tpf` files will be required
- The `--halt-on-error|-H` setting now applies to multiple configs
### Fixed
- Testing using `.lve` files
- Tagging with new approach to top-level targets
## [2018-08-02]
### Added
- `CHANGELOG.md`
- `--dirty` option
- `includetests` and `excludetests` variables for controlling which tests
run
- `target_list` table to allow control of targets without redefining
`main()`
### Changed
- PDF-based testing now uses 'digested' PDF file for comparison,
working from dedicated `.pvt` input files
### Removed
- `--pdf|-p` command line switch
## [2018-05-10]
### Changed
- Revert appearance of date lines in `.tlg` files:
this is on balance problematic
## [2018-05-06]
### Added
- Variable `dynamicfiles` to be cleaned between each test run
### Changed
- Normalise dates to placeholder "YYYY-MM-DD": may require `.tlg` updates
### Fixed
- Include dot files in `tree()` (fixes #30)
## [2018-03-26]
### Changed
- Omit ISO date lines in `.tlg` files
## [2018-03-24]
### Changed
- Allow 'short cut' of check runs
- Support for upcoming LaTeX kernel release functions
## [2018-03-10]
### Changed
- Add `#!` line for POSIX users
- Set POSIX u+x on `l3build.lua`
### Fixed
- Handling of script name with or without extension
## [2018-03-09]
### Fixed
- Pass through script name correctly with new set up
## [2018-03-08]
### Added
- Target `tag`, variable `tagfiles` and function `update_tag()`
- Variables `scriptfiles` and `scriptmanfiles` to support installation
of scripts
### Changed
- `l3build` can now be run as a top-level script rather than using
`texlua build.lua ...`
- Normalisation of LuaTeX-derived `tlg` files, in preparation for
TeX Live 2018
### Deprecated
- Use of wrapper `build.lua` script to call `l3build`: the new
top-level script approach is preferred
### Removed
- Target `setversion` and variable `versionfiles`
## [2018-02-20]
### Changed
- Allow for `checkopts` adding code/files
### Fixed
- Creation of 'structured' CTAN releases
- Quote test names correctly
## [2018-01-27]
### Added
- Target `uninstall`
- Options `--first` and `--last`
## Changed
- Normalisation for upcoming LuaTeX 1.07 release
### Fixed
- Behaviour of check on Windows when using standard `fc` tool
## [2018-01-10]
## Added
- Target `manifest` for construction of file manifests automatically
- Variable `auxfiles`
- Option `--dry-run` for installation/cleaning
- Option `--texmfhome` to allow customisation of installation
- Option `--shuffle` to run tests in a random order
### Changed
- Sort list of tests to avoid system-dependent ordering
- Split `l3build` into multiple files for improved maintenance
### Fixed
- Issue with `recordstatus`
### Removed
- Rationalise short option names: removed `-d`, `-E`, `-r`
- Target `cmdcheck`: specific to LaTeX kernel work
[Unreleased]: https://github.com/latex3/l3build/compare/2024-01-04...HEAD
[2024-01-04]: https://github.com/latex3/l3build/compare/2023-12-15...2024-01-04
[2023-12-15]: https://github.com/latex3/l3build/compare/2023-12-13-2...2023-12-15
[2023-12-13-2]: https://github.com/latex3/l3build/compare/2023-12-13...2023-12-13-2
[2023-12-13]: https://github.com/latex3/l3build/compare/2023-12-12...2023-12-13
[2023-12-12]: https://github.com/latex3/l3build/compare/2023-11-01...2023-12-12
[2023-11-01]: https://github.com/latex3/l3build/compare/2023-09-13...2023-11-01
[2023-09-13]: https://github.com/latex3/l3build/compare/2023-09-07...2023-09-13
[2023-09-07]: https://github.com/latex3/l3build/compare/2023-09-05...2023-09-07
[2023-09-05]: https://github.com/latex3/l3build/compare/2023-07-20...2023-09-05
[2023-07-20]: https://github.com/latex3/l3build/compare/2023-07-17...2023-07-20
[2023-07-17]: https://github.com/latex3/l3build/compare/2023-03-27...2023-07-17
[2023-03-27]: https://github.com/latex3/l3build/compare/2023-03-22...2023-03-27
[2023-03-22]: https://github.com/latex3/l3build/compare/2023-03-08...2023-03-22
[2023-03-08]: https://github.com/latex3/l3build/compare/2023-02-26...2023-03-08
[2023-02-26]: https://github.com/latex3/l3build/compare/2023-02-20...2023-02-26
[2023-02-20]: https://github.com/latex3/l3build/compare/2023-02-16...2023-02-20
[2023-02-16]: https://github.com/latex3/l3build/compare/2022-11-10...2023-02-16
[2022-11-10]: https://github.com/latex3/l3build/compare/2022-09-15...2022-11-10
[2022-09-15]: https://github.com/latex3/l3build/compare/2022-04-19...2022-09-15
[2022-04-19]: https://github.com/latex3/l3build/compare/2022-04-12...2022-04-19
[2022-04-12]: https://github.com/latex3/l3build/compare/2022-03-15...2022-04-12
[2022-03-15]: https://github.com/latex3/l3build/compare/2022-02-24...2022-03-15
[2022-02-24]: https://github.com/latex3/l3build/compare/2021-12-14...2022-02-24
[2021-12-14]: https://github.com/latex3/l3build/compare/2021-12-09...2021-12-14
[2021-12-09]: https://github.com/latex3/l3build/compare/2021-12-06...2021-12-09
[2021-12-06]: https://github.com/latex3/l3build/compare/2021-11-29...2021-12-06
[2021-11-29]: https://github.com/latex3/l3build/compare/2021-11-24...2021-11-29
[2021-11-24]: https://github.com/latex3/l3build/compare/2021-11-12...2021-11-24
[2021-11-12]: https://github.com/latex3/l3build/compare/2021-08-28...2021-11-12
[2021-08-28]: https://github.com/latex3/l3build/compare/2021-08-27...2021-08-28
[2021-08-27]: https://github.com/latex3/l3build/compare/2021-05-06...2021-08-27
[2021-05-06]: https://github.com/latex3/l3build/compare/2021-05-05...2021-05-06
[2021-05-05]: https://github.com/latex3/l3build/compare/2020-06-04...2021-05-05
[2020-06-04]: https://github.com/latex3/l3build/compare/2020-03-25...2020-06-04
[2020-03-25]: https://github.com/latex3/l3build/compare/2020-03-16...2020-03-25
[2020-03-16]: https://github.com/latex3/l3build/compare/2020-03-13...2020-03-16
[2020-03-13]: https://github.com/latex3/l3build/compare/2020-03-12...2020-03-13
[2020-03-12]: https://github.com/latex3/l3build/compare/2020-02-21...2020-03-12
[2020-02-21]: https://github.com/latex3/l3build/compare/2020-02-17...2020-02-21
[2020-02-17]: https://github.com/latex3/l3build/compare/2020-02-03...2020-02-17
[2020-02-03]: https://github.com/latex3/l3build/compare/2020-01-14...2020-02-03
[2020-01-14]: https://github.com/latex3/l3build/compare/2019-11-27...2020-01-14
[2019-11-27]: https://github.com/latex3/l3build/compare/2019-11-01...2019-11-27
[2019-11-01]: https://github.com/latex3/l3build/compare/2019-10-02...2019-11-01
[2019-10-02]: https://github.com/latex3/l3build/compare/2019-09-30...2019-10-02
[2019-09-30]: https://github.com/latex3/l3build/compare/2019-09-29...2019-09-30
[2019-09-29]: https://github.com/latex3/l3build/compare/2019-09-28...2019-09-29
[2019-09-28]: https://github.com/latex3/l3build/compare/2019-09-25...2019-09-28
[2019-09-25]: https://github.com/latex3/l3build/compare/2019-09-18...2019-09-25
[2019-09-18]: https://github.com/latex3/l3build/compare/2019-09-14...2019-09-18
[2019-09-14]: https://github.com/latex3/l3build/compare/2019-08-24...2019-09-14
[2019-08-24]: https://github.com/latex3/l3build/compare/2019-07-31...2019-08-24
[2019-07-31]: https://github.com/latex3/l3build/compare/2019-07-30...2019-07-31
[2019-07-30]: https://github.com/latex3/l3build/compare/2019-06-27...2019-07-30
[2019-06-27]: https://github.com/latex3/l3build/compare/2019-06-26...2019-06-27
[2019-06-26]: https://github.com/latex3/l3build/compare/2019-06-18...2019-06-26
[2019-06-18]: https://github.com/latex3/l3build/compare/2019-02-10...2019-06-18
[2019-02-10]: https://github.com/latex3/l3build/compare/2019-02-06...2019-02-10
[2019-02-06]: https://github.com/latex3/l3build/compare/2018-12-23...2019-02-06
[2018-12-23]: https://github.com/latex3/l3build/compare/2018-12-18...2018-12-23
[2018-12-18]: https://github.com/latex3/l3build/compare/2018-11-08...2018-12-18
[2018-11-08]: https://github.com/latex3/l3build/compare/2018-10-30...2018-11-08
[2018-10-30]: https://github.com/latex3/l3build/compare/2018-10-25...2018-10-30
[2018-10-25]: https://github.com/latex3/l3build/compare/2018-09-26...2018-10-25
[2018-09-26]: https://github.com/latex3/l3build/compare/2018-09-23...2018-09-26
[2018-09-23]: https://github.com/latex3/l3build/compare/2018-09-21...2018-09-23
[2018-09-21]: https://github.com/latex3/l3build/compare/2018-08-07...2018-09-21
[2018-08-07]: https://github.com/latex3/l3build/compare/2018-08-04...2018-08-07
[2018-08-04]: https://github.com/latex3/l3build/compare/2018-08-02...2018-08-04
[2018-08-02]: https://github.com/latex3/l3build/compare/2018-05-10...2018-08-02
[2018-05-10]: https://github.com/latex3/l3build/compare/2018-05-06...2018-05-10
[2018-05-06]: https://github.com/latex3/l3build/compare/2018-03-26...2018-05-06
[2018-03-26]: https://github.com/latex3/l3build/compare/2018-03-24...2018-03-26
[2018-03-24]: https://github.com/latex3/l3build/compare/2018-03-10...2018-03-24
[2018-03-10]: https://github.com/latex3/l3build/compare/2018-03-09...2018-03-10
[2018-03-09]: https://github.com/latex3/l3build/compare/2018-03-08...2018-03-09
[2018-03-08]: https://github.com/latex3/l3build/compare/2018-02-20...2018-03-08
[2018-02-20]: https://github.com/latex3/l3build/compare/2018-01-27...2018-02-20
[2018-01-27]: https://github.com/latex3/l3build/compare/2018-01-10...2018-01-27
[2018-01-10]: https://github.com/latex3/l3build/compare/2017-12-12...2018-01-10