Skip to content

docs: add DEPENDENCIES.md recording accepted and declined crates #209

Description

@BenjaminDEMAILLE

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.

  1. 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.
  2. Dev-only dependencies — same shape, lower bar (nothing ships).
  3. 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 alignersblock-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 cratessimd-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 librariessuperintervals, coitrees, rust-lapper; see the sibling issue,
    including their non-standard license flags.
  • Succinct / rank-select librariessucds, 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions