commit 3de5be5eefe282d420adf3149c39499c6ce5df34
Author: Sylvestre Ledru <sylvestre@debian.org>
Date: Sat Aug 29 13:59:04 2026 +0200
Spelling.pm: gate the multi-word corrections on a single regex
check_spelling() scanned the text once per entry in
spelling/corrections-multiword, that is 24 separate passes for every
text checked, even though a text almost never contains any of them.
Build the union of the patterns next to the list itself and return early
unless it matches. The loop then runs only for the texts that do have a
multi-word mistake, and everything else pays for one pass instead of 24.
Perf: NYTProf on rust-coreutils (amd64) attributed 0.48s of a 15.7s run
to the 224328 matches in that loop.
commit ae6ebfdecaac0dd257f95bde15569688fa7a47d2
Author: Sylvestre Ledru <sylvestre@debian.org>
Date: Sat Aug 29 13:58:56 2026 +0200
Documentation.pm: match the file name lists as compiled regexes
any { $item->basename =~ m{$_}xi } interpolates a plain string into the
pattern, so all 23 entries of @DOCUMENTATION_FILE_REGEXES were compiled
again for every installed file. The alternatives are independent, so
they can be joined into a single regular expression built once; the
shorter @NOT_DOCUMENTATION_FILE_REGEXES is precompiled to qr in place.
Perf: NYTProf on rust-coreutils (amd64) attributed 0.25s of a 15.7s run
to the first of the two lines.
commit d2384d15b3412aae69d346a7307be9ece52543e9
Author: Sylvestre Ledru <sylvestre@debian.org>
Date: Sat Aug 29 13:58:49 2026 +0200
Php/Pear/Embedded.pm: precompile the provider regexes
/^$provider$/ interpolates a plain string, and the table values are
plain strings too, because concatenating a qr with $PEAR_EXT stringifies
both operands, so /$PEAR_FILES{$provider}/ compiles a pattern as well.
Both were compiled once per provider per installed file.
Build the table once, with both sides compiled to qr, and pre-filter on
".php". Every value in the table ends in the mandatory $PEAR_EXT factor,
which requires it, so the pre-filter cannot hide a match.
Perf: NYTProf on rust-coreutils (amd64) attributed 0.24s of a 15.7s run
to the two matches.
commit e5e5a23bc0e4b629e34f3bcf6224e59b9293fdd9
Author: Sylvestre Ledru <sylvestre@debian.org>
Date: Sat Aug 29 13:58:43 2026 +0200
Php/Embedded.pm: precompile the provider regexes
/^$provider$/ interpolates a plain string, and the table values are
plain strings as well, so /$PHP_FILES{$provider}/ compiles a pattern
too. Both were compiled once per provider per installed file.
Build the table once, with both sides compiled to qr, and pre-filter on
".php", ".inc" or ".dtd". Every alternative of every pattern in the
table requires one of the three, so the pre-filter cannot hide a match.
Perf: NYTProf on rust-coreutils (amd64) attributed 0.36s of a 15.7s run
to the two matches.
commit 2e42b7351fc93a54e81540c9c40cc3b40a9d9957
Author: Sylvestre Ledru <sylvestre@debian.org>
Date: Sat Aug 29 13:58:35 2026 +0200
Javascript/Embedded.pm: precompile the provider regexes
Two patterns were recompiled on every iteration of the loop over
%JS_FILES. The provider key is a plain string interpolated into
/^$provider$/. The table values are plain strings too, because
concatenating a qr with $JS_EXT stringifies both operands, so
/$JS_FILES{$provider}/ compiles a pattern as well. With one entry per
provider and one call per installed file, that is 162552 compilations of
each on rust-coreutils.
Build the table once, with both sides compiled to qr, and pre-filter on
".js" or ".css". Every value in the table ends in the mandatory $JS_EXT
factor, which requires one of them, except libjs-normalize, which
requires ".css" directly; so the pre-filter cannot hide a match. Almost
no installed file has either extension, and those now skip the loop --
and the resolve_path() for doxygen.css above it -- altogether.
Perf: NYTProf on rust-coreutils (amd64) attributed 2.31s of a 15.7s run
to the two matches; they no longer appear in the profile.
commit 0b0fbbbd1aa79b4f0114b4212ea027d79075a737
Author: Lucas Nussbaum <lucas@debian.org>
Date: Wed Sep 9 07:28:09 2026 +0000
Trim spelling text with builtin::trim
Both check_spelling and check_spelling_picky trim leading and trailing
whitespace. The previous alternation regex
=~ s/^\s+|\s+$//g;
scans the whole buffer from every position. builtin::trim
(non-experimental since Perl 5.40, present in both trixie and sid)
removes the ends in a single C opcode, as already done in Cruft.pm
(MR !771).
Benchmark (ceph-test_20.2.4+ds-1_amd64.deb):
Full lintian run, wall-clock median of 5 (interleaved to control load drift):
baseline (master, alternation regex) 44.93s
builtin::trim 42.04s (-2.89s, -6.4%)
AI-assisted: yes, opencode + deepseek-v4-flash
commit dfe1411a059664a856252b062369f45fcc55e384
Author: Nilesh Patra <nilesh@debian.org>
Date: Thu Sep 10 13:40:54 2026 +0200
tests(golang-package-without-version-suffix): Add test to check against package names without versioned suffixes
commit 22433dbb92c24ee0831a3d2a2eed0bbf98b288c0
Author: Nilesh Patra <nilesh@debian.org>
Date: Thu Sep 10 13:40:16 2026 +0200
new tags: "go-library-package-does-not-include-version" and "go-source-package-does-not-include-version" (Closes: #1147142)
Module aware builds require the packages to contain the version suffix
in source and library dev packages. Flag packages which do not have the same.
commit 8ef84b3dfe8047025572f1d50f298940e6388e32
Author: Nilesh Patra <nilesh@debian.org>
Date: Thu Sep 10 13:35:04 2026 +0200
Rename Golang/ImportPath.pm -> Golang/ModulePath.pm to incorporate for more module path related checks
commit 8b8e7fc1df4fda6e07a1a3613b804c3f4d6698e3
Author: Scott Talbert <swt@techie.net>
Date: Tue Sep 8 16:37:13 2026 -0400
Add more GHC path exclusions to RPATH check
commit 23e736be1d6e42a0e6fe3e0ef137ec0e41552118
Author: Nilesh Patra <nilesh@debian.org>
Date: Wed Sep 9 13:48:31 2026 +0200
Lintian::Check::Documentation - Drop `dist-info` related files from `NOT_DOCUMENTATION_FILE_REGEXES` and fix condition for exclusion of these
Thanks: Lucas Nussbaum <lucas@debian.org>
commit 579c425a21d7aa85e4e813858e52a7e27d036237
Author: Nilesh Patra <nilesh@debian.org>
Date: Wed Sep 9 13:45:22 2026 +0200
Lintian::Screen::Python::Egg::Metadata - Do not check for `WHEEL` in `dist-info` (Closes: #1147187)
https://packaging.python.org/en/latest/specifications/recording-installed-packages/#recording-installed-packages
Says
| The METADATA file is mandatory. All other files may be omitted at the installing tool’s
| discretion. Additional installer-specific files may be present.
commit 5cc113a44f8ff041b14316ee62cce5c79d093686
Author: Louis-Philippe Véronneau <pollo@debian.org>
Date: Wed Sep 9 12:26:04 2026 -0400
bootstrap new release
Automatic checks made by the Debian l10n team found some issues with the translations contained in this package. You should check the l10n status report for more information.
Issues can be things such as missing translations, problematic translated strings, outdated PO files, unknown languages, etc.