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:
+14
-14
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user