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:
+4
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user