lz4 clib System & Utilities

LZ4 ultra-fast compression. Compress, Decompress, CompressHC, frame format, file support.

ppm install lz4

Overview

lz4 wraps the LZ4 library — the fastest general-purpose compressor available, achieving decompression speeds of 4–7 GB/s on modern hardware. LZ4 is used in Linux kernels, databases, network protocols, and real-time data pipelines where latency beats ratio.

CLib package

Requires liblz4-dev. Ubuntu/Debian: sudo apt install liblz4-dev

Speed vs Ratio Trade-off

LZ4
~500 MB/s compress, ~4 GB/s decompress
LZ4 HC
~80 MB/s compress, ~4 GB/s decompress
zstd
~400 MB/s compress, ~1.5 GB/s decompress

Quick Start — Frame Format

uses lz4;

var data := ReadFile('/data/stream.bin');

// Frame format: self-contained (includes size + magic)
var packed := CompressFrame(data);
var back   := DecompressFrame(packed);

WriteLn('Original:   ', Length(data), ' bytes');
WriteLn('Compressed: ', Length(packed), ' bytes');
WriteLn('Version:    ', LZ4Version);

Block API (low overhead)

// Block format: fastest, but you must store original size separately
var packed := Compress(data);
var back   := Decompress(packed, Length(data));   // must pass original size

// High-Compression mode: same fast decompression, better ratio
var hc := CompressHC(data);
var hc12 := CompressHCLevel(data, LZ4HC_LEVEL_MAX);  // level 12

Frame API (recommended for storage)

// Frame format stores the original size — no need to remember it
var packed := CompressFrame(data);
var hcpacked := CompressFrameHC(data, LZ4HC_LEVEL_DEFAULT);  // better ratio

// Decompression reads size from header automatically
var back := DecompressFrame(packed);

// Check if data is LZ4 frame
if IsLZ4Frame(data) then
  WriteLn('Valid LZ4 frame, size: ', CompressBound(Length(data)));

File Compression

// Standard LZ4 (fastest)
CompressFile('/data/access.log', '/data/access.log.lz4');

// High-compression mode
CompressFileHC('/data/large.bin', '/data/large.bin.lz4', 9);

// Decompress
DecompressFile('/data/access.log.lz4', '/data/access.log');

When to Use LZ4

LZ4 shines for real-time scenarios: network serialization, in-memory caches, write-ahead logs, live telemetry. Use CompressHC when you want better ratio and can afford slower compression (decompression stays equally fast).

Package Info

Version1.0.0
Typeclib
C Libraryliblz4
Authorgustavo

Functions

  • Compress
  • CompressHC
  • CompressHCLevel
  • Decompress
  • CompressFrame
  • CompressFrameHC
  • DecompressFrame
  • CompressFile
  • CompressFileHC
  • DecompressFile
  • IsLZ4Frame
  • CompressBound
  • LZ4Version

See Also