Skip to content

Commit 607e683

Browse files
author
Overmind
committed
release: v2.1.0 — divsufsort, LZRC fast mode, frame info API, fuzz tests
Major improvements: - Embedded libdivsufsort: BWT 2x faster - LZRC fast mode (L24): 3x faster with HC match finder - mcx_get_frame_info() public API - Fuzz roundtrip + malformed input tests - Comparison benchmark script
1 parent d398a3c commit 607e683

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22

33
All notable changes to MaxCompression are documented in this file.
44

5+
## [2.1.0] — 2026-03-18
6+
7+
### Added
8+
- **`mcx_get_frame_info()` public API** — read frame metadata without decompressing.
9+
- **Fuzz roundtrip test** — 1000 random inputs across all levels, catches edge cases.
10+
- **Malformed input test** — 7 decompressor robustness tests (corrupt data, truncated, wrong magic).
11+
- **Comparison benchmark script** (`benchmarks/compare.sh`) — MCX vs gzip/bzip2/xz.
12+
- Doxyfile for API documentation generation.
13+
- pkg-config template (`maxcomp.pc.in`).
14+
15+
### Changed
16+
- **Embedded libdivsufsort** — BWT forward transform **2× faster** (Yuta Mori, MIT license).
17+
- alice29: 0.08→0.035s, dickens: 8.76→4.43s, ooffice: 4.0→1.91s.
18+
- **LZRC fast mode (L24)** — hash chain match finder, **~3× faster** than L26 BT.
19+
- CLI `info` command now uses public `mcx_get_frame_info()` API.
20+
- CLI help shows level descriptions and L24 example.
21+
- README updated with v2.1.0 benchmarks and LZRC/divsufsort features.
22+
23+
### Fixed
24+
- MSVC compatibility for divsufsort (disabled `strings.h`, use `__inline`).
25+
26+
### Rejected experiments
27+
- 4-state LZRC machine (model dilution, no gain on any file).
28+
529
## [2.0.1] — 2026-03-18
630

731
### Added

include/maxcomp/maxcomp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ extern "C" {
4949
* ═══════════════════════════════════════════════════════════════════════ */
5050

5151
#define MCX_VERSION_MAJOR 2
52-
#define MCX_VERSION_MINOR 0
53-
#define MCX_VERSION_PATCH 1
52+
#define MCX_VERSION_MINOR 1
53+
#define MCX_VERSION_PATCH 0
5454

5555
/** Returns version as a packed integer: (major*10000 + minor*100 + patch) */
5656
MCXAPI unsigned mcx_version_number(void);

0 commit comments

Comments
 (0)