v1.6 — unified .ppg extension
What changed
Single extension for all packPNG output. The .tcip extension introduced
in v1.5 for tovyCIP archives is gone — every output is now .ppg, the same
extension used by per-file packPNG mode. The decoder selects the right path
by reading the file's magic byte (PPG1 = single-file packPNG, TCIP /
PPGS = tovyCIP archive), so the unified extension is unambiguous.
packPNG a image.png # → image.ppg (1-entry tovyCIP archive)
packPNG a *.png # → archive.ppg (multi-PNG tovyCIP archive)
packPNG x archive.ppg # extract back to byte-exact PNGs
packPNG a -perfile *.png # opt-out: per-file packPNG (also .ppg)Compatibility
- Wire format unchanged. v1.6 archives carry the same
TCIPmagic
internally as v1.5; existing v1.5 readers can decode v1.6 archives if you
feed them through (they only inspect the bytes, not the filename). - v1.6 still decodes everything. All historical
.ppgfiles (v1..v15),
every.ppgsarchive (v1.4–v1.5pre), and every.tciparchive (v1.5)
continue to round-trip byte-exact. -tcipflag retained as alias of-tovycip.
Validation
| Test | Result |
|---|---|
3-PNG round-trip via archive.ppg |
3/3 byte-exact |
1-PNG round-trip via image.ppg |
byte-exact, magic = TCIP |
Decode legacy v1.5 .tcip archive |
OK |
| Full feature build (kanzi+zstd+libdeflate) | clean |
Binaries
packPNG-linux-x86_64-v1.6— 770 KB, full feature build (LZMA + zstd +
libdeflate + kanzi-cpp). Stripped.packPNG-windows-x86_64-full-v1.6.exe— 2.9 MB, full feature mingw
cross-compiled, statically linked.
The Windows .exe is unsigned (mingw cross-build) — some AVs may flag it as
a generic heuristic (Trojan:Win32/Wacatac etc.). False positive; verify on
VirusTotal or build from source.
Full changelog since v1.5c
- `353010b` release: v1.6 — unify archive extension to .ppg
- `1b2367e` docs: README v1.6 — unified .ppg extension