Releases: dannyblaker/densezip
Release list
densezip v0.1.5
Full Changelog: v0.1.4...v0.1.5
v0.1.4 — a genuinely useful help page
dnz -h now actually helps:
- Examples section covering the common flows — archiving a folder, mixing files and directories,
--progress,--no-cm, extract/verify/list, anddnz update. - Recursion is explicit:
dnz adocuments that directories are added recursively. - Visible aliases: the command list shows
a [aliases: add]andx [aliases: extract]. - Every argument is documented, and the one-line about states the tool's philosophy: smallest possible output, speed deliberately sacrificed.
dnz a archive.dnzwith nothing to add is now a proper usage error at parse time.
No format or compression changes — archives are fully compatible.
Update with dnz update (v0.1.1+) or by re-running the install one-liner.
v0.1.3 — progress bar fits narrow terminals
Fixes the --progress bar leaving a trail of lines on narrow terminals:
- The bar line was padded to a fixed 90 columns, so terminals narrower than that wrapped every redraw onto a new line. Each frame is now sized to the actual terminal width (re-checked live, so resizing mid-run works too).
- On narrow terminals the bar segment shrinks first, keeping percent, elapsed, and ETA visible down to very small widths.
- Falls back to 80 columns when stderr is not a terminal.
No format or compression changes — archives are fully compatible. Update with dnz update.
Full Changelog: v0.1.2...v0.1.3
v0.1.2 — progress bar with ETA
Long packs no longer run silently:
- New
--progressflag (works ondnz a,x, andt) — renders a live bar on stderr with phase labels (planning / compressing / verifying / extracting), percent, elapsed time, and an ETA. - The ETA is honest about backend speeds: progress is counted in weighted byte-units, with the slow context-mixing backend reporting incrementally every 64 KiB from its bit loops, so the bar moves smoothly through the slow tail instead of rushing to 90% and stalling. A sliding 10-second rate window adapts the ETA as the backend mix changes.
- Off by default — output is unchanged unless you pass
--progress.
No format or compression changes — the instrumentation preserves byte order, so output is bit-identical to v0.1.1. Update with dnz update.
Full Changelog: v0.1.1...v0.1.2
v0.1.1 — built-in self-update
dnz can now update itself:
- New
dnz updatecommand — checks GitHub for the latest release and, if you're behind, downloads it (checksum-verified) and replaces the installed binary in place.--forcereinstalls even when already current. - Source builds are protected: if the running binary came from
cargo buildorcargo install,dnz updaterefuses and prints the right rebuild command instead of overwriting it. - On Windows the running
dnz.exeis renamed aside first (Windows locks running executables), with rollback if the install fails. - README gains an Updating section:
dnz update, re-running the install one-liner, version pinning viaDNZ_VERSION, and source-build updates.
No format or compression changes — archives are fully compatible.
Full Changelog: v0.1.0...v0.1.1
v0.1.0 — initial release
The first release of densezip: an archiver whose only goal is the smallest possible output — smaller than gzip -9, xz -9e, zstd --ultra -22, and 7z -mx=9 on real-world files. Speed and memory are explicitly sacrificed for ratio. The CLI command is dnz and archives use the .dnz extension.
Three stacked ideas (see the whitepaper for the full treatment):
- Recompression — embedded deflate streams (PDF, PNG, docx/xlsx, jar, gz, …) are losslessly unpacked with preflate and recompressed with far stronger codecs; JPEGs get the same treatment via lepton. Everything is reconstructed bit-exactly.
- A context-mixing compressor (
dzcm) — a clean-room Rust implementation in the PAQ tradition: orders 0–8, word/sparse/record models, ISSE chain, logistic mixing, APM stages. Beatsxz -9eby 13–24% on the Silesia corpus. - Backend racing — every stream is compressed with zstd, brotli, LZMA, and dzcm in parallel; the smallest round-trip-verified output wins, with store as the floor so output never meaningfully expands.
Won all 20 benchmark files against the best of gzip/bzip2/xz/zstd/7z per file (see BENCHMARKS.md).
Correctness first: every transform is render-verified at pack time, every backend output is decompressed and compared, and the finished archive is read back and verified against per-file hashes. dnz t re-verifies at any time.
Prebuilt binaries for Linux x86_64/arm64, macOS Intel/Apple Silicon, and Windows x86_64 — or install with the one-liners in the README.
The format is young (v0.1) and may still change between versions — don't use .dnz as your only copy of anything yet.