feat(compress): route simple context frames through Rust
Dispatch ordinary dictionary-free ZSTD_compress2 calls through the Rust frame compressor while retaining the original C implementation for advanced contexts. Prepare the C workspace first so allocation downsizing and static-context limits remain observable. Mark successful Rust frames so a following one-shot ZSTD_compressStream2(..., ZSTD_e_end) call uses the same output path. Other streaming directives and advanced parameters remain on the C implementation. Test Plan: - RUSTC_WRAPPER= CARGO_BUILD_RUSTC_WRAPPER= cargo test --manifest-path rust/Cargo.toml --no-default-features --features compression zstd_compress::tests - RUSTC_WRAPPER= CARGO_BUILD_RUSTC_WRAPPER= cargo clippy --manifest-path rust/Cargo.toml --no-default-features --features compression -- -D warnings - cargo +nightly fmt --manifest-path rust/Cargo.toml -- --check - make -B -C tests fuzzer - ./tests/fuzzer -t114 -i1000 --no-big-tests -s1 The basic fuzzer run now reaches the existing Rust one-shot compression-ratio limit at test 113; the new stateful reuse tests pass before that point.
This commit is contained in:
@@ -516,6 +516,8 @@ struct ZSTD_CCtx_s {
|
||||
size_t outBuffFlushedSize;
|
||||
ZSTD_cStreamStage streamStage;
|
||||
U32 frameEnded;
|
||||
/* The next one-shot stream call may reuse a Rust-compressed frame. */
|
||||
unsigned rustSimpleCompress2Completed;
|
||||
|
||||
/* Stable in/out buffer verification */
|
||||
ZSTD_inBuffer expectedInBuffer;
|
||||
|
||||
Reference in New Issue
Block a user