docs(rust): refresh compression migration boundary

Document that Rust now owns CCtx dictionary/prefix attachment dispatch and the
multithreaded compression-job stage sequence, while C retains reset policy,
private context and worker state, dictionary-content loading, and codec
callbacks.

Test Plan:
- Documentation-only change; code validation was completed before this commit.
- Rust library all-target tests: 517 passed; legacy feature matrix: 572 passed.
- Native CLI tests (41), test-zstd, fuzzer (319), zstream (152 + 297), and
  decode corpus (1,647) passed under the serial 40 GiB virtual-memory cap.
- Commit is intentionally unsigned because configured GPG pinentry was
  unavailable and hung during the signing attempt.
This commit is contained in:
2026-07-19 09:15:05 +02:00
parent 1655302473
commit 492c6292c9
+13 -11
View File
@@ -82,8 +82,8 @@ zstd ABI:
- The `zstdmt_compress` integration keeps job descriptors and synchronization
private to C while Rust owns input-retention scans, reusable input-range
overlap decisions, outer scheduling and end-directive adjustments,
job-creation decisions, and pending-output decisions through scalar job
projections.
job-creation decisions, compression-job stage sequencing and error flow,
and pending-output decisions through scalar job projections.
- Dictionary support
- `zstd_ddict` owns, loads, copies, and references decode dictionaries.
- Legacy decoding
@@ -123,15 +123,17 @@ zstd ABI:
feature, because the parser layer requires the C `fileio` backend that
tests do not compile.
Dictionary-ingestion dispatch, the CLI zstd compression stream loop, the
single-threaded buffered/stable stream state machine, MT outer scheduling and
flush policy, sequence-store and block policy, external-sequence/literals
block loop, optional-format decompression loops, block decoder wrappers, and
decompression result policy now run in Rust. CDict lifecycle, the private
dictionary-content loader, private CCtx/matchfinder/workspace operations, and
codec/adaptive-policy callbacks remain in C. The remaining C paths 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.
Dictionary-ingestion dispatch, CCtx dictionary/prefix attachment dispatch, the
CLI zstd compression stream loop, the single-threaded buffered/stable stream
state machine, MT outer scheduling and flush policy, MT compression-job stage
sequencing and error flow, sequence-store and block policy,
external-sequence/literals block loop, optional-format decompression loops,
block decoder wrappers, and decompression result policy now run in Rust. CDict
lifecycle, the private dictionary-content loader, reset policy, private
CCtx/matchfinder/workspace operations, and codec/adaptive-policy callbacks
remain in C. The remaining C paths 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