ZXC
lastmod 2026-02-13created 2026-02-132 edits
A high-performance asymmetric lossless compression library optimized for content delivery
About
- Designed to solve read-performance bottlenecks in content delivery and embedded systems
- Built for a compress-once, decompress-many (Read-Many) pattern: the encoder takes on the complexity while the decoder secures maximum throughput
- Decoding speed improved by 40%+ over LZ4 (Apple Silicon) , 20%+ (Google Axion, a cloud ARM chip) , and 5%+ even on x86_64
- Officially integrated into the lzbench master branch, so it can now be independently verified with a standard benchmark
- Designed around Asymmetric Efficiency, resolving the trade-off in existing codecs between symmetric speed (LZ4) and compression efficiency (Zstd)
- The encoder generates a bitstream tailored to the CPU architecture (especially ARMv8) to optimize the instruction pipeline and branch prediction
- The decoder is simplified to maximize runtime throughput
- On Apple M2, ZXC decodes up to 1.9x faster than LZ4 and has 2.7x faster throughput than Zstd
- Maintains 1.6–2.5x faster decompression on Google Axion (ARM Neoverse V2) as well
- Achieves up to 2.2x faster decoding on x86_64 (AMD EPYC) as well
- Level 1–2 (fast): for real-time assets such as games/UI, about 40% faster loading than LZ4
- Level 3–4 (balanced): a balance of speed and ratio
- Level 5 (compact): for firmware and embedded use, faster than Zstd with a higher compression ratio than LZ4
- CLI: commands for manual asset compression and benchmarking (zxc -z, zxc -d, zxc -b)
- API: a fully thread-safe (stateless) design that provides a binding-friendly API
- Streaming API: supports parallel processing of large files, including automatic thread detection and checksum verification
- Designed with a Sans-IO architecture, so you can implement language-specific I/O drivers yourself (based on zxc_sans_io.h)
- Continuous fuzzing (ClusterFuzzLite)
- Static analysis (CPPChecker, Clang)
- Dynamic verification (Valgrind, ASan/UBSan)
- A safe API design that requires explicit buffer capacities for every operation