From 726a32fa795e9064b5e6cfec8e7b71f15b0e85c6 Mon Sep 17 00:00:00 2001 From: ddidderr Date: Sat, 18 Jul 2026 22:42:03 +0200 Subject: [PATCH] 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. --- rust/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/rust/README.md b/rust/README.md index 6173f4319..1f7fdcccd 100644 --- a/rust/README.md +++ b/rust/README.md @@ -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