CONTRIBUTING.md:58 requires that a new dependency, especially a non-Rust one, be raised in an
issue before the PR. That rule covers the decision. What it does not cover is the record: today
the justifications live in comments in Cargo.toml (good ones, for flate2's zlib-rs backend
and for mimalloc) and the rejections live nowhere at all. So a crate that was considered and
turned down in issue #N gets re-proposed six months later and re-litigated from scratch.
Proposal: a DEPENDENCIES.md at the repo root with two tables and one list.
- Active runtime dependencies — crate, version range, license, what uses it, why it earns its
place. Seeded from the comments already in Cargo.toml, which are the best material here.
- Dev-only dependencies — same shape, lower bar (nothing ships).
- Considered and declined — crate, date, reason, link to the deciding issue.
Declined list, from the August 2026 survey
Draft content for section 3, to be confirmed in the sibling issues:
- Alternative aligners —
block-aligner 0.5.1 (adaptive SIMD affine-gap, 5–10x over prior
methods on its paper's datasets), ksw2rs, parasailors. Faithfulness to STAR's scoring,
extension and tie-breaks is the product; an aligner that computes alignments differently, even
better, is a divergence.
- k-mer / minimizer / sketching crates —
simd-minimizers, minimizer-iter,
minimizer-queue, seq-hash, sourmash, nthash. STAR seeds by MMP search in the suffix
array; sketching changes which seeds exist.
rust-htslib — brings htslib as a system C dependency; noodles already covers
SAM/BAM/BGZF with a self-contained build across the five supported platforms.
rust-bio — broad toolkit, slower readers (allocations, copying, UTF-8 validation), few
pieces needed.
- Interval libraries —
superintervals, coitrees, rust-lapper; see the sibling issue,
including their non-standard license flags.
- Succinct / rank-select libraries —
sucds, vers-vecs, sux, bitm. The packed index
layout is dictated by STAR's format and there is no rank/select query need.
rkyv — the index layout is externally specified, not a serialization of our own types.
Checklist
CONTRIBUTING.md:58requires that a new dependency, especially a non-Rust one, be raised in anissue before the PR. That rule covers the decision. What it does not cover is the record: today
the justifications live in comments in
Cargo.toml(good ones, forflate2'szlib-rsbackendand for
mimalloc) and the rejections live nowhere at all. So a crate that was considered andturned down in issue #N gets re-proposed six months later and re-litigated from scratch.
Proposal: a
DEPENDENCIES.mdat the repo root with two tables and one list.place. Seeded from the comments already in
Cargo.toml, which are the best material here.Declined list, from the August 2026 survey
Draft content for section 3, to be confirmed in the sibling issues:
block-aligner0.5.1(adaptive SIMD affine-gap, 5–10x over priormethods on its paper's datasets),
ksw2rs,parasailors. Faithfulness to STAR's scoring,extension and tie-breaks is the product; an aligner that computes alignments differently, even
better, is a divergence.
simd-minimizers,minimizer-iter,minimizer-queue,seq-hash,sourmash,nthash. STAR seeds by MMP search in the suffixarray; sketching changes which seeds exist.
rust-htslib— brings htslib as a system C dependency;noodlesalready coversSAM/BAM/BGZF with a self-contained build across the five supported platforms.
rust-bio— broad toolkit, slower readers (allocations, copying, UTF-8 validation), fewpieces needed.
superintervals,coitrees,rust-lapper; see the sibling issue,including their non-standard license flags.
sucds,vers-vecs,sux,bitm. The packed indexlayout is dictated by STAR's format and there is no rank/select query need.
rkyv— the index layout is externally specified, not a serialization of our own types.Checklist
DEPENDENCIES.mdwith the three sectionsCargo.tomlcomments, then trim the comments to a pointerCONTRIBUTING.mdnext to the "new dependencies need prior discussion" rule