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