lz4_flex 0.3.6

Pure Rust implementation of raw LZ4 compression/decompression.
Documentation

Rust Docs Crates.io

lz4_flex

lz4_flex_logo

Configurable, pure rust, high performance implementation of LZ4 compression with fast compile times.

Features

  • Very good logo
  • LZ4 Block format
  • High performance
  • 1s clean release build time
  • feature flags to configure safe/unsafe code usage

Usage:

use lz4_flex::{compress_prepend_size, decompress_size_prepended};

fn main(){
    let input: &[u8] = b"Hello people, what's up?";
    let compressed = compress_prepend_size(input);
    let uncompressed = decompress_size_prepended(&compressed).unwrap();
    assert_eq!(input, uncompressed);
}

Benchmarks

The benchmark is run with criterion on set of test files are in the folder benches.

Currently 3 implementations are compared, this one, the redox version and the c++ version via rust bindings

cargo bench

Results v0.3 18-10-2020

Executed on Macbook Pro 2017 i7

Compress

Decompress

Fuzzer

This fuzz target fuzzes, and asserts compression and decompression returns the original input. cargo fuzz run fuzz_roundtrip

This fuzz target fuzzes, and asserts compression with cpp and decompression returns the original input. cargo fuzz run fuzz_roundtrip_cpp_compress

TODO

  • Frame format
  • High compression
  • no unsafe version for decompression