lzma clib System & Utilities

LZMA/XZ compression. Compress, Decompress, CompressXZ, DecompressXZ, file support.

ppm install lzma

Overview

lzma wraps liblzma (the XZ Utils library), providing both the raw LZMA algorithm and the XZ container format. XZ is the standard compression format for Linux distribution packages and source tarballs, offering best-in-class compression ratio at the expense of speed.

CLib package

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

Quick Start

uses lzma;

var data := ReadFile('/data/large_dataset.json');

// XZ format — best ratio, includes integrity check
var compressed := CompressXZ(data);
var restored   := DecompressXZ(compressed);

WriteLn('Original:   ', Length(data), ' bytes');
WriteLn('Compressed: ', Length(compressed), ' bytes');
WriteLn('liblzma: ', LZMAVersion);

XZ Format (recommended)

// Compress to XZ (includes CRC64 integrity check + multi-stream support)
var xz := CompressXZ(data);
var xz9 := CompressXZLevel(data, LZMA_LEVEL_BEST);  // maximum ratio

// Decompress XZ
var back := DecompressXZ(xz);

// Check if data is a valid XZ stream
if IsXZStream(data) then
  WriteLn('XZ stream detected');

Raw LZMA

// Raw LZMA (no container — you manage integrity yourself)
var raw  := Compress(data);
var raw6 := CompressLevel(data, 6);
var back := Decompress(raw);

File Operations

// Compress to .xz (streaming, memory-efficient for large files)
CompressFile('/data/backup.tar', '/data/backup.tar.xz');

// Decompress .xz or .lzma file
DecompressFile('/data/backup.tar.xz', '/data/backup.tar');

Base64 Transport

var b64  := CompressToBase64(payload);   // XZ + base64
var back := DecompressFromBase64(b64);

Package Info

Version1.0.0
Typeclib
C Libraryliblzma (XZ Utils)
Authorgustavo

Functions

  • Compress
  • CompressLevel
  • Decompress
  • CompressXZ
  • CompressXZLevel
  • DecompressXZ
  • CompressFile
  • DecompressFile
  • CompressToBase64
  • DecompressFromBase64
  • IsXZStream
  • LZMAVersion

See Also