Skip to content

Releases: Cranot/mzip

mzip v0.1.0 — first public release

Choose a tag to compare

@Cranot Cranot released this 10 May 07:39

First public release of mzip, a detection-based compression library.

Highlights

  • 93.2% win rate (233 / 250) on the synthetic benchmark suite (50 data types × 5 sizes), avg ratio 8.25×. All 250 roundtrips verified.
  • 27.7% win rate (13 / 47) on a real-world GitHub-files benchmark.
  • Smallest output of any standard library compressor on enwik9 prose — beats brotli:11 by 5.9%, xz/7z by 6.5%, bzip2:9 by 14.4% on 10 MB.
  • ~30 detection-based strategies including LINEAR_GEN, NUMERIC, SECTION_TEMPLATE, COLUMNAR, BWT_TEXT, BG, MC, ZSTD_DICT, E8E9_X86 + LZMA_OPTIMAL, PAETH_RGB, BASE64_DECODE.
  • Tuned BWT pipeline with capfold + word dict + LZP-after-dict + multi-tree Huffman, per-block dynamic trial.
  • Encode-side roundtrip verification — the encoder verifies its own output before returning, falling back to the next-best valid candidate when a strategy produces non-roundtrippable bytes.

Speed trade-off

mzip is roughly 38× slower to decompress than zstd. Use mzip when you write once and read often, or when ratio matters more than millisecond-scale read latency. For latency-critical reads, use zstd.

What's not in scope yet

  • Streaming / incremental decode — full-buffer API only.
  • Bzip3-class context-mixing arithmetic coder — see BWT_ROADMAP.md for the planned path.

Install

C++17 + zstd. Single-header build available via `mzip_amalgamated.hpp`. See README for OS-specific install commands and build flags.

License

AGPL-3.0 OR commercial. Open an issue tagged `commercial-license` for proprietary use.