feat(rust): port FSE entropy decoding
Move FSE normalized-count parsing, Huffman statistics decoding, FSE table construction, and FSE stream decompression into Rust. The C source files now only retain the headers needed by the existing build configuration. The implementation keeps the public C ABI and verifies C-generated balanced, skewed, and Huffman-statistics streams. Compression and the higher-level frame decoder remain C for now. Test Plan: - cargo fmt --check - cargo test --all-targets - cargo clippy --all-targets -- -D warnings - cargo build --release - compile both C shims with -Werror and -Wredundant-decls Refs: rust/README.md
This commit is contained in:
+8
-4
@@ -17,10 +17,14 @@ zstd ABI:
|
||||
- `errors`, `debug`, `xxhash`, and `zstd_common` provide common exported ABI
|
||||
functions and state.
|
||||
- `common` contains shared frame constants and internal data types.
|
||||
All entropy coding, compression, decompression, dictionary, legacy, runtime,
|
||||
and CLI translation units are still C at this initial stage. 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.
|
||||
- Entropy coding
|
||||
- `entropy_common` reads FSE normalized counts and Huffman statistics.
|
||||
- `fse_decompress` builds FSE decoding tables and decodes FSE streams.
|
||||
|
||||
The remaining compression, general decompression, dictionary, legacy, runtime,
|
||||
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.
|
||||
|
||||
## Compatibility boundary
|
||||
|
||||
|
||||
Reference in New Issue
Block a user