feat(rust): port double-fast block matching
Move the two-table fast match finder into Rust while retaining a small C projection of the private match-state. The Rust implementation handles normal, attached-dictionary, and external-dictionary matching without exposing the full C context ABI. The C entry points and build-time exclusion guards remain unchanged for configured consumers. Document the migrated matcher in the Rust component map and narrow the remaining-C boundary accordingly. Test Plan: - cargo test --all-targets - cargo test --target i686-unknown-linux-gnu --all-targets - cargo clippy && cargo clippy --benches && cargo clippy --tests - cargo +nightly fmt - make -B -C tests -j2 fuzzer zstreamtest invalidDictionaries poolTests - ./tests/fuzzer -s5346 -i1 --no-big-tests - ./tests/zstreamtest -i3000 -s334462 - ./tests/invalidDictionaries - timeout 20s stdbuf -oL ./tests/poolTests Refs: rust/README.md
This commit is contained in:
+3
-1
@@ -31,13 +31,15 @@ zstd ABI:
|
||||
- `zstd_presplit` chooses split points for full compression blocks.
|
||||
- `zstd_compress_literals` emits raw, RLE, and Huffman literal sections
|
||||
while preserving the compressor's Huffman-table repeat state.
|
||||
- `zstd_fast` and `zstd_double_fast` implement the single- and two-table
|
||||
fast block match finders, including attached and external dictionary paths.
|
||||
- Runtime support
|
||||
- `threading` provides platform pthread wrappers required by zstd headers.
|
||||
- `pool` implements the bounded worker pool used by multithreaded compression.
|
||||
- Dictionary support
|
||||
- `zstd_ddict` owns, loads, copies, and references decode dictionaries.
|
||||
|
||||
The remaining block compression, general decompression, dictionary-building,
|
||||
The lazy and optimal block matchers, general decompression, dictionary-building,
|
||||
legacy, and CLI translation units are still C. They must move before the
|
||||
rewrite is complete. Keeping that boundary explicit prevents a passing hybrid
|
||||
build from being mistaken for the final all-Rust result.
|
||||
|
||||
Reference in New Issue
Block a user