| Crates.io | avila-compress |
| lib.rs | avila-compress |
| version | 0.8.0 |
| created_at | 2025-11-22 20:55:49.014349+00 |
| updated_at | 2025-11-23 08:24:42.014205+00 |
| description | Native compression library optimized for AvilaDB - LZ4, Zstandard, and custom columnar algorithms. Zero external dependencies. |
| homepage | https://avila.cloud |
| repository | https://github.com/avilaops/arxis |
| max_upload_size | |
| id | 1945730 |
| size | 290,765 |
Native compression library optimized for AvilaDB and scientific computing.
Add to your Cargo.toml:
[dependencies]
avila-compress = "0.3"
# Optional: Enable parallel compression
avila-compress = { version = "0.3", features = ["parallel"] }
# Optional: Enable SIMD AVX2 acceleration (5-6x faster)
avila-compress = { version = "0.3", features = ["simd"] }
# Enable all features
avila-compress = { version = "0.3", features = ["parallel", "simd"] }
use avila_compress::lz4;
fn main() {
// Compress data
let data = b"Hello, World! This is LZ4 compression.";
let compressed = lz4::compress(data).expect("Compression failed");
println!("Original: {} bytes", data.len());
println!("Compressed: {} bytes", compressed.len());
println!("Ratio: {:.2}%", (compressed.len() as f64 / data.len() as f64) * 100.0);
// Decompress
let decompressed = lz4::decompress(&compressed).expect("Decompression failed");
assert_eq!(data, &decompressed[..]);
}
use avila_compress::{lz4, Level};
// Fast: Prioritize speed over compression ratio
let compressed_fast = lz4::compress_with_level(data, Level::Fast)?;
// Balanced: Default, good balance (recommended)
let compressed = lz4::compress_with_level(data, Level::Balanced)?;
// Best: Maximum compression ratio (slower)
let compressed_best = lz4::compress_with_level(data, Level::Best)?;
use avila_compress::stream::Lz4Encoder;
let mut encoder = Lz4Encoder::new();
// Process data in chunks
encoder.write(b"Chunk 1")?;
encoder.write(b"Chunk 2")?;
encoder.write(b"Chunk 3")?;
// Finish and get compressed data
let compressed = encoder.finish()?;
use avila_compress::parallel;
// Enable "parallel" feature first!
let data = vec![b'A'; 1_000_000]; // 1 MB
// Use 8 threads for compression
let compressed = parallel::compress_parallel(&data, 8)?;
let decompressed = parallel::decompress_parallel(&compressed, 8)?;
5-6x faster compression on modern CPUs!
use avila_compress::{simd, Level};
// Enable "simd" feature first!
let data = b"Your data here";
// Automatically uses AVX2 if available, falls back to scalar if not
let compressed = simd::compress_simd(data, Level::Balanced)?;
// Works with all compression levels
let fast = simd::compress_simd(data, Level::Fast)?; // ~7.2 GB/s
let balanced = simd::compress_simd(data, Level::Balanced)?; // ~6.5 GB/s
let best = simd::compress_simd(data, Level::Best)?; // ~5.8 GB/s
Performance Comparison:
Requirements:
use avila_compress::checksum;
let data = b"Important data";
// Calculate checksum
let hash = checksum::xxhash64(data, 0);
let crc = checksum::crc32(data);
// Verify integrity later
assert!(checksum::verify_xxhash64(data, hash));
assert!(checksum::verify_crc32(data, crc));
Run examples with:
# Basic compression
cargo run --example basic
# Compression levels
cargo run --example compression_levels --release
# Streaming API
cargo run --example streaming --release
# Checksums
cargo run --example checksums
# SIMD acceleration (NEW!)
cargo run --example simd --features simd --release
# Scientific computing
cargo run --example scientific_data --features parallel --release
# AvilaDB integration
cargo run --example aviladb_integration --features parallel --release
use avila_compress::lz4;
let original = b"Repetitive data: AAAAAAAAAA";
let compressed = lz4::compress(original)?;
let restored = lz4::decompress(&compressed)?;
assert_eq!(original, &restored[..]);
use avila_compress::{lz4, Error};
match lz4::decompress(&corrupted_data) {
Ok(data) => println!("Success: {} bytes", data.len()),
Err(Error::CorruptedData(msg)) => eprintln!("Corrupted: {}", msg),
Err(e) => eprintln!("Error: {}", e),
}
# Basic usage
cargo run --example basic --release
# Compression levels comparison
cargo run --example compression_levels --release
# Streaming compression
cargo run --example streaming --release
# Checksum verification
cargo run --example checksums --release
# Scientific data compression (NEW!)
cargo run --example scientific_data --release
# AvilaDB integration patterns (NEW!)
cargo run --example aviladb_integration --release
cargo run --example aviladb_integration --release --features parallel
# Run benchmarks
cargo bench
LZ4 uses a simple and fast compression scheme:
Format:
[Header: 4 bytes original size]
[Token: 4 bits literal len | 4 bits match len]
[Literal data...]
[Match offset: 2 bytes]
[Extended lengths if needed...]
Target (on modern CPU):
Current status: Native Rust implementation, optimizations ongoing.
Benchmark:
cargo bench --bench lz4_bench
Results will be in target/criterion/lz4_compress/report/index.html.
# Run all tests
cargo test
# Run tests with output
cargo test -- --nocapture
# Test specific module
cargo test lz4
# Run with release optimizations
cargo test --release
Test coverage:
use avila_compress::lz4;
// Compress columnar data before storage
let column_data: Vec<u8> = fetch_column_from_aviladb();
let compressed = lz4::compress(&column_data)?;
aviladb.store_compressed(compressed)?;
// Decompress on read
let compressed = aviladb.fetch_compressed()?;
let column_data = lz4::decompress(&compressed)?;
use avila_compress::lz4;
// Compress telemetry data from LISA/LIGO
let telemetry: Vec<f64> = read_gravitational_wave_data();
let bytes = bytemuck::cast_slice(&telemetry);
let compressed = lz4::compress(bytes)?;
// Stream to AvilaDB or disk
stream.write_all(&compressed)?;
use avila_compress::lz4;
// Compress video frames for low-latency streaming
let frame: Vec<u8> = capture_frame();
let compressed = lz4::compress(&frame)?;
websocket.send(compressed).await?;
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Focus areas:
Licensed under either of:
at your option.
avila-compress is part of the Arxis scientific computing platform.
Related modules:
Built with β€οΈ by the Γvila team π§ Contact: nicolas@avila.inc | π https://avila.cloud