7 releases
Uses new Rust 2024
| 0.1.1 | Aug 29, 2025 |
|---|---|
| 0.1.0 | Mar 26, 2025 |
| 0.0.6 | Mar 25, 2025 |
#350 in Compression
17KB
295 lines
sharc
Simple High-speed ARChiver
sharc is a very fast file archiver, using the density compression library. It is ideal when speed is paramount, followed by compression ratio - although excellent ratios can be achieved with certain settings on low entropy data.
sharc uses parallel processing to achieve maximum encode/decode performance, and is thus particularly efficient with large files. Data integrity is verified using the fast, non-cryptographic seahash hashing algorithm.
Build
sharc can be built on rust-compatible platforms. First use rustup to install rust.
a) get the source code:
git clone https://github.com/g1mv/sharc.git
cd sharc
b) build and print help:
RUSTFLAGS="-C target-cpu=native" cargo build --release
target/release/sharc -h
Output file format
The .sharc file format consists of a header, followed by a sequence of blocks. The header has the following structure:
| Header | Algorithm used | Block size MB |
|---|---|---|
| 5 bytes | 1 byte | 2 bytes |
The sequence of blocks has the following structure:
| Encoded block size (ebs) | Encoded block | Block hash |
|---|---|---|
| 8 bytes | {ebs} bytes | 8 bytes |
General usage
To compress a file named 'test.file' into 'test.file.sharc' using the default algorithm (density cheetah):
sharc test.file
To decompress 'test.file.sharc',
unsharc test.file.sharc
Algorithm selection
Compression algorithm can be selected with the -a option.
| Algorithm | Speed rank | Ratio rank |
|---|---|---|
| chameleon | 1st | 3rd |
| cheetah | 2nd | 2nd |
| lion | 3rd | 1st |
For example, to use the fastest available algorithm (density chameleon):
sharc -a chameleon test.file
Other options
For further information on all other options:
sharc -h
Dependencies
~7MB
~59K SLoC