feat(compress): move ordinary block emission into Rust
Move the post-sequence-store body of ZSTD_compressBlock_internal behind a small C/Rust state projection. C continues to build the sequence store and handle the no-compress and sequence-producer error paths, while Rust now owns sequence collection, entropy emission, the legacy non-first-frame RLE gate, compressed-block confirmation, and offcode repeat cleanup. Remove the C wrappers that became dead after those leaves moved behind the Rust body. The first integration run exposed that leaving the old C finalization label in place confirmed compressed block state twice, undoing Rust's pointer swap and breaking a later sparse-file checksum. The C wrapper now returns directly for the Rust-owned path and retains only its C-owned no-compress cleanup. Test Plan: - cargo test --manifest-path rust/Cargo.toml --lib -- --test-threads=1 - cargo check --manifest-path rust/Cargo.toml --lib - cargo clippy --manifest-path rust/Cargo.toml --lib -- -D warnings - cargo clippy --manifest-path rust/Cargo.toml -- -D warnings - cargo +nightly fmt --manifest-path rust/Cargo.toml -- --check - make -B -C lib -j2 lib - make -B -C tests -j2 test-zstd - make -B -C tests -j2 test-cli-tests - ZSTREAM_TESTTIME=-T2s make -B -C tests -j2 test-zstream - FUZZERTEST=-T5s make -B -C tests -j2 test-fuzzer - make -B -C tests/fuzz -j2 all - make -B -C tests/fuzz -j2 sequence_compression_api - cargo clippy --manifest-path rust/Cargo.toml --tests -- -D warnings (pre-existing manual_repeat_n failure) - cargo clippy --manifest-path rust/Cargo.toml --benches -- -D warnings (pre-existing manual_repeat_n failure)
This commit is contained in:
+4
-1
@@ -41,7 +41,10 @@ zstd ABI:
|
||||
- `zstd_compress_block_split` searches for profitable sequence-store
|
||||
partitions, while `zstd_compress` emits those partitions through the
|
||||
Rust single-block serializer. C retains split discovery's context setup
|
||||
and the outer block-dispatch decision.
|
||||
and the outer block-dispatch decision. `zstd_compress` also owns ordinary
|
||||
sequence-block entropy emission, sequence collection, and the legacy RLE
|
||||
compatibility gate after C builds the sequence store; C retains the
|
||||
sequence-store builder and no-compress fallback.
|
||||
- `zstd_compress_frame` serializes frame headers, skippable frames, and the
|
||||
last empty block; it takes scalar frame parameters so the C-owned
|
||||
`ZSTD_CCtx_params` layout never crosses the language boundary.
|
||||
|
||||
Reference in New Issue
Block a user