⚠️ You must rebuild your indexessalmon 2.7.0 changes the on-disk index format (index format v2). Every
index built by an earlier salmon is rejected at load time with a message
like the one below, and must be rebuilt withsalmon index:<dir> was built by salmon 2.6.0 (index format v1), which this salmon cannot read (requires index format v2+). ... rebuild it with `salmon index -t <transcripts> [-d <decoys>] -i <dir>`.Quantification results are unchanged — verified byte-identical against
2.6.0 (see below). The rebuild buys a smaller, faster index.
What changed
This release adopts the unified canonical k-mer dictionary (a port of C++
SSHash v6.0.0 into sshash-rs 0.7 / piscem-rs 0.10). SSHash previously kept
two indexing modalities; canonical answers — the only kind mapping needs —
paid a ~4/3 super-k-mer density penalty. The v6 scheme selects the minimizer
by hashing the canonical m-mer at each position: mirror-equivariant (one
probe answers both strands, with orientation) at plain forward density, with
a centre-closest tie-break that makes the scheme forward. The dictionary
header now also records the build seed and a hash-library guard, so
environment drift fails loudly instead of silently degrading mapping.
Results: provably unchanged
Against the released 2.6.0, quant.sf and the per-fragment RAD mapping
records are byte-identical on every validation set: sample_data
(selective-alignment and sketch, with and without decoys) and GRCh38 cDNA ×
36M real read pairs (193,760 transcripts, identical num_mapped). Below
salmon, per-k-mer dictionary results were verified byte-identical to the
previous implementation over ~30M lookups and to C++ SSHash v6 itself.
Performance (vs 2.6.0, same machine)
- Index build (GRCh38 cDNA): ~23% lower peak RSS (4.2 → 3.3 GB), ~3% faster
- Index size: dictionary bytes shrink 8–13%
- Sketch-mode mapping: ~5.5% faster wall / ~5.7% less CPU (36M pairs, 16 threads)
Also in this release
- A future-format index is now rejected with an "upgrade salmon" message
instead of a cryptic I/O error;info.jsonrecordssshash_format_version. - Fixes in the dictionary layer that rode along: wide-k (k ≥ 33) streaming
lookups were wrong in release builds (salmon's default k = 31 unaffected),
and non-default build seeds produced unusable indexes. - No salmon command-line options changed.
Full details: docs/release-notes-2.7.0.md and docs/sshash-v6-port.md.