v1.7e — audit fixes (-ver/-dry in tovyCIP, strict numeric flags)
Audit fixes — -ver / -dry now work in tovyCIP, strict numeric flags
P0 — silent bugs
-
-verwas silently ignored in the default tovyCIP path. Before
v1.7e, passing-verwith a default tovyCIP encode took exactly
the same wallclock as without it — verify ran zero work even though
the flag was accepted. Fixed by routing the encoder output through
an in-memory buffer (new optionalout_bytesparameter on
compress_tovycip_archive) so-vercan decompress to a temp dir
and byte-compare against the original PNG (or pixel-compare under
-ldf). -
-drywas silently ignored in the default tovyCIP path. Files
were written to disk regardless. Same plumbing: the encoder no
longer writes whendry_runis set, but still tallies totals from
the in-memory buffer so the summary line stays accurate.-ver -dry
now does a full round-trip verify without touching disk.
P1 — strict flag validation
-m,-th,-nofsep=,-zl=now reject non-numeric and
out-of-range values with a clear stderr message and exit 2.
Previously e.g.-mZsilently became a no-op (atoi returned 0,
branch matched but did nothing) — inconsistent with the existing
unknown flag: X → exit 2policy. Removed a duplicate-nofsep=
handler.
P2 / docs / UX
-
collect()recursion now picks up.tcipand.ppgsfiles
(legacy archive extensions). Previously-rover a tree containing
those silently skipped them, even thoughdetect_typewould have
dispatched them correctly. -
Banner subtitle now reads
tovyCIP backend (kanzi BWT + zstd-19-long)
instead ofbrute-force zlib match + solid LZMA(the old default). -
Help text:
-perfileno longer documented as(no-op); describes
the legacy LZMA opt-out it actually performs. -
Help text:
-kpng-maxno longer claimsarchive use case
(archives were removed in v1.7) — explains the per-file ratio /
decode trade-off instead. -
Help text:
-sfthmentions parallel kanzi encode in the tovyCIP
path, not just MT-LZMA. -
Help text:
-deepclaim of~2x slower / ~6% smallersoftened to
reflect that on libpng-default encoders it's effectively a no-op
(match always found on candidate 0); helps a few percent on exotic
encoders. -
-odwithout a glued path now prints
missing value: -od<path> (glue the path: -od/some/dir)instead
ofunknown flag: -od. -
Single missing file now shows the actual path:
ERROR missing file: /path/to/file.pnginstead of
ERROR 1 missing file(s).
Notes
-
Windows binary not shipped this release (no Windows host available
during the cycle). Linux x86-64 only. Windows users on v1.7d
experience the-ver/-drybugs too — workaround until v1.7e
Windows lands: use-m6(legacy LZMA path) where both flags work
correctly. -
Compression algorithm and wire format unchanged from v1.7d. v1.7d
output decompresses byte-exact under v1.7e and vice versa.