docs(rust): refresh migration boundary

Update the Rust component map to describe the newly migrated single-threaded
stream state machine and multithreaded scheduler/flush policy. Correct the CLI
boundary so it no longer claims that the optional-format decompression loops
are Rust-owned, and list the remaining sequence, dictionary, and CLI leaves
that still block an all-Rust build.

Test Plan:
- `git diff --cached --check` -- passed.
- Documentation-only change; no code tests required.
This commit is contained in:
2026-07-19 00:17:03 +02:00
parent dbc6992f3b
commit eb1aa3b6dc
+19 -14
View File
@@ -47,7 +47,10 @@ zstd ABI:
sequence-store builder and no-compress fallback. Rust also owns the sequence-store builder and no-compress fallback. Rust also owns the
frame-chunk block loop, including block sizing, target/split/internal frame-chunk block loop, including block sizing, target/split/internal
dispatch, output accounting, and frame-state updates; C supplies the dispatch, output accounting, and frame-state updates; C supplies the
private state-preparation and block-compression callbacks. The private state-preparation and block-compression callbacks. Rust also owns
the single-threaded buffered/stable stream state machine, including direct
versus buffered output, pending-output draining, and frame reset policy.
The
external-sequence-and-literals block loop is Rust-owned as well; C retains external-sequence-and-literals block loop is Rust-owned as well; C retains
only its CCtx-dependent sequence-conversion callback. only its CCtx-dependent sequence-conversion callback.
- `zstd_compress_frame` serializes frame headers, skippable frames, and the - `zstd_compress_frame` serializes frame headers, skippable frames, and the
@@ -79,7 +82,8 @@ zstd ABI:
- `pool` implements the bounded worker pool used by multithreaded compression. - `pool` implements the bounded worker pool used by multithreaded compression.
- The `zstdmt_compress` integration keeps job descriptors and synchronization - The `zstdmt_compress` integration keeps job descriptors and synchronization
private to C while Rust owns input-retention scans, reusable input-range private to C while Rust owns input-retention scans, reusable input-range
overlap decisions, and pending-output decisions through scalar job overlap decisions, outer scheduling and end-directive adjustments,
job-creation decisions, and pending-output decisions through scalar job
projections. projections.
- Dictionary support - Dictionary support
- `zstd_ddict` owns, loads, copies, and references decode dictionaries. - `zstd_ddict` owns, loads, copies, and references decode dictionaries.
@@ -103,10 +107,10 @@ zstd ABI:
- `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built - `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built
by the separate `cli/` static-library package only for program archives, by the separate `cli/` static-library package only for program archives,
so library builds do not acquire program-only dependencies. The C so library builds do not acquire program-only dependencies. The C
`fileio` layer retains the format-specific codec callbacks and metadata, `fileio` layer retains the format-specific codec callbacks, loops, and
while Rust owns the mixed-format probe/dispatch loop, decompression result metadata, while Rust owns the mixed-format probe/dispatch loop and
policy/final accounting, and gzip, xz/lzma, and lz4 codec leaves. Rust decompression result policy/final accounting. Rust already owns the file
already owns the file preference policy, filename decisions, preference policy, filename decisions,
source/destination opening, dictionary buffers, asynchronous I/O pools, source/destination opening, dictionary buffers, asynchronous I/O pools,
and pass-through copy leaf. and pass-through copy leaf.
- `timefn` provides the monotonic nanosecond clock behind `UTIL_time_t`, - `timefn` provides the monotonic nanosecond clock behind `UTIL_time_t`,
@@ -118,14 +122,15 @@ zstd ABI:
feature, because the parser layer requires the C `fileio` backend that feature, because the parser layer requires the C `fileio` backend that
tests do not compile. tests do not compile.
Generic high-level frame-compression state-machine orchestration and the Sequence-store construction and its no-compress fallback, remaining
remaining multithreaded scheduling/outer-flush orchestration are still C. The CCtx-dependent block and sequence conversion, dictionary ingestion and CDict
frame epilogue, produced-output flush policy, MT job-creation policy, lifecycle, optional-format decompression loops, and the CLI zstd compression
reusable MT input-range policy, external-sequence/literals block loop, block leaf remain in C. The single-threaded buffered/stable stream state machine,
decoder wrappers, decompression result policy, and gzip/xz/lzma/lz4 codec MT outer scheduling and flush policy, external-sequence/literals block loop,
leaves now run in Rust. The remaining C paths must move before the rewrite is block decoder wrappers, and decompression result policy now run in Rust. The
complete. Keeping that boundary explicit prevents a passing hybrid build from remaining C paths must move before the rewrite is complete. Keeping that
being mistaken for the final all-Rust result. boundary explicit prevents a passing hybrid build from being mistaken for the
final all-Rust result.
## Legacy decoding ## Legacy decoding