feat(rust): port decode dictionaries

Move ZSTD_DDict allocation, ownership, construction, and public ABI exports
into Rust. The C decoder keeps ZSTD_loadDEntropy until its table loader moves.

The C shim now exposes C-computed DCtx field offsets. This keeps dictionary
state correct across conditional C layouts, including fuzz fields and 32-bit
static-BMI2 builds, without duplicating decoder-context layout in Rust.

Test Plan:
- cargo fmt, cargo clippy, cargo clippy --benches, cargo clippy --tests
- cargo test --all-targets and cargo build --release
- cargo test/build --target i686-unknown-linux-gnu
- C fuzzer, zstreamtest, invalidDictionaries, and fuzzer32 smoke runs
- fuzz-enabled and i686 -mbmi2 C/Rust dictionary roundtrip harnesses

Refs: rust/README.md
This commit is contained in:
2026-07-10 21:20:50 +02:00
parent 65afd94867
commit ca70ca8061
4 changed files with 927 additions and 239 deletions
+1
View File
@@ -16,3 +16,4 @@ pub mod pool;
pub mod threading;
pub mod xxhash;
pub mod zstd_common;
pub mod zstd_ddict;