bzip2 clib System & Utilities

bzip2 compression. Compress, Decompress, CompressFile, DecompressFile, levels 1-9.

ppm install bzip2

Overview

bzip2 provides PascalAI bindings to libbz2, the classic block-sorting compression library. bzip2 typically achieves 20–30% better compression than gzip at the cost of slower speed, making it a good choice for archiving data where ratio matters more than latency.

CLib package

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

Quick Start

uses bzip2;

var original := 'Hello, PascalAI! ' * 1000;
var compressed := Compress(original);
var restored   := Decompress(compressed);

WriteLn('Original:   ', Length(original), ' bytes');
WriteLn('Compressed: ', Length(compressed), ' bytes');
WriteLn('Ratio:      ', Length(compressed)*100 div Length(original), '%');
WriteLn('OK: ', restored = original);

Compress / Decompress

var data := LoadFile('/data/log.txt');

// Default level (6)
var packed := Compress(data);

// Choose level: 1=fast, 9=best ratio
var small  := CompressLevel(data, 9);
var fast   := CompressLevel(data, 1);

var back   := Decompress(packed);

File Compression

// Compress a file → .bz2
CompressFile('/data/dump.sql', '/data/dump.sql.bz2');

// Decompress
DecompressFile('/data/dump.sql.bz2', '/data/dump.sql');

// High-ratio compression for archiving
CompressLevel(ReadFile('/data/logs.txt'), 9);

Base64 Transport

// Compress and encode for JSON / HTTP payloads
var b64 := CompressToBase64(payload);
var back := DecompressFromBase64(b64);

When to Use bzip2

Use bzip2 whenArchiving files where ratio > speed. Compatible tooling (bzip2, tar).
Use zstd whenNeed both good ratio AND speed. Modern systems.
Use lz4 whenSpeed is critical, ratio is secondary.
Use lzma whenMaximum ratio. XZ format for distributions.

Package Info

Version1.0.0
Typeclib
C Librarylibbz2
Authorgustavo

Functions

  • Compress
  • CompressLevel
  • Decompress
  • CompressFile
  • DecompressFile
  • CompressToBase64
  • DecompressFromBase64
  • CompressBound
  • BZ2Version

See Also