diff --git a/rust/README.md b/rust/README.md index 15af12850..83c97e658 100644 --- a/rust/README.md +++ b/rust/README.md @@ -68,6 +68,9 @@ zstd ABI: The public end-of-frame path and the `ZSTD_compress2_c` fallback also use Rust-owned orchestration boundaries while C retains the context reset, stream adapter, checksum/epilogue, and trace callbacks. + Public frame-progression dispatch is Rust-owned as well; C projects the + scalar single-thread inputs and keeps the private MT context behind a + callback. - `zstd_compress_params` owns the compression-level tables (formerly `clevels.h`), parameter bounds, clamping, validation, table selection, source/dictionary adjustment, and match-state/CDict size estimation. @@ -119,9 +122,9 @@ zstd ABI: - `zstd_decompress` owns the public decompression context, one-shot, dictionary, parameter, and streaming state machines. Its C shim retains the configuration-dependent context layout and platform details, plus - legacy and trace leaves; Rust owns decoder storage allocation, custom - memory dispatch, and the `ZSTD_copyDCtx` prefix copy up to the projected - `inBuff` field. + legacy and trace leaves; Rust owns the no-forward-progress threshold + policy, decoder storage allocation, custom memory dispatch, and the + `ZSTD_copyDCtx` prefix copy up to the projected `inBuff` field. - Command-line frontend - `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built by the separate `cli/` static-library package only for program archives, @@ -133,8 +136,10 @@ zstd ABI: optional-format decompression loops, decompression result policy/final accounting, both shared- and separate-destination multi-file compression schedulers, and both shared- and separate-destination decompression - schedulers. C retains destination-name construction and the private - file/resource/format callbacks for these scheduler boundaries. + schedulers. Rust also owns the scalar compression metadata-transfer + decision; C retains the private stat probe, metadata operations, + destination-name construction, and the private file/resource/format + callbacks for these scheduler boundaries. Rust already owns the file preference policy, filename decisions, source/destination opening, dictionary buffers, asynchronous I/O pools, and pass-through copy leaf.