Releases: SamDreamsMaker/Max-Compression
Releases · SamDreamsMaker/Max-Compression
v2.2.0
MaxCompression v2.2.0
Downloads
| Platform | File |
|---|---|
| Linux x64 | mcx-linux-x64.tar.gz |
| macOS ARM64 | mcx-macos-arm64.tar.gz |
| Windows x64 | mcx-windows-x64.zip |
Quick Start
# Linux/macOS
tar xzf mcx-*.tar.gz
./mcx-*/mcx compress myfile.txt
# Build from source
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)See CHANGELOG.md for full details.
Full Changelog: v2.1.1...v2.2.0
MaxCompression v2.1.1
Changelog
All notable changes to MaxCompression are documented in this file.
[2.1.1] — 2026-03-19
Added
mcx testself-test command — verifies all compression levels in one command.-q/--quietflag — suppress non-error output for scripting.- Edge case tests — boundary conditions, patterns, frame info validation.
- GitHub issue templates (bug report + feature request).
- SECURITY.md — vulnerability disclosure policy.
- .editorconfig — consistent code style across editors.
- CI status badge and version badge in README.
Changed
- rANS entropy for LZ blocks — 0.5-2% smaller than FSE at L1-L9.
- alice29 L6: 65739→63814 (-2.9%), L9: 64442→62728 (-2.9%).
- AAC enabled at L7+ (was L9+) — better ratio at moderate speed.
- Larger HC hash table (1M entries) — L6 -1.4%, L9 -0.9%.
- Better greedy hash populating — L1 -3.7% ratio improvement.
- Scaled LZ hash table with input size — +65% decompress speed on small files.
- rANS decoder unrolled — 2 symbols per iteration.
- BWT inverse prefetch for blocks >256KB (+5% decompress on large files).
- RC_UNLIKELY branch hints for range coder normalize.
- Updated ROADMAP.md with rejected experiments table.
- Updated API.md with
mcx_get_frame_infodocumentation. - Updated man page with
-q/--quietflag and L24 level.
[2.1.0] — 2026-03-18
Added
mcx_get_frame_info()public API — read frame metadata without decompressing.- Fuzz roundtrip test — 1000 random inputs across all levels, catches edge cases.
- Malformed input test — 7 decompressor robustness tests (corrupt data, truncated, wrong magic).
- Comparison benchmark script (
benchmarks/compare.sh) — MCX vs gzip/bzip2/xz. - Doxyfile for API documentation generation.
- pkg-config template (
maxcomp.pc.in).
Changed
- Embedded libdivsufsort — BWT forward transform 2× faster (Yuta Mori, MIT license).
- alice29: 0.08→0.035s, dickens: 8.76→4.43s, ooffice: 4.0→1.91s.
- LZRC fast mode (L24) — hash chain match finder, ~3× faster than L26 BT.
- CLI
infocommand now uses publicmcx_get_frame_info()API. - CLI help shows level descriptions and L24 example.
- README updated with v2.1.0 benchmarks and LZRC/divsufsort features.
Fixed
- MSVC compatibility for divsufsort (disabled
strings.h, use__inline).
Rejected experiments
- 4-state LZRC machine (model dilution, no gain on any file).
[2.0.1] — 2026-03-18
Added
mcx bench <file>command — benchmark all compression levels with speed/ratio comparison.- Man page (
docs/mcx.1). - Hash chain match finder (
hc_match.c) — 4× faster alternative for future speed modes. - PyPI publish workflow (
.github/workflows/pypi.yml) +pyproject.toml. - L26 (LZRC) roundtrip test in CI.
- Python bindings:
version()andcompress_bound()functions.
Changed
- MTF decode +67% faster — replaced byte loop with
memmove(29→49 MB/s). - RC decoder inline — decompress +19–36% (cross-TU inlining of hot path).
- RC encoder inline — compress +57–113%.
- BT depth 64→32 — same ratio, ~7% faster compression.
- Portable bench timing (Windows
QueryPerformanceCounter, POSIXclock_gettime).
Fixed
- CI: Windows
__builtin_ctzll→mcx_ctzll()portability. - CI: OpenMP optional (
find_package(QUIET)). - CI:
_GNU_SOURCEforbench_fast.c. - CI: Missing
preprocess.hinclude ingenetic.c.
[2.0.0] — 2026-03-18
Added
- LZRC v2.0 engine — LZ + adaptive range coder with binary tree match finder (16 MB window).
- Lazy evaluation: universal +1–5% improvement.
- 4 rep distances (rep0–rep3): cheaper repeat match encoding.
- LZMA-style matched literal coding: bit-level prediction from match reference.
- Integrated as block type
0xB0(L26) + multi-trial at L20. - Binary data auto-routed to LZRC at L20+ — mozilla: 2.93× → 3.22× (+10%).
- Smart routing: text→BWT, binary→LZRC, stride→delta, x86→E8/E9.
- GitHub Actions CI: Linux (GCC + Clang), macOS, Windows.
- Automated release workflow with pre-built binaries.
CONTRIBUTING.md,docs/DESIGN.md, Doxyfile for API documentation.- Python bindings packaging (
setup.py). - SemVer tagging (
v1.9.3,v2.0.0).
Changed
- Silesia total: 4.21× → 4.35× (+3.3%) thanks to LZRC routing.
- MCX L20 now beats xz on 7/12 Silesia files (was 6/12).
- Total competitive with xz -9 (~4.35× vs ~4.34×).
Fixed
- Cross-platform portability:
mcx_ctzll()for MSVC, optional OpenMP. - Implicit function declarations fixed for Clang strict mode.
_GNU_SOURCEadded tobench_fast.cforCLOCK_MONOTONIC.
[1.9.3] — 2026-03-18
Added
- LZRC v2.0 prototype — LZ + range coder with binary tree match finder (16 MB window). mozilla: 3.07× (best LZ result, +5% vs BWT L20).
- Adaptive arithmetic coding (AAC) on LZ output at L9+ — order-1 model with Fenwick-tree accelerated decoding.
- 64 MB block size — up from 32 MB. webster +2.1%, mozilla +0.3%.
Fixed
- L12 genome optimizer — was skipping BWT on binary files. Silesia L12 total: 2.91× → 4.16× (+43%). nci: 3.29× → 25.65× (+680%).
- CLI version string now derived from header constants (was hardcoded).
- Fenwick tree decoder — merged
find+queryinto single tree walk. Decompress +2–5%.
Changed
- AAC only active at L9+ (was L6+). L6 keeps FSE for faster decompression (19 MB/s vs 3 MB/s).
- Multi-rANS speed: precomputed log2 LUT + sparse symbol lists + uint16 freqs. 41.5s → 12.1s on mr (-71%).
[1.9.2] — 2026-03-18
Added
- Adaptive arithmetic coding (AAC) — order-1 AC for LZ output. kennedy L9: 4.87× → 9.04× (+86%).
- E8/E9 x86 filter — auto-detects executables (≥0.5% E8/E9 opcodes). ooffice: 2.18× → 2.53× (+16%).
[1.9.1] — 2026-03-17
Added
- LZ-HC hash chains (depth 8/16). alice29 L9: 2.14× → 2.31× (+8%).
- CLI uses one-shot API for files ≤256 MB. alice29 CLI: 1.91× → 3.53×.
Changed
- Block size: 32 MB (up from 16 MB).
[1.9.0] — 2026-03-17
Added
- E8/E9 x86 filter with auto-detection and multi-trial.
- 32 MB blocks.
[1.8.1] — 2026-03-17
Added
- Multi-rANS speed optimizations: precomputed LUT, sparse active lists, uint16 group freqs. Total: 41.5s → 12.1s (-71%).
[1.8.0] — 2026-03-17
Added
- Sequential K-means initialization for multi-table rANS. alice29: 43268 → 43144 bytes. Beats bzip2 (43207).
- 15 K-means iterations (was 10).
[1.7.8] — 2026-03-17
Added
- Varint frequency tables for multi-rANS. Saves ~300 bytes per block. kennedy: 46.92× → 48.73×.
- Adaptive table count (4, 5, or 6 tables, keeps smallest).
[1.7.7] — 2026-03-17
Added
- Bitmap table format for multi-rANS (32-byte bitmap + varint freqs per active symbol).
[1.7.5] — 2026-03-17
Changed
- Block size: 16 MB (up from 8 MB). Beats bzip2 on 11/12 Silesia files.
[1.7.1] — 2026-03-17
Fixed
- Route ALL data types to BWT first (binary was incorrectly routed to LZ24). xml: 6.80× → 12.45× (+83%).
[1.7.0] — 2026-03-17
Fixed
- Text routing: removed 4 MB → LZ24 rule. dickens: 2.21× → 3.69× (+67%).
[1.6.0] — 2026-03-17
Added
- Multi-table rANS — 4 frequency tables with K-means clustering, group size 50. Near bzip2 on text.
[1.5.1] — 2026-03-17
Added
- RLE2 on stride-delta output. ptt5: 8.83× → 10.19× (+15%).
[1.5.0] — 2026-03-16
Added
- Delta-fix — forced
delta=0for text. +13–35% on ALL text files. - Auto-RLE2 for all BWT levels (L10+). L12 = L20 on text.
- BWT threshold lowered 8 KB → 1 KB.
- rANS precision bumped to 14-bit.
[1.4.0] — 2026-03-16
Added
- Stride-Delta + BWT + RLE2 pipeline. kennedy.xls: 46.91× (2.2× better than xz).
[1.3.0] — 2026-03-16
Added
- RLE2 (RUNA/RUNB) — exponential zero-run encoding. +5–7% on text.
- Smart Mode (L20+) with auto data-type routing.
[1.2.0] — 2026-03-16
Added
- LZ24 (16 MB window, hash chains, lazy evaluation).
- Stride-delta transform with auto-detection.
[1.1.0] — 2026-03-14
Added
- 4-stream interleaved tANS (+64% decompress speed).
- CM-rANS (order-1 context-mixing entropy coder).
[1.0.0] — 2026-03-12
Added
- Initial release.
- LZ77 (greedy + lazy), BWT (SA-IS), tANS/FSE, rANS.
- Genetic pipeline optimizer.
- Multi-stream LZ77 with repcode stack.
- SIMD SSE4.1 hash computation.
MaxCompression v2.1.0
Changelog
All notable changes to MaxCompression are documented in this file.
[2.1.0] — 2026-03-18
Added
mcx_get_frame_info()public API — read frame metadata without decompressing.- Fuzz roundtrip test — 1000 random inputs across all levels, catches edge cases.
- Malformed input test — 7 decompressor robustness tests (corrupt data, truncated, wrong magic).
- Comparison benchmark script (
benchmarks/compare.sh) — MCX vs gzip/bzip2/xz. - Doxyfile for API documentation generation.
- pkg-config template (
maxcomp.pc.in).
Changed
- Embedded libdivsufsort — BWT forward transform 2× faster (Yuta Mori, MIT license).
- alice29: 0.08→0.035s, dickens: 8.76→4.43s, ooffice: 4.0→1.91s.
- LZRC fast mode (L24) — hash chain match finder, ~3× faster than L26 BT.
- CLI
infocommand now uses publicmcx_get_frame_info()API. - CLI help shows level descriptions and L24 example.
- README updated with v2.1.0 benchmarks and LZRC/divsufsort features.
Fixed
- MSVC compatibility for divsufsort (disabled
strings.h, use__inline).
Rejected experiments
- 4-state LZRC machine (model dilution, no gain on any file).
[2.0.1] — 2026-03-18
Added
mcx bench <file>command — benchmark all compression levels with speed/ratio comparison.- Man page (
docs/mcx.1). - Hash chain match finder (
hc_match.c) — 4× faster alternative for future speed modes. - PyPI publish workflow (
.github/workflows/pypi.yml) +pyproject.toml. - L26 (LZRC) roundtrip test in CI.
- Python bindings:
version()andcompress_bound()functions.
Changed
- MTF decode +67% faster — replaced byte loop with
memmove(29→49 MB/s). - RC decoder inline — decompress +19–36% (cross-TU inlining of hot path).
- RC encoder inline — compress +57–113%.
- BT depth 64→32 — same ratio, ~7% faster compression.
- Portable bench timing (Windows
QueryPerformanceCounter, POSIXclock_gettime).
Fixed
- CI: Windows
__builtin_ctzll→mcx_ctzll()portability. - CI: OpenMP optional (
find_package(QUIET)). - CI:
_GNU_SOURCEforbench_fast.c. - CI: Missing
preprocess.hinclude ingenetic.c.
[2.0.0] — 2026-03-18
Added
- LZRC v2.0 engine — LZ + adaptive range coder with binary tree match finder (16 MB window).
- Lazy evaluation: universal +1–5% improvement.
- 4 rep distances (rep0–rep3): cheaper repeat match encoding.
- LZMA-style matched literal coding: bit-level prediction from match reference.
- Integrated as block type
0xB0(L26) + multi-trial at L20. - Binary data auto-routed to LZRC at L20+ — mozilla: 2.93× → 3.22× (+10%).
- Smart routing: text→BWT, binary→LZRC, stride→delta, x86→E8/E9.
- GitHub Actions CI: Linux (GCC + Clang), macOS, Windows.
- Automated release workflow with pre-built binaries.
CONTRIBUTING.md,docs/DESIGN.md, Doxyfile for API documentation.- Python bindings packaging (
setup.py). - SemVer tagging (
v1.9.3,v2.0.0).
Changed
- Silesia total: 4.21× → 4.35× (+3.3%) thanks to LZRC routing.
- MCX L20 now beats xz on 7/12 Silesia files (was 6/12).
- Total competitive with xz -9 (~4.35× vs ~4.34×).
Fixed
- Cross-platform portability:
mcx_ctzll()for MSVC, optional OpenMP. - Implicit function declarations fixed for Clang strict mode.
_GNU_SOURCEadded tobench_fast.cforCLOCK_MONOTONIC.
[1.9.3] — 2026-03-18
Added
- LZRC v2.0 prototype — LZ + range coder with binary tree match finder (16 MB window). mozilla: 3.07× (best LZ result, +5% vs BWT L20).
- Adaptive arithmetic coding (AAC) on LZ output at L9+ — order-1 model with Fenwick-tree accelerated decoding.
- 64 MB block size — up from 32 MB. webster +2.1%, mozilla +0.3%.
Fixed
- L12 genome optimizer — was skipping BWT on binary files. Silesia L12 total: 2.91× → 4.16× (+43%). nci: 3.29× → 25.65× (+680%).
- CLI version string now derived from header constants (was hardcoded).
- Fenwick tree decoder — merged
find+queryinto single tree walk. Decompress +2–5%.
Changed
- AAC only active at L9+ (was L6+). L6 keeps FSE for faster decompression (19 MB/s vs 3 MB/s).
- Multi-rANS speed: precomputed log2 LUT + sparse symbol lists + uint16 freqs. 41.5s → 12.1s on mr (-71%).
[1.9.2] — 2026-03-18
Added
- Adaptive arithmetic coding (AAC) — order-1 AC for LZ output. kennedy L9: 4.87× → 9.04× (+86%).
- E8/E9 x86 filter — auto-detects executables (≥0.5% E8/E9 opcodes). ooffice: 2.18× → 2.53× (+16%).
[1.9.1] — 2026-03-17
Added
- LZ-HC hash chains (depth 8/16). alice29 L9: 2.14× → 2.31× (+8%).
- CLI uses one-shot API for files ≤256 MB. alice29 CLI: 1.91× → 3.53×.
Changed
- Block size: 32 MB (up from 16 MB).
[1.9.0] — 2026-03-17
Added
- E8/E9 x86 filter with auto-detection and multi-trial.
- 32 MB blocks.
[1.8.1] — 2026-03-17
Added
- Multi-rANS speed optimizations: precomputed LUT, sparse active lists, uint16 group freqs. Total: 41.5s → 12.1s (-71%).
[1.8.0] — 2026-03-17
Added
- Sequential K-means initialization for multi-table rANS. alice29: 43268 → 43144 bytes. Beats bzip2 (43207).
- 15 K-means iterations (was 10).
[1.7.8] — 2026-03-17
Added
- Varint frequency tables for multi-rANS. Saves ~300 bytes per block. kennedy: 46.92× → 48.73×.
- Adaptive table count (4, 5, or 6 tables, keeps smallest).
[1.7.7] — 2026-03-17
Added
- Bitmap table format for multi-rANS (32-byte bitmap + varint freqs per active symbol).
[1.7.5] — 2026-03-17
Changed
- Block size: 16 MB (up from 8 MB). Beats bzip2 on 11/12 Silesia files.
[1.7.1] — 2026-03-17
Fixed
- Route ALL data types to BWT first (binary was incorrectly routed to LZ24). xml: 6.80× → 12.45× (+83%).
[1.7.0] — 2026-03-17
Fixed
- Text routing: removed 4 MB → LZ24 rule. dickens: 2.21× → 3.69× (+67%).
[1.6.0] — 2026-03-17
Added
- Multi-table rANS — 4 frequency tables with K-means clustering, group size 50. Near bzip2 on text.
[1.5.1] — 2026-03-17
Added
- RLE2 on stride-delta output. ptt5: 8.83× → 10.19× (+15%).
[1.5.0] — 2026-03-16
Added
- Delta-fix — forced
delta=0for text. +13–35% on ALL text files. - Auto-RLE2 for all BWT levels (L10+). L12 = L20 on text.
- BWT threshold lowered 8 KB → 1 KB.
- rANS precision bumped to 14-bit.
[1.4.0] — 2026-03-16
Added
- Stride-Delta + BWT + RLE2 pipeline. kennedy.xls: 46.91× (2.2× better than xz).
[1.3.0] — 2026-03-16
Added
- RLE2 (RUNA/RUNB) — exponential zero-run encoding. +5–7% on text.
- Smart Mode (L20+) with auto data-type routing.
[1.2.0] — 2026-03-16
Added
- LZ24 (16 MB window, hash chains, lazy evaluation).
- Stride-delta transform with auto-detection.
[1.1.0] — 2026-03-14
Added
- 4-stream interleaved tANS (+64% decompress speed).
- CM-rANS (order-1 context-mixing entropy coder).
[1.0.0] — 2026-03-12
Added
- Initial release.
- LZ77 (greedy + lazy), BWT (SA-IS), tANS/FSE, rANS.
- Genetic pipeline optimizer.
- Multi-stream LZ77 with repcode stack.
- SIMD SSE4.1 hash computation.
MaxCompression v2.0.1
Changelog
All notable changes to MaxCompression are documented in this file.
[2.0.1] — 2026-03-18
Added
mcx bench <file>command — benchmark all compression levels with speed/ratio comparison.- Man page (
docs/mcx.1). - Hash chain match finder (
hc_match.c) — 4× faster alternative for future speed modes. - PyPI publish workflow (
.github/workflows/pypi.yml) +pyproject.toml. - L26 (LZRC) roundtrip test in CI.
- Python bindings:
version()andcompress_bound()functions.
Changed
- MTF decode +67% faster — replaced byte loop with
memmove(29→49 MB/s). - RC decoder inline — decompress +19–36% (cross-TU inlining of hot path).
- RC encoder inline — compress +57–113%.
- BT depth 64→32 — same ratio, ~7% faster compression.
- Portable bench timing (Windows
QueryPerformanceCounter, POSIXclock_gettime).
Fixed
- CI: Windows
__builtin_ctzll→mcx_ctzll()portability. - CI: OpenMP optional (
find_package(QUIET)). - CI:
_GNU_SOURCEforbench_fast.c. - CI: Missing
preprocess.hinclude ingenetic.c.
[2.0.0] — 2026-03-18
Added
- LZRC v2.0 engine — LZ + adaptive range coder with binary tree match finder (16 MB window).
- Lazy evaluation: universal +1–5% improvement.
- 4 rep distances (rep0–rep3): cheaper repeat match encoding.
- LZMA-style matched literal coding: bit-level prediction from match reference.
- Integrated as block type
0xB0(L26) + multi-trial at L20. - Binary data auto-routed to LZRC at L20+ — mozilla: 2.93× → 3.22× (+10%).
- Smart routing: text→BWT, binary→LZRC, stride→delta, x86→E8/E9.
- GitHub Actions CI: Linux (GCC + Clang), macOS, Windows.
- Automated release workflow with pre-built binaries.
CONTRIBUTING.md,docs/DESIGN.md, Doxyfile for API documentation.- Python bindings packaging (
setup.py). - SemVer tagging (
v1.9.3,v2.0.0).
Changed
- Silesia total: 4.21× → 4.35× (+3.3%) thanks to LZRC routing.
- MCX L20 now beats xz on 7/12 Silesia files (was 6/12).
- Total competitive with xz -9 (~4.35× vs ~4.34×).
Fixed
- Cross-platform portability:
mcx_ctzll()for MSVC, optional OpenMP. - Implicit function declarations fixed for Clang strict mode.
_GNU_SOURCEadded tobench_fast.cforCLOCK_MONOTONIC.
[1.9.3] — 2026-03-18
Added
- LZRC v2.0 prototype — LZ + range coder with binary tree match finder (16 MB window). mozilla: 3.07× (best LZ result, +5% vs BWT L20).
- Adaptive arithmetic coding (AAC) on LZ output at L9+ — order-1 model with Fenwick-tree accelerated decoding.
- 64 MB block size — up from 32 MB. webster +2.1%, mozilla +0.3%.
Fixed
- L12 genome optimizer — was skipping BWT on binary files. Silesia L12 total: 2.91× → 4.16× (+43%). nci: 3.29× → 25.65× (+680%).
- CLI version string now derived from header constants (was hardcoded).
- Fenwick tree decoder — merged
find+queryinto single tree walk. Decompress +2–5%.
Changed
- AAC only active at L9+ (was L6+). L6 keeps FSE for faster decompression (19 MB/s vs 3 MB/s).
- Multi-rANS speed: precomputed log2 LUT + sparse symbol lists + uint16 freqs. 41.5s → 12.1s on mr (-71%).
[1.9.2] — 2026-03-18
Added
- Adaptive arithmetic coding (AAC) — order-1 AC for LZ output. kennedy L9: 4.87× → 9.04× (+86%).
- E8/E9 x86 filter — auto-detects executables (≥0.5% E8/E9 opcodes). ooffice: 2.18× → 2.53× (+16%).
[1.9.1] — 2026-03-17
Added
- LZ-HC hash chains (depth 8/16). alice29 L9: 2.14× → 2.31× (+8%).
- CLI uses one-shot API for files ≤256 MB. alice29 CLI: 1.91× → 3.53×.
Changed
- Block size: 32 MB (up from 16 MB).
[1.9.0] — 2026-03-17
Added
- E8/E9 x86 filter with auto-detection and multi-trial.
- 32 MB blocks.
[1.8.1] — 2026-03-17
Added
- Multi-rANS speed optimizations: precomputed LUT, sparse active lists, uint16 group freqs. Total: 41.5s → 12.1s (-71%).
[1.8.0] — 2026-03-17
Added
- Sequential K-means initialization for multi-table rANS. alice29: 43268 → 43144 bytes. Beats bzip2 (43207).
- 15 K-means iterations (was 10).
[1.7.8] — 2026-03-17
Added
- Varint frequency tables for multi-rANS. Saves ~300 bytes per block. kennedy: 46.92× → 48.73×.
- Adaptive table count (4, 5, or 6 tables, keeps smallest).
[1.7.7] — 2026-03-17
Added
- Bitmap table format for multi-rANS (32-byte bitmap + varint freqs per active symbol).
[1.7.5] — 2026-03-17
Changed
- Block size: 16 MB (up from 8 MB). Beats bzip2 on 11/12 Silesia files.
[1.7.1] — 2026-03-17
Fixed
- Route ALL data types to BWT first (binary was incorrectly routed to LZ24). xml: 6.80× → 12.45× (+83%).
[1.7.0] — 2026-03-17
Fixed
- Text routing: removed 4 MB → LZ24 rule. dickens: 2.21× → 3.69× (+67%).
[1.6.0] — 2026-03-17
Added
- Multi-table rANS — 4 frequency tables with K-means clustering, group size 50. Near bzip2 on text.
[1.5.1] — 2026-03-17
Added
- RLE2 on stride-delta output. ptt5: 8.83× → 10.19× (+15%).
[1.5.0] — 2026-03-16
Added
- Delta-fix — forced
delta=0for text. +13–35% on ALL text files. - Auto-RLE2 for all BWT levels (L10+). L12 = L20 on text.
- BWT threshold lowered 8 KB → 1 KB.
- rANS precision bumped to 14-bit.
[1.4.0] — 2026-03-16
Added
- Stride-Delta + BWT + RLE2 pipeline. kennedy.xls: 46.91× (2.2× better than xz).
[1.3.0] — 2026-03-16
Added
- RLE2 (RUNA/RUNB) — exponential zero-run encoding. +5–7% on text.
- Smart Mode (L20+) with auto data-type routing.
[1.2.0] — 2026-03-16
Added
- LZ24 (16 MB window, hash chains, lazy evaluation).
- Stride-delta transform with auto-detection.
[1.1.0] — 2026-03-14
Added
- 4-stream interleaved tANS (+64% decompress speed).
- CM-rANS (order-1 context-mixing entropy coder).
[1.0.0] — 2026-03-12
Added
- Initial release.
- LZ77 (greedy + lazy), BWT (SA-IS), tANS/FSE, rANS.
- Genetic pipeline optimizer.
- Multi-stream LZ77 with repcode stack.
- SIMD SSE4.1 hash computation.
MaxCompression v2.0.0
Changelog
All notable changes to MaxCompression are documented in this file.
[2.0.0] — 2026-03-18
Added
- LZRC v2.0 engine — LZ + adaptive range coder with binary tree match finder (16 MB window).
- Lazy evaluation: universal +1–5% improvement.
- 4 rep distances (rep0–rep3): cheaper repeat match encoding.
- LZMA-style matched literal coding: bit-level prediction from match reference.
- Integrated as block type
0xB0(L26) + multi-trial at L20. - Binary data auto-routed to LZRC at L20+ — mozilla: 2.93× → 3.22× (+10%).
- Smart routing: text→BWT, binary→LZRC, stride→delta, x86→E8/E9.
- GitHub Actions CI: Linux (GCC + Clang), macOS, Windows.
- Automated release workflow with pre-built binaries.
CONTRIBUTING.md,docs/DESIGN.md, Doxyfile for API documentation.- Python bindings packaging (
setup.py). - SemVer tagging (
v1.9.3,v2.0.0).
Changed
- Silesia total: 4.21× → 4.35× (+3.3%) thanks to LZRC routing.
- MCX L20 now beats xz on 7/12 Silesia files (was 6/12).
- Total competitive with xz -9 (~4.35× vs ~4.34×).
Fixed
- Cross-platform portability:
mcx_ctzll()for MSVC, optional OpenMP. - Implicit function declarations fixed for Clang strict mode.
_GNU_SOURCEadded tobench_fast.cforCLOCK_MONOTONIC.
[1.9.3] — 2026-03-18
Added
- LZRC v2.0 prototype — LZ + range coder with binary tree match finder (16 MB window). mozilla: 3.07× (best LZ result, +5% vs BWT L20).
- Adaptive arithmetic coding (AAC) on LZ output at L9+ — order-1 model with Fenwick-tree accelerated decoding.
- 64 MB block size — up from 32 MB. webster +2.1%, mozilla +0.3%.
Fixed
- L12 genome optimizer — was skipping BWT on binary files. Silesia L12 total: 2.91× → 4.16× (+43%). nci: 3.29× → 25.65× (+680%).
- CLI version string now derived from header constants (was hardcoded).
- Fenwick tree decoder — merged
find+queryinto single tree walk. Decompress +2–5%.
Changed
- AAC only active at L9+ (was L6+). L6 keeps FSE for faster decompression (19 MB/s vs 3 MB/s).
- Multi-rANS speed: precomputed log2 LUT + sparse symbol lists + uint16 freqs. 41.5s → 12.1s on mr (-71%).
[1.9.2] — 2026-03-18
Added
- Adaptive arithmetic coding (AAC) — order-1 AC for LZ output. kennedy L9: 4.87× → 9.04× (+86%).
- E8/E9 x86 filter — auto-detects executables (≥0.5% E8/E9 opcodes). ooffice: 2.18× → 2.53× (+16%).
[1.9.1] — 2026-03-17
Added
- LZ-HC hash chains (depth 8/16). alice29 L9: 2.14× → 2.31× (+8%).
- CLI uses one-shot API for files ≤256 MB. alice29 CLI: 1.91× → 3.53×.
Changed
- Block size: 32 MB (up from 16 MB).
[1.9.0] — 2026-03-17
Added
- E8/E9 x86 filter with auto-detection and multi-trial.
- 32 MB blocks.
[1.8.1] — 2026-03-17
Added
- Multi-rANS speed optimizations: precomputed LUT, sparse active lists, uint16 group freqs. Total: 41.5s → 12.1s (-71%).
[1.8.0] — 2026-03-17
Added
- Sequential K-means initialization for multi-table rANS. alice29: 43268 → 43144 bytes. Beats bzip2 (43207).
- 15 K-means iterations (was 10).
[1.7.8] — 2026-03-17
Added
- Varint frequency tables for multi-rANS. Saves ~300 bytes per block. kennedy: 46.92× → 48.73×.
- Adaptive table count (4, 5, or 6 tables, keeps smallest).
[1.7.7] — 2026-03-17
Added
- Bitmap table format for multi-rANS (32-byte bitmap + varint freqs per active symbol).
[1.7.5] — 2026-03-17
Changed
- Block size: 16 MB (up from 8 MB). Beats bzip2 on 11/12 Silesia files.
[1.7.1] — 2026-03-17
Fixed
- Route ALL data types to BWT first (binary was incorrectly routed to LZ24). xml: 6.80× → 12.45× (+83%).
[1.7.0] — 2026-03-17
Fixed
- Text routing: removed 4 MB → LZ24 rule. dickens: 2.21× → 3.69× (+67%).
[1.6.0] — 2026-03-17
Added
- Multi-table rANS — 4 frequency tables with K-means clustering, group size 50. Near bzip2 on text.
[1.5.1] — 2026-03-17
Added
- RLE2 on stride-delta output. ptt5: 8.83× → 10.19× (+15%).
[1.5.0] — 2026-03-16
Added
- Delta-fix — forced
delta=0for text. +13–35% on ALL text files. - Auto-RLE2 for all BWT levels (L10+). L12 = L20 on text.
- BWT threshold lowered 8 KB → 1 KB.
- rANS precision bumped to 14-bit.
[1.4.0] — 2026-03-16
Added
- Stride-Delta + BWT + RLE2 pipeline. kennedy.xls: 46.91× (2.2× better than xz).
[1.3.0] — 2026-03-16
Added
- RLE2 (RUNA/RUNB) — exponential zero-run encoding. +5–7% on text.
- Smart Mode (L20+) with auto data-type routing.
[1.2.0] — 2026-03-16
Added
- LZ24 (16 MB window, hash chains, lazy evaluation).
- Stride-delta transform with auto-detection.
[1.1.0] — 2026-03-14
Added
- 4-stream interleaved tANS (+64% decompress speed).
- CM-rANS (order-1 context-mixing entropy coder).
[1.0.0] — 2026-03-12
Added
- Initial release.
- LZ77 (greedy + lazy), BWT (SA-IS), tANS/FSE, rANS.
- Genetic pipeline optimizer.
- Multi-stream LZ77 with repcode stack.
- SIMD SSE4.1 hash computation.