Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PR catalog

The single, consolidated record of every change carried in bwa-mem3 main on top of upstream bwa-mem2 — its bwa-mem3 PR, a one-line description, its class, and its upstream bwa-mem2 disposition (PR/issue and status). The narrative What’s Different pages (correctness, performance, features, architecture support, build & infrastructure) explain the why; this page is the flat, scannable what.

Note — generated table; do not hand-edit between the markers

The table below is consolidated from the per-area change history (git log --reverse --no-merges master..main for the change list, merged with the upstream-disposition tracking). Every PR that adds a fork-carried commit must add its row here (the FG-MAIN-TABLE rule — see Contributing). “Upstream status” of fork-only means no upstream PR exists; open means an upstream PR/issue existed at implementation time but was unmerged.

Fork-carried changes

PRChangeClassUpstream PR / issueUpstream status
#1feat(arm64): make Linux aarch64 build + CI-test on every fg-main pushArchitecture supportbwa-mem2#288open PR
#2chore: configure CodeRabbit to review PRs against fg-mainBuild & infrastructurefork-only
#3docs: add FG-MAIN.md documenting the fork’s relationship to upstreamBuild & infrastructurefork-only
#4ci: pin GitHub Actions to full-length commit SHAsBuild & infrastructurefork-only
#5fix(hdr): align bwamem.h declarations with bwamem.cpp definitionsCorrectnessfork-only
#6feat(hdr): export mem_infer_dir for external consumersFeaturesfork-only
#7chore: move profiling globals out of main.cppBuild & infrastructurefork-only
#8feat: expose worker_alloc/worker_free, the core worker_t pre-allocation helpersFeaturesfork-only
#9feat: split mem_sam_pe into mem_pair_resolve + thin emission wrapperFeaturesfork-only
#10ci: pin dwgsim seed (-z 42) to stop parity-test flakinessBuild & infrastructurefork-only
#12feat: –bam[=LEVEL] output flag for direct BAM emissionFeaturesfork-only
#13feat(meth): –meth + index --meth — bwameth.py-equivalent bisulfite modeFeaturesfork-only
#16build(make): add explicit arch=avx512bw targetArchitecture supportfork-only
#17fix: compute no_pairing 0x2 flag from the emitted alignmentCorrectnessfork-only
#18[proto] NEON kswv mate-rescue — correctness + perf harnessArchitecture supportfork-only
#19feat: vendor mimalloc v3.3.0 and link by defaultFeaturesfork-only
#20[proto] AVX2 kswv mate-rescue — stacked on PR 18Architecture supportfork-only
#21fix(kswv): apply NEON score2-scan fixes to AVX-512BW kernelCorrectnessfork-only
#22fix: zero bseq1_t in kseq2bseq1 so realloc’d entries don’t carry garbageCorrectnessfork-only
#23test(ci): add unit-test harness, fixtures, and ARM build supportBuild & infrastructurefork-only
#24ci: expand workflow matrix + add canonical deep-test rowBuild & infrastructurefork-only
#26fix(kswv): gate AVX2 arch dispatch on !AVX512BWCorrectnessfork-only
#28fix(kswv): consolidate score2 plateaus per-lane to match scalar ksw_align2Correctnessfork-only
#29fix(kswv): port score2 plateau consolidation to NEON + AVX-512BWCorrectnessfork-only
#30fix(kswv): apply score2 plateau fix + missing filters to kswv_512_16Correctnessfork-only
#31fix(kswv): rewrite kswv_neon_16 — real SIMD kernel with correct table + score2Correctnessfork-only
#33perf(seed): lockstep SMEM batching across N readsPerformancefork-only
#34test: doctest-based test framework scaffolding + CodecovBuild & infrastructurefork-only
#35chore: port four nh13 lh3/bwa PRs into bwa-mem2 (-z, -u/XB, MQ, @HD order)Featureslh3/bwa#330merged (lh3 only)
#42feat(mem): emit HN:i tag with total hit count per primaryFeatureslh3/bwa#438analogous to bwa aln; no direct upstream port
#49perf(header): batch -H ingestion to fix O(n^2) header read (closes #37)Performancebwa-mem2#204open PR
#50build(make): forward user CXXFLAGS/CPPFLAGS/LDFLAGS to final link stepsBuild & infrastructurebwa-mem2#290open upstream PR
#51fix(kswv): guard post-loop rowMax store on nrow==0 batchesCorrectnessbwa-mem2#289open PR (upstream covers AVX-512BW only)
#52chore(version): stamp PACKAGE_VERSION from git describe at build timeBuild & infrastructurebwa-mem2#283, bwa-mem2#284open issue + open PR
#53chore: normalize CRLF line endings to LF (#43)Build & infrastructurefork-only
#54fix(sam): sanitize whitespace in -R when embedding into @PG CL: fieldCorrectnessbwa-mem2#293open issue
#55fix(smem): size SMEM buffers from observed max read length (closes #44)Correctnessbwa-mem2#238, bwa-mem2#210PR closed without merge; issue open
#56feat(mapq): add –supp-rep-hard-cap opt-in supp MAPQ rescoringFeaturesbwa-mem2#260open issue
#57feat(index): libsais-based memory-bounded FM-index constructionPerformancefork-only
#58perf: consolidated mapping speedups (ksw2, SMEM, SAL, SAM)Performancefork-only
#59feat(makefile): parameterize PGO targets by arch + profile dirBuild & infrastructurefork-only
#60feat(cli): wire up –help across commands; add -h to top-level and indexFeaturesfork-only
#63ci(proto-neon-kswv): split into fan-out/fan-in jobs with cachingBuild & infrastructurefork-only
#65feat(shm): port bwa shm from bwa-mem v1Featuresfork-only (v1 feature port)
#67feat(shm): add bwa-mem2 shm --meth for symmetric meth UXFeaturesfork-only
#68chore: rename shell vars BWAMEM2/BWA_MEM2[*] to BWAMEM3/BWA_MEM3[*]Build & infrastructurefork-only
#70perf(kswv): add per-strip L1 prefetches to all u8/16 kernelsPerformancefork-only
#71docs: add comprehensive mdbook on Read the DocsBuild & infrastructurefork-only
#72fix(test/meth): alias bwa-mem2 -> bwa-mem3 on PATH for bwameth.py oracleBuild & infrastructurefork-only
#73fix(fmi): parenthesize SA_COMPX_MASK precedence in sampled-SA prefetchCorrectnessfork-only
#74fix(bntseq): bound .alt parse buffer to prevent stack overflowCorrectnessfork-only
#75perf(fmi): bump SMEM_LOCKSTEP_N from 8 to 16Performancefork-only
#76feat(bns): convert mem_matesw_batch_{pre,post} to bns_fetch_seq_v2Architecture supportfork-only
#77perf(ungapped): closed-form HIT for total_mis == 0Performancefork-only
#78perf(ksort): replace per-call malloc with on-stack buffer for small nPerformancefork-only
#79Update index.mdBuild & infrastructurefork-only
#80perf(libsais_build): skip wasted zero-init on unpack + SA buffersPerformancefork-only
#81fix(profiling): clamp display_stats nthreads to LIM_CCorrectnessfork-only
#82feat(shm): serialize /bwactl RMW with a POSIX named semaphoreFeaturesfork-only
#83feat(simd): replace multi-binary execv launcher with single-binary in-process dispatchArchitecture supportfork-only
#84perf(build): default x86 single-binary baseline to avx2 (was sse41)Architecture supportfork-only
#85fix(matesw): copy ref slice before ksw_align2 to avoid SIGSEGV on shm-backed ref_stringCorrectnessfork-only
#86perf(x86): cap avx512bw autovec at 256-bit; bwa_shm /dev/shm preflightFeaturesfork-only
#88perf(fmi): inline backwardExt to recover gcc 12+ wall-clock regressionPerformancefork-only
#89ci: migrate parity tests from dwgsim/phiX174 to holodeck/chr22Build & infrastructurefork-only
#90feat(meth): emit Bismark-compatible XR/XG/XM auxiliary tagsFeaturesfork-only
#93docs(install): list autoconf/automake/libomp/zlib system prereqsBuild & infrastructurefork-only
#94docs(install): fix RHEL/Fedora package name pkgconfig → pkgconf-pkg-configBuild & infrastructurefork-only
#95feat(simd): add SIMD host-floor precheck for multi-arch deploymentFeaturesfork-only
#96docs: pre-release documentation pass for v0.2.0-preBuild & infrastructurefork-only
#97chore(release): prep v0.2.0 release notes and metadataBuild & infrastructurefork-only
#123Stable tie-breaks + pdqsortPerformancefork-only
#128FASTQ reader fast pathPerformancefork-only
#140Recover 8-bit banded SW (≥128 bp)Performancefork-only
#141Gotoh gaps from HPerformancefork-only
#143Drop dead qlen[] paramPerformancefork-only
#144Long-read kernel parity testPerformancefork-only
#147Short-circuit re-baseline scanPerformancefork-only
#148Remove dead SW code pathsPerformancefork-only
#149Vectorize epilogue side-channelPerformancefork-only
#150Bound getScores prefetch readsPerformancefork-only
#151Unsigned 8-bit h0-prefix seedPerformancefork-only
#152--profile stage timingPerformancefork-only
#153zlib-ng inflate + 3rd workerPerformancefork-only
#157Right-size SA staging buffersPerformancefork-only
#158gtle contract testPerformancefork-only
#160NEON SW tuningPerformancefork-only
#161AVX2 SW tuningPerformancefork-only
#162AVX2 16-bit kswv256_16Performancefork-only
#164NEON movemask parity testPerformancefork-only

Upstream issues tracked but not yet fixed

These upstream issues are tracked in the bwa-mem3 issue list but do not yet have a corresponding fix in main:

IssueUpstream referenceNotes
Split-alignment evidence loss vs bwa 0.7.17bwa-mem2#273issue #47 — under investigation
MAPQ/coordinate parity vs bwa mem 0.7.18bwa-mem2#262, bwa-mem2#246, bwa-mem2#239issue #48 — tracking only

See also: What’s Different — Overview · Correctness fixes · Performance improvements · Features · Architecture support · Build & infrastructure