Skip to content

DecompressionOptions

Options for decompression safety limits. Defined in src/decompress/context.zig:41 and re-exported as zstd.DecompressionOptions (src/zstd.zig:22).

Definition

zig
pub const DecompressionOptions = struct {
    max_window_size: usize = 1 << 27,
    force_ignore_checksum: bool = false,
};

Fields

FieldTypeDefaultDescription
max_window_sizeusize1 << 27 (128 MiB)Maximum allowed window size for decompression safety
force_ignore_checksumboolfalseIf true, skip XXH64 checksum verification

Usage

Top-level zstd.decompress(allocator, src) does not take options — configure via DecompressionContext:

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

var dctx = zstd.DecompressionContext.init(allocator);
defer dctx.deinit();

// Apply limits from options struct
const opts = zstd.DecompressionOptions{
    .max_window_size = 1 << 27,
    .force_ignore_checksum = false,
};
dctx.setMaxWindowSize(opts.max_window_size);
// (force_ignore_checksum is stored for future use; currently validated in frame checksum path)

const data = try dctx.decompressAlloc(compressed);
defer allocator.free(data);

Legacy per-call options pattern no longer exists:

zig
// Old (removed):
// try zstd.decompress(allocator, compressed, .{ .dict = dict_data, .max_output_size = ... })

// New:
var dctx = zstd.DecompressionContext.init(allocator);
defer dctx.deinit();
dctx.setMaxWindowSize(1 << 27);
const out = try dctx.decompressAlloc(compressed);

Removed: old DecompressOptions { dict: ?[]const u8, max_window_size: ?u64, max_output_size: ?usize } no longer exists. Dictionary handling uses Dictionary + loadDictionary instead of raw dict bytes.

Released under the MIT License.