The release of version 0.8.0 of the library and cross-platform console utility has taken place. ZXC (github.com), implementing high-performance multithreading asymmetric compression lossless and optimized for gaming resources, firmware, and application packages.
It claims to be over 40% faster in unpacking than LZ4 on ARM64, with better compression ratios.
The project is written in C and released under the BSD 3 license.
Change log:
- The format version is now 5, which "breaks" compatibility:
- LZ offset (+1) has been implemented at the format level to eliminate potential zero-offset attack vectors.
- Header checksums now use the Marsaglia xorshift algorithm.
- The new LZ77 hashing strategy and optimization of hash table configurations provide a significant performance boost across various architectures, especially at high compression levels.
- Significant improvements for compression levels 3–5, showing a compression speed increase of 33–43% on both x86_64 and ARM64 architectures.
- Noticeable improvements for faster compression levels (1 and 2), with speed increases of 10-18% on x86_64 and ~8-10% on ARM64.
- Error handling and error codes have been revamped. The Python wrapper now provides access to these C error constants to ensure improved and native error reporting.
- The ZXC_BLOCK_SIZE is no longer limited to 1 MB. The ZXC file format now officially supports block sizes up to 8 MB.
- A multi-file processing mode has been added to the console utility: the -m (or --multiple) option allows handling multiple input files in a single command. Each file is processed independently, and output file names are automatically generated from the input names (e.g., file file.txt is compressed to file.txt.xc, file file.txt.xc is unpacked to file.txt).
- A recursive directory processing mode has also been added to the console utility: the -r (or --recursive) option allows processing all files in the specified directories and their subdirectories.
- Other improvements (documentation, testing) and bug fixes.
- Version 0.8.1 only fixes the generation of the dynamic library libzxc.so.1 to maintain backward compatibility with previous versions of the library.
Source: linux.org.ru
