docs(rust): refresh migration boundary

The migration map still described the optimal parser and benchmark orchestration
as C-owned, and its remaining-work paragraph did not distinguish the newly
ported high-level leaves from the still-private frame and MT orchestration.
That made the README under-report Rust ownership and overstate some remaining
C work.

Update the component map to identify `zstd_opt` price/parse ownership and Rust
benchmark orchestration, and describe the current C boundary as the remaining
frame setup/flush scheduling and format-specific codec leaves.  Keep the
hybrid-build warning explicit until those larger orchestration layers move.

Test Plan:
- `git diff --cached --check` -- passed.
- Rust library and CLI Clippy default, benches, and tests -- passed before staging.
- Native library, program, fuzz, CLI, and upstream test matrices -- passed before staging.
This commit is contained in:
2026-07-18 22:42:03 +02:00
parent be7e656d8e
commit 726a32fa79
+14 -14
View File
@@ -62,7 +62,8 @@ zstd ABI:
- `zstd_lazy` implements greedy, lazy, lazy2, and binary-tree matching,
including row-based and dictionary search variants.
- `zstd_opt_tree` maintains the binary-tree index used by optimal matching;
the dynamic-programming optimal parser itself remains in C for now.
`zstd_opt` owns the dynamic-programming price model, optimal parse, and
sequence emission.
- `zstd_ldm` implements long-distance-match parameter selection, table
maintenance, sequence generation, and sequence consumption.
- Dictionary building
@@ -103,20 +104,19 @@ zstd ABI:
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`,
and `benchfn` owns the benchmark run/timing loop (`BMK_benchFunction`,
`BMK_benchTimedFn`) used by the CLI benchmark mode and by C test tools.
Both live in the `cli/` package, but C test binaries (fullbench, fuzzer,
zstreamtest, paramgrill, ...) link a helpers-only build of that archive,
produced without the package's `cli` feature, because the parser layer
requires the C `fileio` backend that tests do not compile. Benchmark
orchestration and reporting (`benchzstd.c`) remain C, reached from the
Rust parser through the `ZSTD_NOBENCH`-gated bridge in `zstdcli.c`.
while `benchfn` owns the benchmark run/timing loop (`BMK_benchFunction`,
`BMK_benchTimedFn`) and `benchzstd` owns benchmark orchestration and
reporting. Both live in Rust; the C translation units are ABI shims.
C test binaries (fullbench, fuzzer, zstreamtest, paramgrill, ...) link a
helpers-only build of the archive, produced without the package's `cli`
feature, because the parser layer requires the C `fileio` backend that
tests do not compile.
The optimal block matcher, most high-level frame-compression orchestration,
benchmark orchestration and reporting (`benchzstd`), and several
format-specific CLI I/O paths 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.
High-level frame-compression orchestration, multithreaded job scheduling and
flush orchestration, and several format-specific CLI codec paths 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.
## Legacy decoding