scverse / scverse/rustar-aligner

Dependency survey (Aug 2026): umbrella for the crate evaluations

Open
#201 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

dependencies
Dominant language
Rust
Stars
75
Forks
7
Avg merge
8m
Merged PRs (30d)
1

Description

Umbrella for the third-party crate survey run in August 2026. Each sub-issue is one dependency
question in the form CONTRIBUTING.md:58 asks for: raised in an issue before any PR, with the
reasoning written down.

Every sub-issue is expected to end in a written outcome, either "adopted, here is the
justification" or "declined, here is why", so that the same crate does not get re-surveyed in six
months. There is currently no place to write that down, which is itself one of the sub-issues.

Already covered elsewhere, deliberately not duplicated here

  • #162 — libsais (vendored C via cc) for suffix-array construction
  • #95 — paraseq as an input option
  • #97 — parallel inputs / parallel FASTQ readers
  • #197 — hyalite for CR4

Already in the tree, so not re-proposed

The survey turned up several crates that this project already uses, which is a good sign about the
existing dependency choices: memmap2, rustc-hash, libdeflater, tempfile, assert_cmd,
mimalloc (with an explicit rationale in Cargo.toml), flate2 on the zlib-rs backend, bstr,
caps-sa.

Sub-issues

# Subject Blocked by
#207 noodles 0.113 → 0.115, noodles-bgzf 0.49 → 0.51, plus the multithreaded BGZF writer question
#202 sufr / libsufr vs the caps-sa incumbent (sibling of #162)
#203 The rust-seq crates: packed-seq, simd-minimizers, seq-hash #204
#204 A benchmark harness (divan or criterion) — enabler for everything below
#205 Portable SIMD crate vs the hand-rolled intrinsics in simd_scan.rs #204
#206 --limitBAMsortRAM aborts instead of spilling: external sort
#208 Interval-overlap crates #204
#209 DEPENDENCIES.md recording accepted and declined crates
#210 Audit: does DashMap/HashMap iteration order reach any output?
#218 Read other compressed input formats (bz2 / zstd / xz): niffler

Standing constraints for all of them

  1. Faithfulness to STAR is the product. A crate that changes which alignments are found, or the
    order in which anything observable is emitted, is out regardless of its benchmarks.
  2. Determinism across thread counts. Output must not depend on --runThreadN, on hash seeds,
    or on an unspecified iteration order.
  3. Five platforms including Windows. A non-Rust dependency is a supply-chain and maintenance
    decision, per CONTRIBUTING.md.
  4. Measure before optimising. Several sub-issues are explicitly blocked on the benchmark
    harness, because there is no benches/ directory today.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with CONTRIBUTING.md:58 and the dependency rationale in Cargo.toml, then review the listed sub-issues and the existing simd_scan.rs reference. Confirm how the survey should record adopted or declined crates, including benchmark, determinism, platform, and STAR-faithfulness evidence. Done means the relevant evaluations have written outcomes and the dependency record is complete.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.