Skip to content

v1.6 — unified .ppg extension

Choose a tag to compare

@YadeWira YadeWira released this 30 Apr 13:50
· 22 commits to master since this release

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 TCIP magic
    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 .ppg files (v1..v15),
    every .ppgs archive (v1.4–v1.5pre), and every .tcip archive (v1.5)
    continue to round-trip byte-exact.
  • -tcip flag 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