Skip to content

chore(deps): bump caps-sa from 0.6.1 to 0.7.0 - #233

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/caps-sa-0.7.0
Open

chore(deps): bump caps-sa from 0.6.1 to 0.7.0#233
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/caps-sa-0.7.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 21, 2026

Copy link
Copy Markdown
Contributor

Bumps caps-sa from 0.6.1 to 0.7.0.

Release notes

Sourced from caps-sa's releases.

caps-sa 0.7.0 adds opt-in geometric LCP memoization and a substantially faster production path for large segmented generalized suffix arrays.

Highlights

  • Opt-in, bounded, partition-local geometric LCP memoization through LcpMemoizationPolicy::geometric() and GeometricMemoizationConfig.
  • Fused external-memory sort/distribution, cutting one complete intermediate spill.
  • Prefetching of upcoming text positions in the phase-4 merge.
  • Structure-of-arrays routing and task-local phase-1 ping-pong sorting.
  • A bounded coarse boundary directory for SegmentedText inputs with large segment collections.
  • Cross-platform Rust CI and complete LCP-array validation.
  • Correct finite-max_context boundary handling in merge comparison.

On the complete ruSTAR-shaped GENCODE Human v50 workload—6.56 billion symbols, 6.18 billion retained suffixes, and 1.40 million segments—the final build completed in 172.953 s at 32 physical cores with 8.75 GiB peak RSS. This was 35.4% faster and used 12.8% less peak RSS than the pre-pass 0.7 baseline, with identical output.

Geometric memoization remains disabled by default because its value is workload-dependent. In its isolated full-workload A/B it reduced wall time by 8.43% and user CPU by 5.26%.

Compatibility

ExtMemOpts, LcpMemoizationPolicy, and GeometricMemoizationConfig are non-exhaustive. Construct options with ExtMemOpts::default() or ExtMemOpts::from_env() and configure them through builder methods. This is a one-time 0.x API adjustment intended to make future option additions non-breaking.

See the complete changelog and crates.io package.

Changelog

Sourced from caps-sa's changelog.

v0.7.0 — 2026-08-13

Added

  • Opt-in geometric LCP memoization for the external-memory phase-4 merge. LcpMemoizationPolicy::Geometric reuses exact long-LCP intervals through bounded, partition-local tables; short comparisons run directly and tables activate lazily. The opaque, non-exhaustive GeometricMemoizationConfig exposes the probe, admission, activation, and per-partition capacity thresholds through getters and builder methods. Memoization is disabled by default.
  • LcpMemoizationPolicy::geometric() selects the measured defaults directly; GeometricMemoizationConfig can also be passed to ExtMemOpts::lcp_memoization through its From conversion.
  • Builder and environment controls for selecting memoization, plus unstable environment-only profiling diagnostics, including CAPS_SA_GEOMETRIC_MEMO and the CAPS_SA_MEMO_* tunables.
  • Cross-platform CI for debug/release tests, documentation, Clippy, formatting, and Rust 1.89 MSRV coverage.

Changed

  • Phase 1 of the external-memory path now fuses subarray sorting and partition distribution, reducing intermediate work and temporary storage.
  • External buckets now decode directly into the position/LCP arrays consumed by phase 4, and phase 1 routes slices from those same separate arrays. This removes transient array-of-struct conversions without changing the disk format.
  • When phase 1 already has at least one outer task per worker, each subarray uses a task-local ping-pong merge sort. This avoids nested Rayon scheduling, prevents stacked per-task scratch during work stealing, and removes per-level copy-back passes. Explicit low-subproblem builds retain recursive parallelism.
  • SegmentedText now builds a bounded coarse boundary directory for large segment collections. On the 6.56-billion-symbol ruSTAR GRCh38 plus GENCODE fixture (1.40 million segments), this reduced the complete memoized build from 260.338 s to 172.953 s with 33 MiB additional peak RSS and identical output.
  • Merge kernels prefetch upcoming text positions on supported targets.
  • Debug and test builds validate complete LCP arrays at construction boundaries.
  • Finite-max_context merges now stop at the same comparison cap as pivot selection and the public suffix comparator, rather than reading one extra symbol before applying boundary_order.

Compatibility

ExtMemOpts is now non-exhaustive; construct it with default() or from_env() and its builder methods. This one-time 0.x API break prevents future option additions from repeatedly breaking struct literals. Version bumps 0.6.1 → 0.7.0.

... (truncated)

Commits
  • 7d1858c Allow replacing an unpublished release tag
  • a8c81fd Optimize segmented construction and stabilize 0.7 API
  • 967a7b9 docs: add caps-sa 0.7.0 release notes
  • d1f4509 Merge branch 'geometric-memoization'
  • 485720e chore: prepare caps-sa 0.7.0
  • 336a398 feat: expose geometric LCP memoization policy
  • 5232e41 docs: clarify full-build correctness check
  • 503f3c6 docs: record full-scale memo table comparison
  • 460cae2 perf: make geometric memoization lazy
  • 6e01562 experiment with geometric LCP memoization
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [caps-sa](https://github.com/COMBINE-lab/caps-sa) from 0.6.1 to 0.7.0.
- [Release notes](https://github.com/COMBINE-lab/caps-sa/releases)
- [Changelog](https://github.com/COMBINE-lab/caps-sa/blob/main/CHANGELOG.md)
- [Commits](COMBINE-lab/caps-sa@v0.6.1...v0.7.0)

---
updated-dependencies:
- dependency-name: caps-sa
  dependency-version: 0.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests/issues that update a dependency file rust Pull requests that update rust code labels Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests/issues that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants