Changed (BREAKING)
-
centralize plumbing thread-safety configuration
Plumbing crates share the threading primitives and algorithms selected by
gix-parallel/parallel. Their forwarding-onlyparallelfeatures duplicate
that switch and obscure Cargo's feature unification. Remove those features
fromgix-attributes,gix-filter,gix-index,gix-odb,gix-pathspec,
gix-ref,gix-status,gix-worktree, andgix-worktree-state.Breaking change: callers using the removed features must enable
gix-parallel/paralleldirectly. Keepgix/parallelas the porcelain switch,
forwarding togix-parallel/paralleland the distinctgix-pack/parallel.Tree streaming always spawns a producer thread, so
gix-worktree-stream
enablesgix-parallel/paralleldirectly and documents its effect on other
crates through feature unification. Makegix/worktree-streamalso enable
gix/parallel, including throughworktree-archive, so locally gated code
and shared thread-safe types agree. Likewise, select thread-safe types for
gix-testtools' shared fixture-exclusion cache explicitly.Move thread-safety assertions and the object-database concurrency regression
into test targets requiringgix-parallel/parallel. Collect worker handles
before releasing the barrier and use at least two workers, ensuring the
regression actually exercises concurrent access. Replace the reference-store
fixture with a directSend + Syncassertion.Avoid enabling parallelism indirectly through test-helper defaults where
serial coverage is intended. Updatejust unit-teststo exercise serial
plumbing and explicitly selected threaded targets, including SHA-256 object
lookup coverage, and remove the unused worktree forwarding dependency.Also replace the disconnected-branch ASCII graph snapshot with a
git rev-list disjoint --not maincomparison. This retains Git reference
coverage without depending on version-specific graph layout.
Other (BREAKING)
-
specialize
gix-featuresfor parallel executionThe
gix-parallelcrate is mostly copy-paste fromgix-features, but
most tests are newly generated.gix-featuresonce coordinated several alternative implementations.
Serial versus threaded execution is its remaining shared implementation
policy; tracing, hashing, compression, and filesystem operations already
have their own owners.Move progress, interruption, byte pipes, decoding, iterator chunks, and
cache diagnostics intogix-utils. Keep utilities that add dependencies
behind feature toggles, includinginterruptfor typed cancellation via
gix-error. Usecrc32fastdirectly ingix-packandgix-odb.Rename the remaining crate to
gix-paralleland expose its computation
helpers, reducers, and shared ownership primitives at the crate root.
Replacegix::featuresandgix::threadingwith the existing owner exports,
includinggix::parallelandgix::utils, and adapt all workspace callers.Expose both progress formatting choices individually on
gix, retaining
comfortas their bundle. Forward tracing directly togix-traceand
cache diagnostics togix-utils. Update documentation, feature checks,
the pack fuzz harness, and package-size checks for the new ownership.
Commit Statistics
- 4 commits contributed to the release.
- 2 commits were understood as conventional.
- 0 issues like '(#ID)' were seen in commit messages