Skip to content

Releases: COMBINE-lab/caps-sa

Release list

caps-sa 0.7.0

Choose a tag to compare

@rob-p rob-p released this 13 Aug 14:55

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.