0.7.0 — methylation accuracy, a sharper --fast, and broad speedups
This is primarily a methylation release. The bisulfite path was reworked to a chemistry-aware contract — TAPS support, a NEUTRAL --meth-scoring default, cross-chemistry seed filtering, and both-hypothesis mate rescue — which measurably improves EM-seq placement and roughly halves the gap to bwameth on truth-simulated data while recovering methylation the baseline tools don't. Alongside it, the --fast preset was tuned to close its accuracy gap to the default path, and the alignment kernels (banded-SW / kswv, parallel FM-index load) got another round of optimization.
Non-methylation DNA alignment is byte-for-byte identical to v0.6.0 — every non-meth sample matched the v0.6.0 reference on all six architectures. If you don't use --meth or --fast, this is a pure performance and bug-fix upgrade with no output change.
| Area | What changed | Measured impact (vs v0.6.0) |
|---|---|---|
| Methylation | TAPS chemistry, NEUTRAL scoring default, cross-chemistry seed drop, both-hypothesis mate rescue (#228, #243, #225, #219/#221/#224, #227) | Drift vs bwameth 5.7% → 2.9%; truth placement now ties bwameth (94.65% vs 94.66%); per-CpG methylation r ≈ 0.95–0.98 |
--fast preset |
--extend-mate-concordant + chain cap 5→20 (#218) |
--fast placement now within 0.02pp of default (was ~0.06pp behind); cost: panel-twist --fast +7–15% wall |
| Performance | banded-SW / kswv kernel tuning, parallel FM-index load (#222/#223/#248/#252–255) | Default-path wall −5% to −24% across AMD/Graviton on wgs/wes/panel; ~1.2–2.0× compute vs upstream bwa-mem2 |
| Non-meth output | — | Byte-identical to v0.6.0 (180/180 cells, all six archs) |
| Correctness fixes | int32 extension-offset overflow guard, sa_coord realloc sizing, ungapped fast-path bound (#237, #235, #231) |
No observable output change on benchmarked data |
Benchmarked across six architectures (AVX2 / AVX-512 / NEON), 5 reps, on the bwa-mem3-bench suite.
0.7.0 (2026-07-23)
Features
- bsw: add BWAMEM3_DUMP_PAIRS to observe extension pairs (#239) (c4d7480)
- meth: add --meth=taps for TAPS methylation chemistry (#228) (0b8163d)
- meth: drop cross-chemistry seeds by read number (#225) (6e21a37)
- meth: NEUTRAL --meth-scoring (TAPS default) + batched kswv rescue (#243) (f36dc5a)
Bug Fixes
- ext: tighten ungapped fast-path mismatch bound to the strict form (#231) (5c53540)
- fast: enable --extend-mate-concordant and raise chain cap to 20 for non-meth --fast (#218) (50a3293)
- mem: guard extension-buffer growth against int32 offset overflow (#237) (6acd6b4)
- mem: size sa_coord realloc in elements, not SMEM count (#235) (7fa501c)
- meth: recover repeat placement via both-hypothesis mate rescue + PE MAPQ hardening (#219) (6705bbf)
- meth: scale --meth scoring defaults with the match score (#227) (9811767)
Performance
- bandedSWA: fewer ops in the AVX2/AVX-512 extend cores (x86-only) (#255) (d52842f)
- bsw: 128-bit (SSE/NEON) 16-bit prepass via byte-LUT + sign-extend (#223) (239a334)
- bsw: AVX-512 16-bit prepass via 32-entry permutexvar LUT (#222) (0e8c0b6)
- index: parallel pread of the FM-index for faster startup (#248) (8d88fe5)
- kswv: fold the freed-cell pair into a per-row active_frread on the u16 kernels (#254) (eaf649f)
- kswv: hoist the freed-cell target into a per-row active_frread vector (#252) (fc0eb91)
- kswv: hoist the u8 boundary test per-row on NEON and AVX-512 non-meth (#253) (a25e3b7)
- kswv: skip the ref-boundary vbsl on all-real rows in 8-bit mate rescue (+7.5%) (#244) (78420a5)
- mem: resolve SA lookups across reads, not per read (#236) (79a2425)
- meth: score mate rescue with one read#-derived matrix, not both (#224) (1baa39b)
- meth: vectorize both-hypothesis mate rescue on the batched kswv path (#221) (46aeaae), closes #219
- seed: prefetch the correct cp_occ lines in the bwtSeed third round (#242) (c5e3827)
Documentation
- best-practices: add anti-patterns for marginally-mappable input (#232) (1344ab8)
- ext: record the measured evidence behind the ungapped fast-path bound (#233) (878bda0)
- mem: scope long-read claims to what actually works (#240) (ac090bc)
- meth: correct --meth override claims and document -T 40 split filtering (#226) (50a8d3f)
- profiles: recommend --skip-contained-ext for short-read pipelines (#241) (37fa409)