Release Notes
This release brings first-class big-endian architecture support, a new machine-readable JSON output mode for the CLI, and targeted safety fixes, making ZXC more portable, scriptable, and robust across platforms.
Changes
Big-Endian Architecture Support
ZXC now correctly compresses and decompresses data on big-endian systems. This is a foundational portability milestone.
- Endianness Detection: Compile-time detection with byte-swap macros for 16, 32, and 64-bit values integrated into all read/store functions.
- Multi-Architecture CI: New
multiarch.ymlworkflow with tiered architecture support via QEMU emulation:
Tier 1: Core architectures
Tier 2: Extended Linux architectures
Tier 3: Experimental and old architectures - API Update:
zxc_compress_boundandzxc_get_decompressed_sizenow return uint64_t instead of size_t to prevent overflow on platforms with smaller size_t. - Wrapper Updates: Rust and Python wrappers updated with correct type casts for the new return types.
JSON Output for CLI
The CLI now supports structured JSON output for seamless integration with scripts and pipelines.
- New Flags:
--json/-jproduce machine-readable JSON for all info commands. - Supported Commands:
list,benchmark, andtest(integrity check) all emit JSON output. - Comprehensive Tests: New CLI test suite covering single/multiple files, valid/corrupt scenarios.
Bug Fixes & Safety
- Fix Out-of-Bounds Read (#89): Added branchless bounds check in
zxc_le_partialto prevent potential buffer overflow whenn > sizeof(uint64_t). Resolves-Wstringop-overflowcompiler warnings on GCC. - ClusterFuzzLite Compatibility: Workaround for Docker 29+ API incompatibility with ClusterFuzzLite v1 (temporary Docker downgrade in CI).
Full Changelog: v0.6.3...v0.7.0