docs(rust): refresh migration boundary
Document that Rust now owns sequence-store construction, block post-build policy, public sequence conversion, and optional-format decompression loops. Keep the remaining private C callback and dictionary/CLI boundaries explicit so the hybrid state is not mistaken for a completed all-Rust rewrite. Test Plan: - git diff --check (passed)
This commit is contained in:
+23
-24
@@ -42,17 +42,16 @@ zstd ABI:
|
|||||||
partitions, while `zstd_compress` emits those partitions through the
|
partitions, while `zstd_compress` emits those partitions through the
|
||||||
Rust single-block serializer. C retains split discovery's context setup
|
Rust single-block serializer. C retains split discovery's context setup
|
||||||
and the outer block-dispatch decision. `zstd_compress` also owns ordinary
|
and the outer block-dispatch decision. `zstd_compress` also owns ordinary
|
||||||
sequence-block entropy emission, sequence collection, and the legacy RLE
|
sequence-block entropy emission, sequence collection, the legacy RLE
|
||||||
compatibility gate after C builds the sequence store; C retains the
|
compatibility gate, and sequence-store construction; C supplies only the
|
||||||
sequence-store builder and no-compress fallback. Rust also owns the
|
private matchfinder, LDM, external-sequence-producer, and state-preparation
|
||||||
frame-chunk block loop, including block sizing, target/split/internal
|
callbacks. Rust also owns the frame-chunk block loop, including block
|
||||||
dispatch, output accounting, and frame-state updates; C supplies the
|
sizing, target/split/internal dispatch, output accounting, and frame-state
|
||||||
private state-preparation and block-compression callbacks. Rust also owns
|
updates; C supplies the private block-compression callbacks. Rust also
|
||||||
the single-threaded buffered/stable stream state machine, including direct
|
owns the single-threaded buffered/stable stream state machine, including
|
||||||
versus buffered output, pending-output draining, and frame reset policy.
|
direct versus buffered output, pending-output draining, and frame reset
|
||||||
The
|
policy. The external-sequence-and-literals block loop and public sequence
|
||||||
external-sequence-and-literals block loop is Rust-owned as well; C retains
|
conversion are Rust-owned as well; C retains only CCtx-facing adapters.
|
||||||
only its CCtx-dependent sequence-conversion callback.
|
|
||||||
- `zstd_compress_frame` serializes frame headers, skippable frames, and the
|
- `zstd_compress_frame` serializes frame headers, skippable frames, and the
|
||||||
last empty block; it takes scalar frame parameters so the C-owned
|
last empty block; it takes scalar frame parameters so the C-owned
|
||||||
`ZSTD_CCtx_params` layout never crosses the language boundary.
|
`ZSTD_CCtx_params` layout never crosses the language boundary.
|
||||||
@@ -107,10 +106,11 @@ zstd ABI:
|
|||||||
- `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built
|
- `zstd_cli` owns the Rust parser, safety policy, and dispatch. It is built
|
||||||
by the separate `cli/` static-library package only for program archives,
|
by the separate `cli/` static-library package only for program archives,
|
||||||
so library builds do not acquire program-only dependencies. The C
|
so library builds do not acquire program-only dependencies. The C
|
||||||
`fileio` layer retains the format-specific codec callbacks, loops, and
|
`fileio` layer retains the format-specific codec callbacks, private
|
||||||
metadata, while Rust owns the mixed-format probe/dispatch loop and
|
asynchronous-pool adapters, and metadata, while Rust owns the mixed-format
|
||||||
decompression result policy/final accounting. Rust already owns the file
|
probe/dispatch loop, optional-format decompression loops, and decompression
|
||||||
preference policy, filename decisions,
|
result policy/final accounting. Rust already owns the file preference
|
||||||
|
policy, filename decisions,
|
||||||
source/destination opening, dictionary buffers, asynchronous I/O pools,
|
source/destination opening, dictionary buffers, asynchronous I/O pools,
|
||||||
and pass-through copy leaf.
|
and pass-through copy leaf.
|
||||||
- `timefn` provides the monotonic nanosecond clock behind `UTIL_time_t`,
|
- `timefn` provides the monotonic nanosecond clock behind `UTIL_time_t`,
|
||||||
@@ -122,15 +122,14 @@ zstd ABI:
|
|||||||
feature, because the parser layer requires the C `fileio` backend that
|
feature, because the parser layer requires the C `fileio` backend that
|
||||||
tests do not compile.
|
tests do not compile.
|
||||||
|
|
||||||
Sequence-store construction and its no-compress fallback, remaining
|
Dictionary ingestion and CDict lifecycle, the CLI zstd compression leaf, and
|
||||||
CCtx-dependent block and sequence conversion, dictionary ingestion and CDict
|
private CCtx, matchfinder, workspace, and codec callbacks remain in C. The
|
||||||
lifecycle, optional-format decompression loops, and the CLI zstd compression
|
single-threaded buffered/stable stream state machine, MT outer scheduling and
|
||||||
leaf remain in C. The single-threaded buffered/stable stream state machine,
|
flush policy, sequence-store and block policy, external-sequence/literals
|
||||||
MT outer scheduling and flush policy, external-sequence/literals block loop,
|
block loop, optional-format decompression loops, block decoder wrappers, and
|
||||||
block decoder wrappers, and decompression result policy now run in Rust. The
|
decompression result policy now run in Rust. The remaining C paths must move
|
||||||
remaining C paths must move before the rewrite is complete. Keeping that
|
before the rewrite is complete. Keeping that boundary explicit prevents a
|
||||||
boundary explicit prevents a passing hybrid build from being mistaken for the
|
passing hybrid build from being mistaken for the final all-Rust result.
|
||||||
final all-Rust result.
|
|
||||||
|
|
||||||
## Legacy decoding
|
## Legacy decoding
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user