ocibuild_compress (ocibuild v0.10.4)
View SourceCompression abstraction with automatic OTP version detection.
This module provides a unified compression API that automatically selects the best available compression algorithm based on the OTP version:
- OTP 28+: zstd available (20-50% smaller, 5-10x faster decompression)
- OTP 27: gzip only
Usage
%% Auto-select best available compression
{ok, Compressed} = ocibuild_compress:compress(Data, auto).
%% Explicit compression selection
{ok, Compressed} = ocibuild_compress:compress(Data, gzip).
{ok, Compressed} = ocibuild_compress:compress(Data, zstd). % Fails on OTP 27
%% Check availability
true = ocibuild_compress:is_available(gzip).
false = ocibuild_compress:is_available(zstd). % On OTP 27
%% Get default compression for current OTP
gzip = ocibuild_compress:default(). % On OTP 27
zstd = ocibuild_compress:default(). % On OTP 28+
Summary
Functions
Compress data using the specified algorithm.
Returns the best available compression for the current OTP version.
Check if a compression algorithm is available on the current OTP version.
Resolve auto to the actual compression algorithm.
Types
Functions
-spec compress(Data, Compression) -> Result when Data :: iodata(), Compression :: compression(), Result :: {ok, binary()} | {error, term()}.
Compress data using the specified algorithm.
Returns {ok, CompressedData} on success, or {error, Reason} on failure.
%% Auto-select best available
{ok, Compressed} = ocibuild_compress:compress(Data, auto).
%% Explicit gzip (always available)
{ok, Compressed} = ocibuild_compress:compress(Data, gzip).
%% Explicit zstd (OTP 28+ only)
{ok, Compressed} = ocibuild_compress:compress(Data, zstd).
{error, {zstd_not_available, otp_version, "27"}} = ... % On OTP 27
-spec default() -> resolved_compression().
Returns the best available compression for the current OTP version.
Returns zstd on OTP 28+ (better compression ratio and faster decompression),
or gzip on OTP 27 and earlier.
-spec is_available(compression()) -> boolean().
Check if a compression algorithm is available on the current OTP version.
true = ocibuild_compress:is_available(gzip). % Always available
true = ocibuild_compress:is_available(auto). % Always available
true = ocibuild_compress:is_available(zstd). % Only on OTP 28+
-spec resolve(compression()) -> resolved_compression().
Resolve auto to the actual compression algorithm.
gzip = ocibuild_compress:resolve(auto). % On OTP 27
zstd = ocibuild_compress:resolve(auto). % On OTP 28+
gzip = ocibuild_compress:resolve(gzip).
zstd = ocibuild_compress:resolve(zstd).