feat(compress): move sequence-store branch policy into Rust

Move buildSeqStore's preloaded external-sequence, LDM, external-producer,
fallback, and ordinary matchfinder branch ordering into Rust. Keep the
private CCtx, matchfinder, LDM, and producer operations behind narrow C
callbacks, add ABI layout assertions, update the Rust boundary documentation,
and cover each policy branch with focused tests.

Test Plan:
- cargo fmt --manifest-path rust/Cargo.toml -- --check
- ulimit -v 41943040 && CARGO_BUILD_JOBS=1 cargo test --manifest-path rust/Cargo.toml --lib (690 passed)
- ulimit -v 41943040 && CARGO_BUILD_JOBS=1 cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings
- ulimit -v 41943040 && MAKEFLAGS=-j1 make -B -C programs -j1 zstd
- ulimit -v 41943040 && MAKEFLAGS=-j1 make -C tests -j1 test-zstream ZSTREAM_TESTTIME=-T1s (84 tests and both short fuzz rounds passed)
This commit is contained in:
2026-07-19 18:42:26 +02:00
parent d38c1e2a62
commit fec11ae7d0
3 changed files with 510 additions and 116 deletions
+4 -3
View File
@@ -43,9 +43,10 @@ zstd ABI:
Rust single-block serializer. C retains split discovery's context setup
and the outer block-dispatch decision. `zstd_compress` also owns ordinary
sequence-block entropy emission, sequence collection, the legacy RLE
compatibility gate, and sequence-store construction; C supplies only the
private matchfinder, LDM block-preparation/consumption, external-sequence-
producer, and state-preparation callbacks. Rust also owns the frame-chunk
compatibility gate, sequence-store construction, and its branch/fallback
policy; C supplies only the private matchfinder, LDM
block-preparation/consumption, external-sequence-producer, and
state-preparation callbacks. Rust also owns the frame-chunk
block loop, including block sizing, target/split/internal dispatch, output
accounting, and frame-state
updates; C supplies the private block-compression callbacks. Rust also