Skip to content

Dependency discussion: interval-overlap crates (superintervals / coitrees / rust-lapper) #208

Description

@BenjaminDEMAILLE

Survey item from August 2026, filed so the answer is on record. Expected outcome is decline
unless a profile says otherwise
.

Candidates

Crate Version License Note
superintervals 0.3.1 non-standard on crates.io Position-sorted superset index, SIMD counting
coitrees 0.4.0 non-standard on crates.io Static interval tree, van Emde Boas layout
rust-lapper 1.3.0 MIT Widely used, simple API

The September 2025 interval benchmark puts superintervals fastest or tied across cases (1.25–1.44x
over COITrees as the polars-bio default), and notes rust-lapper collapsing ~25x on adversarial
datasets, which makes it risky as a general-purpose choice.

Why the default answer is no

Annotation and junction lookups here mirror STAR's own structures rather than being free choices:
src/quant/transcriptome.rs:151 builds an explicit sorted order for binary_search, and the
junction side is keyed maps plus STAR-shaped filtering (src/junction/). Swapping in a general
interval library would not just change speed, it would change what "overlap" means at the edges
(half-open vs closed, tie handling), which is exactly where faithfulness lives.

Two further blockers before any use: both superintervals and coitrees show a non-standard
license
on crates.io, which must be resolved explicitly, and neither has been shown to be on a
hot path in this codebase.

Checklist

  • Profile whether interval/annotation lookup is measurably hot at all (blocked on the benchmark
    harness)
  • If it is: identify the exact query shape before shopping for a library
  • Resolve the license question before any prototype, not after
  • Otherwise record the decline with these reasons

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests/issues that update a dependency file

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions