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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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