structured-zstd 0.0.26

Pure Rust zstd implementation — managed fork of ruzstd. Dictionary decompression, no FFI.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.0.26]https://github.com/structured-world/structured-zstd/compare/v0.0.25...v0.0.26 - 2026-05-27

### Added

- *(encoding+decoding)* FrameEmitInfo + opt-in per-block XXH64 sidecar ([#272]https://github.com/structured-world/structured-zstd/pull/272)
- *(decoding)* skippable-payload visitor callback on FrameDecoder ([#271]https://github.com/structured-world/structured-zstd/pull/271)

### Documentation

- *(#176)* Skippable Frame Magic Allocations registry (#270)

### Performance

- *(decode)* drop inline_never on repcode resolver, keep cold attr ([#281]https://github.com/structured-world/structured-zstd/pull/281)
- *(encoding)* HUF_flags_preferRepeat for fast strategies + small literals (#23 G6) ([#278]https://github.com/structured-world/structured-zstd/pull/278)
- *(decoding)* mirror donor ddictIsCold signal for pipelined dispatch ([#274]https://github.com/structured-world/structured-zstd/pull/274)
- *(fse)* rewrite build_decoding_table per donor ZSTD_buildFSETable_body shape ([#276]https://github.com/structured-world/structured-zstd/pull/276)
- *(decode)* route short-block fallback through inline executor (z000033 −25%) ([#269]https://github.com/structured-world/structured-zstd/pull/269)
- *(decode)* cache predefined FSE tables (small-4k-log-lines −69%) ([#268]https://github.com/structured-world/structured-zstd/pull/268)
- *(decode)* inline sequence executor for direct path + auto-route decode_all (z000033 −24%, high-entropy-1m parity) ([#263]https://github.com/structured-world/structured-zstd/pull/263)
- *(bench)* pre-touch decompress output Vec to kill page-fault artifact ([#260]https://github.com/structured-world/structured-zstd/pull/260)
- *(decode)* bump WILDCOPY_OVERLENGTH 16 → 32 for AVX2 chunked kernel reach ([#261]https://github.com/structured-world/structured-zstd/pull/261)
- *(decode)* RingBuffer % cap → branchless wrap helper (kills divl on i686, divq on x86_64) ([#255]https://github.com/structured-world/structured-zstd/pull/255)
- *(decode)* #247 Part 2 — kill divb in repeat_short_offset + force-inline UserSliceBackend::extend ([#254]https://github.com/structured-world/structured-zstd/pull/254)
- *(decode)* #247 Part 1 — expand FSE Entry to ZSTD_seqSymbol shape ([#252]https://github.com/structured-world/structured-zstd/pull/252)

### Testing

- *(bench)* unblock dict-driven bench matrix + add pure_rust_with_dict compress arm ([#277]https://github.com/structured-world/structured-zstd/pull/277)

### Harden

- *(decode)* fallible BufferBackend writes for RLE/Raw direct path ([#251]https://github.com/structured-world/structured-zstd/pull/251)

## [0.0.25]https://github.com/structured-world/structured-zstd/compare/v0.0.24...v0.0.25 - 2026-05-24

### Added

- *(skippable)* typed SkippableFrame API behind lsm feature ([#248]https://github.com/structured-world/structured-zstd/pull/248)
- *(decode)* expect_dict_id + expect_window_descriptor setters on FrameDecoder ([#249]https://github.com/structured-world/structured-zstd/pull/249)

### Performance

- *(decode)* direct-write decode_to_slice path ([#244]https://github.com/structured-world/structured-zstd/pull/244) ([#245]https://github.com/structured-world/structured-zstd/pull/245)

## [0.0.24]https://github.com/structured-world/structured-zstd/compare/v0.0.23...v0.0.24 - 2026-05-24

### Performance

- *(decode)* pack HUF decode table as u16 (donor HUF_DEltX1 layout) ([#243]https://github.com/structured-world/structured-zstd/pull/243)
- *(decode)* collapse HUF 4-stream burst-gate to single-cursor olimit ([#238]https://github.com/structured-world/structured-zstd/pull/238)
- *(encoder)* align lazy-band target_len with donor clevels.h table[0] [#239](https://github.com/structured-world/structured-zstd/pull/239)
- *(fast)* donor-parity hot-path cleanups in Fast kernel + inline short-literal append (#220 follow-up) ([#231]https://github.com/structured-world/structured-zstd/pull/231)

### Testing

- *(encoding)* donor-parity comparator for block splitter port ([#240]https://github.com/structured-world/structured-zstd/pull/240)
- *(bench)* add decompress-dict group to compare_ffi ([#236]https://github.com/structured-world/structured-zstd/pull/236)

## [0.0.23]https://github.com/structured-world/structured-zstd/compare/v0.0.22...v0.0.23 - 2026-05-23

### Added

- *(frame)* magicless frame format support ([#26]https://github.com/structured-world/structured-zstd/pull/26) ([#222]https://github.com/structured-world/structured-zstd/pull/222)

### Performance

- *(row)* drop eager block-boundary inserts ([#180]https://github.com/structured-world/structured-zstd/pull/180) ([#232]https://github.com/structured-world/structured-zstd/pull/232)
- *(decode)* 8-slot software prefetch pipeline for sequence execution ([#208]https://github.com/structured-world/structured-zstd/pull/208) ([#227]https://github.com/structured-world/structured-zstd/pull/227)
- *(encoder)* port donor ZSTD_compressBlock_fast — 4-cursor + per-level cParams + cmov + window-correctness (#198 phase 3) ([#229]https://github.com/structured-world/structured-zstd/pull/229)
- *(decoding)* integrate AVX2 unroll-2 wildcopy candidate ([#108]https://github.com/structured-world/structured-zstd/pull/108) ([#223]https://github.com/structured-world/structured-zstd/pull/223)
- *(encoder)* wire donor-shape Fast kernel into MatchGeneratorDriver (#198 phase 1b) ([#217]https://github.com/structured-world/structured-zstd/pull/217)
- *(encoder)* donor-shape Fast kernel modules (#198 phase 1a) ([#215]https://github.com/structured-world/structured-zstd/pull/215)
- *(fse)* elide bounds check on init_state + update_state decode reads ([#214]https://github.com/structured-world/structured-zstd/pull/214)
- *(decode)* SIMD-16 fast path for short offsets {1, 2, 4} ([#213]https://github.com/structured-world/structured-zstd/pull/213)
- *(decode)* const-generic HUF kernel monomorphisation for SIMD-fallback ([#212]https://github.com/structured-world/structured-zstd/pull/212)
- *(decode)* port donor HUF 4-stream burst with sentinel-bit ctz ([#201]https://github.com/structured-world/structured-zstd/pull/201)

### Testing

- *(hc)* cross-slice boundary position seeding regression test ([#235]https://github.com/structured-world/structured-zstd/pull/235)

## [0.0.22]https://github.com/structured-world/structured-zstd/compare/v0.0.21...v0.0.22 - 2026-05-19

### Added

- *(encoder)* strategy-aware literal gates (G4 + G5) ([#182]https://github.com/structured-world/structured-zstd/pull/182)
- *(bench)* #99 Rust↔FFI sequence-stream comparator ([#149]https://github.com/structured-world/structured-zstd/pull/149)

### Documentation

- bump quick-start dep version to 0.0.21 + drop legacy ruzstd Changelog.md ([#155]https://github.com/structured-world/structured-zstd/pull/155)

### Performance

- *(decode)* pack LL/ML metadata + hot-path micro-opts ([#197]https://github.com/structured-world/structured-zstd/pull/197)
- *(decode)* fused sequence executor + SIMD/FSE hot-path cleanup + DoS-safe rollback ([#194]https://github.com/structured-world/structured-zstd/pull/194)
- *(encoder)* align Fast strategy window_log with donor (17 → 19) ([#187]https://github.com/structured-world/structured-zstd/pull/187)
- *(encoder)* inline hash-chain walk into hash_chain_candidate (lazy L1) ([#185]https://github.com/structured-world/structured-zstd/pull/185)
- *(encoder)* G3 — whole-block bail-out before partition split ([#181]https://github.com/structured-world/structured-zstd/pull/181)
- *(encoder)* donor-parity greedy parse at L4 — ratio + speed win ([#179]https://github.com/structured-world/structured-zstd/pull/179)
- *(huff0)* cache encoded weight-description bytes on `HuffmanTable` and reuse in emit path ([#170]https://github.com/structured-world/structured-zstd/pull/170)
- *(huff0)* #167 cheap entropy proxy for table_log selection — no FSE-encode per candidate ([#168]https://github.com/structured-world/structured-zstd/pull/168)
- *(fse)* donor FSE_buildCTable_wksp parity — drop per-symbol Vec<State> ([#166]https://github.com/structured-world/structured-zstd/pull/166)
- *(fse)* replace next_state linear search with donor-parity flat tables + tune CI bench budgets ([#165]https://github.com/structured-world/structured-zstd/pull/165)

## [0.0.21]https://github.com/structured-world/structured-zstd/compare/v0.0.20...v0.0.21 - 2026-05-17

### Added

- *(encoding)* #23 add donor _fromBorders pre-split heuristic + broaden level coverage ([#140]https://github.com/structured-world/structured-zstd/pull/140)

### Fixed

- *(release)* untrack fuzz crash artifacts already gitignored ([#148]https://github.com/structured-world/structured-zstd/pull/148)
- *(bench)* restore sample_size=10, raise measurement_time to clear criterion floor ([#144]https://github.com/structured-world/structured-zstd/pull/144)

### Performance

- *(7pre)* enablement — donor outer/inner dfast Level 3 + cross-level FSE cache ([#146]https://github.com/structured-world/structured-zstd/pull/146)
- *(encoding)* #18 Phase 5 — LDM producer (gear hash + bucket table + search/emit) ([#139]https://github.com/structured-world/structured-zstd/pull/139)
- *(encoding)* #124 Phase 4 — HC speculative tail check + MatcherStorage enum dispatch ([#125]https://github.com/structured-world/structured-zstd/pull/125)
- *(encoding)* #111 Phase 3 — const-generic Strategy dispatch ([#123]https://github.com/structured-world/structured-zstd/pull/123)
- *(encoding)* #111 Phase 2 — saturating_* cleanup on hot path ([#121]https://github.com/structured-world/structured-zstd/pull/121)

### Refactored

- *(encoding)* #111 Phase 1e — migrate methods off HcMatchGenerator (Stages A–D) ([#119]https://github.com/structured-world/structured-zstd/pull/119)
- *(encoding)* #111 Phase 1d — split HcMatchGenerator into MatchTable / HcMatcher / BtMatcher ([#118]https://github.com/structured-world/structured-zstd/pull/118)
- *(encoding)* #111 Phase 1c — extract Simple matcher into simple/ ([#117]https://github.com/structured-world/structured-zstd/pull/117)
- *(encoding)* #111 Phase 1b — extract shared match-finder helpers ([#116]https://github.com/structured-world/structured-zstd/pull/116)
- *(encoding)* #111 Phase 1 — structural split of match_generator monolith ([#113]https://github.com/structured-world/structured-zstd/pull/113)

### Testing

- *(fuzz)* make test_all_artifacts skip when corpus dir is absent ([#151]https://github.com/structured-world/structured-zstd/pull/151)

### Bench

- add real peak-alloc metric for full encode/decode/memory baseline ([#143]https://github.com/structured-world/structured-zstd/pull/143)

## [0.0.20]https://github.com/structured-world/structured-zstd/compare/v0.0.19...v0.0.20 - 2026-05-12

### Performance

- *(decoding)* port upstream extend_and_fill / extend_from_reader for RLE+Raw blocks ([#114]https://github.com/structured-world/structured-zstd/pull/114)
- *(level22)* complete donor parity path ([#110]https://github.com/structured-world/structured-zstd/pull/110)

## [0.0.19]https://github.com/structured-world/structured-zstd/compare/v0.0.18...v0.0.19 - 2026-04-12

### Performance

- *(bench)* add wildcopy candidate research bench and dashboard range filter ([#107]https://github.com/structured-world/structured-zstd/pull/107)

## [0.0.18]https://github.com/structured-world/structured-zstd/compare/v0.0.17...v0.0.18 - 2026-04-12

### Performance

- *(decoding)* add shared dictionary handle ([#105]https://github.com/structured-world/structured-zstd/pull/105)

## [0.0.17]https://github.com/structured-world/structured-zstd/compare/v0.0.16...v0.0.17 - 2026-04-11

### Performance

- *(encoding)* complete ARM histogram path for #71 ([#104]https://github.com/structured-world/structured-zstd/pull/104)
- *(encoding)* CRC-gated hash mix for ARM and x86_64 ([#102]https://github.com/structured-world/structured-zstd/pull/102)

## [0.0.16]https://github.com/structured-world/structured-zstd/compare/v0.0.15...v0.0.16 - 2026-04-11

### Performance

- *(encoding)* early incompressible fast-path + benchmark parity ([#99]https://github.com/structured-world/structured-zstd/pull/99)

## [0.0.15]https://github.com/structured-world/structured-zstd/compare/v0.0.14...v0.0.15 - 2026-04-09

### Performance

- *(encoding)* SIMD-dispatch common_prefix_len ([#96]https://github.com/structured-world/structured-zstd/pull/96)

## [0.0.14]https://github.com/structured-world/structured-zstd/compare/v0.0.13...v0.0.14 - 2026-04-09

### Performance

- *(encoding)* enable one-shot size hint across levels safely ([#94]https://github.com/structured-world/structured-zstd/pull/94)

## [0.0.13]https://github.com/structured-world/structured-zstd/compare/v0.0.12...v0.0.13 - 2026-04-09

### Performance

- *(decoding)* SIMD HUF kernels with runtime dispatch ([#92]https://github.com/structured-world/structured-zstd/pull/92)

## [0.0.12]https://github.com/structured-world/structured-zstd/compare/v0.0.11...v0.0.12 - 2026-04-09

### Performance

- *(decoding)* branchless offset history, prefetch pipeline, and BMI2 triple extract ([#90]https://github.com/structured-world/structured-zstd/pull/90)

## [0.0.11]https://github.com/structured-world/structured-zstd/compare/v0.0.10...v0.0.11 - 2026-04-09

### Performance

- *(decoding)* add runtime-dispatched simd wildcopy ([#85]https://github.com/structured-world/structured-zstd/pull/85)

## [0.0.10]https://github.com/structured-world/structured-zstd/compare/v0.0.9...v0.0.10 - 2026-04-08

### Performance

- *(encoding)* add row-based match finder backend ([#84]https://github.com/structured-world/structured-zstd/pull/84)
- *(encoding)* rebase hc positions past u32 boundary ([#82]https://github.com/structured-world/structured-zstd/pull/82)

## [0.0.9]https://github.com/structured-world/structured-zstd/compare/v0.0.8...v0.0.9 - 2026-04-08

### Performance

- *(encoding)* reuse streaming encoded scratch buffer ([#80]https://github.com/structured-world/structured-zstd/pull/80)

## [0.0.8]https://github.com/structured-world/structured-zstd/compare/v0.0.7...v0.0.8 - 2026-04-07

### Fixed

- *(ci)* publish benchmark delta reports ([#75]https://github.com/structured-world/structured-zstd/pull/75)

### Performance

- *(bench)* multi-arch relative Rust-vs-FFI dashboard ([#78]https://github.com/structured-world/structured-zstd/pull/78)
- *(fse)* pack decoder entries and align decode tables ([#76]https://github.com/structured-world/structured-zstd/pull/76)
- *(bench)* add fastcover vs ffi dict-training delta ([#73]https://github.com/structured-world/structured-zstd/pull/73)

## [0.0.7]https://github.com/structured-world/structured-zstd/compare/v0.0.6...v0.0.7 - 2026-04-05

### Added

- *(encoding)* numeric compression levels (1-22) API ([#63]https://github.com/structured-world/structured-zstd/pull/63)

### Performance

- *(bench)* add rust/ffi delta benchmark artifacts ([#65]https://github.com/structured-world/structured-zstd/pull/65)

## [0.0.6]https://github.com/structured-world/structured-zstd/compare/v0.0.5...v0.0.6 - 2026-04-04

### Added

- *(encoding)* write frame content size in encoder output ([#60]https://github.com/structured-world/structured-zstd/pull/60)

### Performance

- *(decoding)* pre-allocate decode buffer from sequence block analysis ([#59]https://github.com/structured-world/structured-zstd/pull/59)
- *(decoding)* branchless bitstream reader with mask table and BMI2 support ([#58]https://github.com/structured-world/structured-zstd/pull/58)
- *(decoding)* dual-state interleaved FSE sequence decoding ([#55]https://github.com/structured-world/structured-zstd/pull/55)

## [0.0.5]https://github.com/structured-world/structured-zstd/compare/v0.0.4...v0.0.5 - 2026-04-03

### Added

- *(encoding)* add Best compression level (zstd level 11, btlazy2 strategy) ([#53]https://github.com/structured-world/structured-zstd/pull/53)
- *(encoding)* add Better compression level (zstd level 7, lazy2 strategy) ([#48]https://github.com/structured-world/structured-zstd/pull/48)

### Performance

- *(decoding)* 4-stream interleaved Huffman decode and bulk table init ([#54]https://github.com/structured-world/structured-zstd/pull/54)

## [0.0.4]https://github.com/structured-world/structured-zstd/compare/v0.0.3...v0.0.4 - 2026-04-01

### Added

- *(encoding)* add streaming write encoder ([#45]https://github.com/structured-world/structured-zstd/pull/45)
- *(encoding)* add dictionary compression support ([#44]https://github.com/structured-world/structured-zstd/pull/44)

### Performance

- *(decoding)* optimize sequence execution with overlap fast paths ([#42]https://github.com/structured-world/structured-zstd/pull/42)
- *(encoding)* interleave fastest hash fill insertion ([#41]https://github.com/structured-world/structured-zstd/pull/41)
- *(encoding)* align fastest matcher with zstd fast path ([#39]https://github.com/structured-world/structured-zstd/pull/39)

### Testing

- *(bench)* expand benchmark parity matrix ([#43]https://github.com/structured-world/structured-zstd/pull/43)
- *(bench)* expand zstd benchmark suite ([#38]https://github.com/structured-world/structured-zstd/pull/38)

## [0.0.3]https://github.com/structured-world/structured-zstd/compare/v0.0.2...v0.0.3 - 2026-03-26

### Added

- *(encoder)* FSE table reuse and offset history optimization ([#33]https://github.com/structured-world/structured-zstd/pull/33)
- large literals block support (>262KB) ([#30]https://github.com/structured-world/structured-zstd/pull/30)

### Fixed

- *(encoding)* implement default compression level ([#34]https://github.com/structured-world/structured-zstd/pull/34)
- use local Readme.md for crate readme

## [0.0.2]https://github.com/structured-world/structured-zstd/compare/v0.0.1...v0.0.2 - 2026-03-25

### Added

- managed fork setup — README, FUNDING, crate rename to structured-zstd ([#2]https://github.com/structured-world/structured-zstd/pull/2)