README.md
April 21, 2026 ยท View on GitHub
Bindings to the ZXC compression library
A LZ77-based compressor optimized for high decompression speed
nimble install zxc
๐ Key Features
- Write-Once, Read-Many compression
- Optimized for Game Assets, Firmware & App Bundles
- High decompression speed
- Stream API for compressing/decompressing large data
- Multi-threaded Streaming API for even faster performance
- Optional Checksum Validation
- Level-based compression (Fastest, Fast, Default, Balanced and Compact)
- Reusable contexts for high-frequency call sites
- Seekable archives (Optional seek table for O(1) random access)
Installation
Use your favorite package manager to install the ZXC library, or build it from source.
Examples
Compressing and decompressing strings with mutable buffers
let original = "The quick brown fox jumps over the lazy dog ๐ฆ"
var compressed: CompZscBytes # seq[byte]
compressBytes(original, compressed, ZXC_LEVEL_DEFAULT, false)
var decompressed: DecompZscBytes # seq[byte]
decompressBytes(compressed, decompressed, false)
assert decompressed.bytesToString == original
Use ZXC's streaming API for large data or when you want to enjoy multi-threaded performance
let testFile = "test_zxc_input.txt"
let compressedFile = "test_zxc_input.txt.zxc"
let decompressedFile = "test_zxc_input_out.txt"
let content = "ZXC file streaming test!\nLine 2.\nLine 3."
compressFile(testFile, compressedFile, level = ZXC_LEVEL_DEFAULT, checksumEnabled = true)
decompressFile(compressedFile, decompressedFile, checksumEnabled = true)
assert readFile(decompressedFile) == content
Check more examples in the tests directory
todo: example with reusable contexts and seekable archives
โค Contributions & Support
- ๐ Found a bug? Create a new Issue
- ๐ Wanna help? Fork it!
- ๐ Get โฌ20 in cloud credits from Hetzner
๐ฉ License
BSD-3-Clause license. Made by Humans from OpenPeeps.
Copyright OpenPeeps & Contributors โ All rights reserved.