Skip to content

Constants

All format constants live in src/common/constants.zig and are re-exported as top-level aliases in src/brotli.zig.

Top-Level Aliases

zig
pub const BLOCKSIZE_MAX = constants.BLOCK_SIZE_CAP; // 16 MiB metablock cap
pub const MAX_QUALITY = 11;
pub const MIN_QUALITY = 0;
pub const DEFAULT_QUALITY = 11;
pub const DEFAULT_WINDOW = 22;
pub const MIN_WINDOW_BITS = 10;  // large-window minimum
pub const MAX_WINDOW_BITS = 24;  // standard RFC 7932 maximum
pub const LARGE_MAX_WINDOW_BITS = 30;

pub const CONTEXT_MAP_MAX_RLE = 16;
pub const MAX_NUMBER_OF_BLOCK_TYPES = 256;
pub const NUM_LITERAL_SYMBOLS = 256;
pub const NUM_COMMAND_SYMBOLS = 704;
pub const NUM_DISTANCE_SHORT_CODES = 16;
pub const WINDOW_GAP = 16;

Format Limits (src/common/constants.zig)

ConstantValueDescription
CONTEXT_MAP_MAX_RLE16Max context-map run-length code
MAX_NUMBER_OF_BLOCK_TYPES256Block types per category
NUM_LITERAL_SYMBOLS256Literal alphabet size
NUM_COMMAND_SYMBOLS704Insert-and-copy alphabet size
NUM_BLOCK_LEN_SYMBOLS26Block-count prefix-code symbols
REPEAT_PREVIOUS_CODE_LENGTH16Code-length repeat marker
REPEAT_ZERO_CODE_LENGTH17Zero-run marker
CODE_LENGTH_CODES18Code-length alphabet size
LARGE_MIN_WBITS / LARGE_MAX_WBITS10 / 30Large-window LGWIN bounds
NUM_DISTANCE_SHORT_CODES16Distance ring-buffer codes
MAX_NPOSTFIX / MAX_NDIRECT3 / 120Distance parameterization bounds
MAX_DISTANCE_BITS24Standard window distance bits
MAX_DISTANCE0x3FFFFFCMax expressible distance (NPOSTFIX=0)
MAX_ALLOWED_DISTANCE0x7FFFFFFCAbsolute decoder limit
WINDOW_GAP16Ring-buffer slack (spec §9.1)
BLOCK_SIZE_CAP1 << 24Metablock length ceiling

Version

zig
pub const version = "0.0.2";
pub const version_number: u32 = 2;
pub const spec_version = "1.2.0";       // implemented format spec level
pub const spec_version_number: u32 = 10200;

pub fn versionString() []const u8 // "0.0.2"
pub fn versionNumber() u32        // 2

Usage

zig
const brotli = @import("brotli");

const bound = brotli.maxCompressedSize(data.len);
std.debug.print("quality {d}..{d}, window {d}..{d}\n", .{
    brotli.MIN_QUALITY, brotli.MAX_QUALITY,
    brotli.MIN_WINDOW_BITS, brotli.MAX_WINDOW_BITS,
});

Released under the MIT License.