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
- compression (zlib)
- lzma
- zstd
- lz4