diff --git a/rust/README.md b/rust/README.md index 4893a279c..6173f4319 100644 --- a/rust/README.md +++ b/rust/README.md @@ -44,7 +44,10 @@ zstd ABI: 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. + sequence-store builder and no-compress fallback. Rust also owns the + frame-chunk block loop, including block sizing, target/split/internal + dispatch, output accounting, and frame-state updates; C supplies the + private state-preparation and block-compression callbacks. - `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. @@ -71,6 +74,9 @@ zstd ABI: - Runtime support - `threading` provides platform pthread wrappers required by zstd headers. - `pool` implements the bounded worker pool used by multithreaded compression. + - The `zstdmt_compress` integration keeps job descriptors and synchronization + private to C while Rust owns input-retention scans and pending-output + decisions through scalar job projections. - Dictionary support - `zstd_ddict` owns, loads, copies, and references decode dictionaries. - Legacy decoding @@ -80,7 +86,9 @@ zstd ABI: shims for the native build. - Block decompression - `zstd_decompress_block` decodes literal and sequence sections, maintains - FSE/Huffman repeat state, and executes compressed-block sequences. + FSE/Huffman repeat state, executes compressed-block sequences, and selects + the short or long sequence decoder from projected configuration and history + state. C retains the decoder-context layout and configuration projection. - `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 @@ -90,8 +98,8 @@ zstd ABI: - `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built by the separate `cli/` static-library package only for program archives, so library builds do not acquire program-only dependencies. The C - `fileio` layer still owns format-specific dispatch, metadata, and the - remaining C streaming/orchestration paths. Rust already owns the file + `fileio` layer retains format-specific codec callbacks and metadata, while + Rust owns the mixed-format probe/dispatch loop. Rust already owns the file preference policy, filename decisions, source/destination opening, dictionary buffers, asynchronous I/O pools, and pass-through copy leaf. - `timefn` provides the monotonic nanosecond clock behind `UTIL_time_t`,