docs(rust): refresh migration boundary

Document that the Rust CLI now owns the gzip, xz/lzma, and LZ4 codec leaves as
well as MT job creation, while the generic frame-compression state machine and
remaining MT scheduling/outer-flush orchestration remain C-owned. Keep the
hybrid boundary explicit so compatibility-suite success is not mistaken for
completion of the full rewrite.

Test Plan:
- git diff --cached --check
- reviewed rust/README.md against the committed Rust/C ownership boundary
This commit is contained in:
2026-07-18 23:29:04 +02:00
parent fce8d34ffc
commit 0d187f9327
+9 -9
View File
@@ -99,9 +99,9 @@ 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 remaining format-specific codec callbacks and `fileio` layer retains the format-specific codec callbacks and metadata,
metadata, while Rust owns the mixed-format probe/dispatch loop and gzip while Rust owns the mixed-format probe/dispatch loop and gzip, xz/lzma,
codec leaf. Rust already owns the file and lz4 codec leaves. Rust already owns the file
preference policy, filename decisions, source/destination opening, preference policy, filename decisions, source/destination opening,
dictionary buffers, asynchronous I/O pools, and pass-through copy leaf. dictionary buffers, asynchronous I/O pools, 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`,
@@ -113,12 +113,12 @@ 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, Generic high-level frame-compression state-machine orchestration and the
multithreaded job scheduling and the remaining outer flush orchestration, and remaining multithreaded scheduling/outer-flush orchestration are still C. The
the xz/lzma/lz4 CLI codec paths are still C. The frame epilogue, produced-output frame epilogue, produced-output flush policy, MT job-creation policy, and
flush policy, and gzip codec leaf now run in Rust. The remaining C paths must gzip/xz/lzma/lz4 codec leaves now run in Rust. The remaining C paths must move
move before the rewrite is complete. Keeping that boundary explicit prevents before the rewrite is complete. Keeping that boundary explicit prevents a
a passing hybrid build from being mistaken for the final all-Rust result. passing hybrid build from being mistaken for the final all-Rust result.
## Legacy decoding ## Legacy decoding