Releases: COMBINE-lab/salmon
v1.11.4
Released: 2026-03-11
Full Changelog: v1.10.3...v1.11.4
Overview
Salmon v1.11.2 is a major release representing the most substantial architectural overhaul of the salmon codebase since the transition to the pufferfish index in v1.0.0. The changes span the full source tree — from the core indexing data structure to the build system — and are motivated by a commitment to long-term maintainability and future extensibility. At the same time, the bulk RNA-seq quantification functionality and all output formats are fully preserved; users upgrading from v1.10.3 should expect identical results from salmon quant on the same data, modulo the index rebuild described below.
⚠️ Action required: Due to a fundamental change in the underlying index format (see below), all users must rebuild their salmon indices before using v1.11.2. Indices built with v1.10.3 or earlier are not compatible with this release.
🗑️
salmon alevinhas been removed. See the migration guidance below.
New SSHash-based Index
The most significant change in this release is the adoption of a fundamentally new and more efficient k-mer index based on SSHash, a space-efficient and highly cache-friendly dictionary for k-mer sets. This replaces the prior colored compacted de Bruijn graph (ccDBG) index built on top of pufferfish / TwoPaCo.
The SSHash index offers:
- Reduced memory footprint at both index construction and query time
- Faster k-mer lookup via a more cache-friendly hash-based design
- Simpler and more robust index construction — relies on SShash's external memory minimizer bucket based index construction.
- A cleaner foundation for future algorithmic development
The SSHash data structure is described in:
Giulio Ermanno Pibiri. Sparse and skew hashing of k-mers. Bioinformatics, 38(Supplement 1):i185–i194, 2022. https://academic.oup.com/bioinformatics/article/38/Supplement_1/i185/6617506
The integration of SSHash into salmon's mapping pipeline, and its performance and accuracy relative to the previous index, is described in the following preprint:
Pibiri GE, and Patro R. Optimizing sparse and skew hashing: faster k-mer dictionaries. bioRxiv 2026.01.21.700884. Optimizing sparse and skew hashing: faster k-mer dictionaries
https://www.biorxiv.org/content/10.64898/2026.01.21.700884v1
Because the index format has changed fundamentally, all previously built salmon indices must be rebuilt using salmon index with this new version. Rebuilding is straightforward and does not require any changes to your reference files or workflow commands beyond directing salmon to a fresh output directory.
Removal of salmon alevin — Migration to piscem → alevin-fry
salmon alevin, the integrated single-cell RNA-seq processing subcommand, has been permanently removed in this release. This decision reflects the maturation of purpose-built, actively developed alternatives that substantially outperform the legacy salmon alevin pipeline in speed, memory efficiency, protocol flexibility, and accuracy.
Users who previously used salmon alevin should migrate to the piscem + alevin-fry pipeline, which has been the recommended approach for single-cell processing since the introduction of alevin-fry in salmon v1.4.0. The piscem → alevin-fry stack:
- Provides the same (and extended) protocol support (10x Chromium, Drop-seq, sci-RNA-seq, SPLiT-seq, etc.)
- Uses the same RAD file format as
salmon alevin --rad/--sketchfor downstream processing - Offers dramatically improved memory efficiency and throughput
- Is actively maintained and receives new features and protocol support
- Supports decoy-aware mapping via piscem's built-in genome+transcriptome index
For documentation and tutorials, see:
- piscem: https://github.com/COMBINE-lab/piscem
- alevin-fry: https://github.com/COMBINE-lab/alevin-fry and https://alevin-fry.readthedocs.io/en/latest/
- simpleaf (recommended end-to-end workflow tool): https://github.com/COMBINE-lab/simpleaf
Major Source-Tree Refactoring and Build System Modernization
Alongside the index overhaul, this release incorporates a comprehensive, multi-stage refactoring of the entire salmon source tree. The goal of this work is to reduce technical debt accumulated since the project's origin, establish clearer module boundaries, and make the codebase more approachable for contributors and more tractable for future algorithmic additions. No changes to salmon's quantification logic, algorithms, or output formats were made as part of this refactoring.
Key refactoring work includes:
Source Tree Reorganization
- All internal implementation headers have been moved under a dedicated
salmon/internal/namespace, clearly separating the public API surface from implementation details. - Headers were consolidated into logical groupings:
- Model headers (
salmon/internal/model/) - Alignment and output headers (
salmon/internal/alignment/, collapsed from multiple sub-directories) - Inference headers (
salmon/internal/inference/) - Core state and utility headers (
salmon/internal/core/,salmon/internal/util/) - Transcript state moved to
salmon/internal/
- Model headers (
- Legacy top-level "wrapper" headers (thin shims that re-included internal headers) have been completely removed.
CMake Build System Overhaul
- The monolithic top-level
CMakeLists.txthas been split into focused, single-responsibility modules, dramatically improving build system readability and maintainability. - Global build state in
src/CMakeLists.txthas been reduced; target properties are now propagated explicitly viatarget_*directives. - CMake module dependencies have been tightened so that each module declares only what it directly requires.
- The dependency fallback integration has been modernized, improving behavior when system-installed versions of libraries are absent.
- Stale linker search paths that accumulated over many releases have been pruned.
- The staged external include directory preference, which could cause subtle order-of-inclusion bugs, has been removed.
I/O Modernization
- The legacy
FastxParserFASTQ/FASTA reading layer has been replaced with a newFQFeederadapter, providing a cleaner interface and resolving latent compatibility issues with newer compilers.
Dependency Updates
- Eigen vendored dependency updated to v3.4.1 (from an older embedded copy); Eigen vendor extras and unnecessary files have been pruned, and file modes normalized.
- spdlog (vendored) has been updated with fixes for compatibility with modern versions of
{fmt}. - libgff dependency pinned to v2.0.1.
- pufferfish submodule pinned to a dedicated
for-salmonbranch commit, decoupling salmon's build from upstream pufferfish development velocity.
Compatibility and Output
With the exception of the index format change and the removal of salmon alevin:
- All
salmon quantfunctionality is preserved. The selective-alignment algorithm, EM/VB inference, bias correction models, library type detection, equivalence class output, and all other bulk quantification features are unchanged. - All output formats are unchanged.
quant.sf,meta_info.json,lib_format_counts.json,aux_info/, bootstrap output, and all other outputs are bit-for-bit compatible with v1.10.3 output (given identical inputs and a freshly built index). - Command-line interface is unchanged for
salmon quantandsalmon index. No flags have been added or removed. - Alignment-based mode (
salmon quant -a) is fully preserved.
Upgrading from v1.10.3
- Replace your salmon binary with the v1.11.2 release.
- Rebuild your index:
(Passing multiple threads with
salmon index -t transcriptome.fa -d decoys.txt -i salmon_index_v1.11.2/
-pis recommended to reduce index build time.) - If you use
salmon alevin, migrate to piscem + alevin-fry. Allsalmon quantand other commands are otherwise drop-in compatible.
Downloads
Pre-compiled binaries are available below for:
| Platform | File |
|---|---|
| Linux x86_64 | salmon-linux-x86_64.tar.gz |
| Linux aarch64 | salmon-linux-aarch64.tar.gz |
| macOS arm64 (Apple Silicon) | salmon-macos-arm64.tar.gz |
| macOS x86_64 | salmon-macos-x86_64.tar.gz |
References
-
Pibiri GE. Sparse and skew hashing of K-mers Bioinformatics. 2022;38(Supplement 1):i185–i194. https://academic.oup.com/bioinformatics/article/38/Supplement_1/i185/6617506
-
Pibiri GE, Patro R. Optimizing sparse and skew hashing: faster k-mer dictionaries bioRxiv 2026. https://www.biorxiv.org/content/10.64898/2026.01.21.700884v1
-
He D, Zakeri M, Sarkar H, Soneson C, Srivastava A, Patro R. Alevin-fry unlocks rapid, accurate and memory-frugal quantification of single-cell RNA-seq data. Nat Methods. 2022. https://www.nature.com/articles/s41592-022-01408-3
v1.11.3
Full Changelog: v1.11.2...v1.11.3
v1.11.2
Salmon v1.11.2 Release Notes
Released: 2026-03-11
Full Changelog: v1.10.3...v1.11.2
Overview
Salmon v1.11.2 is a major release representing the most substantial architectural overhaul of the salmon codebase since the transition to the pufferfish index in v1.0.0. The changes span the full source tree — from the core indexing data structure to the build system — and are motivated by a commitment to long-term maintainability and future extensibility. At the same time, the bulk RNA-seq quantification functionality and all output formats are fully preserved; users upgrading from v1.10.3 should expect identical results from salmon quant on the same data, modulo the index rebuild described below.
⚠️ Action required: Due to a fundamental change in the underlying index format (see below), all users must rebuild their salmon indices before using v1.11.2. Indices built with v1.10.3 or earlier are not compatible with this release.
🗑️
salmon alevinhas been removed. See the migration guidance below.
New SSHash-based Index
The most significant change in this release is the adoption of a fundamentally new and more efficient k-mer index based on SSHash, a space-efficient and highly cache-friendly dictionary for k-mer sets. This replaces the prior colored compacted de Bruijn graph (ccDBG) index built on top of pufferfish / TwoPaCo.
The SSHash index offers:
- Reduced memory footprint at both index construction and query time
- Faster k-mer lookup via a more cache-friendly hash-based design
- Simpler and more robust index construction — eliminating the multi-stage TwoPaCo ccDBG build pipeline and its associated intermediate files and disk usage
- A cleaner foundation for future algorithmic development
The SSHash data structure is described in:
Giulio Ermanno Pibiri. SSHash: Locality-Preserving Minimal Perfect Hashing of k-mers. Bioinformatics, 38(Supplement 1):i185–i194, 2022. https://academic.oup.com/bioinformatics/article/38/Supplement_1/i185/6617506
The integration of SSHash into salmon's mapping pipeline, and its performance and accuracy relative to the previous index, is described in the following preprint:
Pibiri GE, Patro R, et al. [preprint title]. bioRxiv 2026.01.21.700884. https://www.biorxiv.org/content/10.64898/2026.01.21.700884v1
Because the index format has changed fundamentally, all previously built salmon indices must be rebuilt using salmon index with this new version. Rebuilding is straightforward and does not require any changes to your reference files or workflow commands beyond directing salmon to a fresh output directory.
Removal of salmon alevin — Migration to piscem → alevin-fry
salmon alevin, the integrated single-cell RNA-seq processing subcommand, has been permanently removed in this release. This decision reflects the maturation of purpose-built, actively developed alternatives that substantially outperform the legacy salmon alevin pipeline in speed, memory efficiency, protocol flexibility, and accuracy.
Users who previously used salmon alevin should migrate to the piscem + alevin-fry pipeline, which has been the recommended approach for single-cell processing since the introduction of alevin-fry in salmon v1.4.0. The piscem → alevin-fry stack:
- Provides the same (and extended) protocol support (10x Chromium, Drop-seq, sci-RNA-seq, SPLiT-seq, etc.)
- Uses the same RAD file format as
salmon alevin --rad/--sketchfor downstream processing - Offers dramatically improved memory efficiency and throughput
- Is actively maintained and receives new features and protocol support
- Supports decoy-aware mapping via piscem's built-in genome+transcriptome index
For documentation and tutorials, see:
- piscem: https://github.com/COMBINE-lab/piscem
- alevin-fry: https://github.com/COMBINE-lab/alevin-fry and https://alevin-fry.readthedocs.io/en/latest/
- simpleaf (recommended end-to-end workflow tool): https://github.com/COMBINE-lab/simpleaf
Major Source-Tree Refactoring and Build System Modernization
Alongside the index overhaul, this release incorporates a comprehensive, multi-stage refactoring of the entire salmon source tree. The goal of this work is to reduce technical debt accumulated since the project's origin, establish clearer module boundaries, and make the codebase more approachable for contributors and more tractable for future algorithmic additions. No changes to salmon's quantification logic, algorithms, or output formats were made as part of this refactoring.
Key refactoring work includes:
Source Tree Reorganization
- All internal implementation headers have been moved under a dedicated
salmon/internal/namespace, clearly separating the public API surface from implementation details. - Headers were consolidated into logical groupings:
- Model headers (
salmon/internal/model/) - Alignment and output headers (
salmon/internal/alignment/, collapsed from multiple sub-directories) - Inference headers (
salmon/internal/inference/) - Core state and utility headers (
salmon/internal/core/,salmon/internal/util/) - Transcript state moved to
salmon/internal/
- Model headers (
- Legacy top-level "wrapper" headers (thin shims that re-included internal headers) have been completely removed.
CMake Build System Overhaul
- The monolithic top-level
CMakeLists.txthas been split into focused, single-responsibility modules, dramatically improving build system readability and maintainability. - Global build state in
src/CMakeLists.txthas been reduced; target properties are now propagated explicitly viatarget_*directives. - CMake module dependencies have been tightened so that each module declares only what it directly requires.
- The dependency fallback integration has been modernized, improving behavior when system-installed versions of libraries are absent.
- Stale linker search paths that accumulated over many releases have been pruned.
- The staged external include directory preference, which could cause subtle order-of-inclusion bugs, has been removed.
I/O Modernization
- The legacy
FastxParserFASTQ/FASTA reading layer has been replaced with a newFQFeederadapter, providing a cleaner interface and resolving latent compatibility issues with newer compilers.
Dependency Updates
- Eigen vendored dependency updated to v3.4.1 (from an older embedded copy); Eigen vendor extras and unnecessary files have been pruned, and file modes normalized.
- spdlog (vendored) has been updated with fixes for compatibility with modern versions of
{fmt}. - libgff dependency pinned to v2.0.1.
- pufferfish submodule pinned to a dedicated
for-salmonbranch commit, decoupling salmon's build from upstream pufferfish development velocity.
Compatibility and Output
With the exception of the index format change and the removal of salmon alevin:
- All
salmon quantfunctionality is preserved. The selective-alignment algorithm, EM/VB inference, bias correction models, library type detection, equivalence class output, and all other bulk quantification features are unchanged. - All output formats are unchanged.
quant.sf,meta_info.json,lib_format_counts.json,aux_info/, bootstrap output, and all other outputs are bit-for-bit compatible with v1.10.3 output (given identical inputs and a freshly built index). - Command-line interface is unchanged for
salmon quantandsalmon index. No flags have been added or removed. - Alignment-based mode (
salmon quant -a) is fully preserved.
Upgrading from v1.10.3
- Replace your salmon binary with the v1.11.2 release.
- Rebuild your index:
(Passing multiple threads with
salmon index -t transcriptome.fa -d decoys.txt -i salmon_index_v1.11.2/
-pis recommended to reduce index build time.) - If you use
salmon alevin, migrate to piscem + alevin-fry. Allsalmon quantand other commands are otherwise drop-in compatible.
Downloads
Pre-compiled binaries are available below for:
| Platform | File |
|---|---|
| Linux x86_64 | salmon-linux-x86_64.tar.gz |
| Linux aarch64 | salmon-linux-aarch64.tar.gz |
| macOS arm64 (Apple Silicon) | salmon-macos-arm64.tar.gz |
| macOS x86_64 | salmon-macos-x86_64.tar.gz |
References
-
Pibiri GE. SSHash: Locality-Preserving Minimal Perfect Hashing of k-mers. Bioinformatics. 2022;38(Supplement 1):i185–i194. https://academic.oup.com/bioinformatics/article/38/Supplement_1/i185/6617506
-
Pibiri GE, Patro R, et al. [preprint]. bioRxiv 2026. https://www.biorxiv.org/content/10.64898/2026.01.21.700884v1
-
He D, Zakeri M, Sarkar H, Soneson C, Srivastava A, Patro R. Alevin-fry unlocks rapid, accurate and memory-frugal quantification of single-cell RNA-seq data. Nat Methods. 2022.
v1.11.1
Full Changelog: v1.11.0...v1.11.1
Full Changelog: v1.11.0...v1.11.1
v1.11.0
Salmon v1.10.1
This release is a very minor update, intended entirely to address #835 (a problem raised by deb med maintainers running into build problems upstream). This release bumps the included version of the cereal headers in the corresponding pufferfish tag to v1.3.2 and also updates the required version for salmon to match this (i.e. cereal v1.3.2). Since the prior version included in pufferfish in past releases, the cereal library had made 2 patch releases which, nonetheless, were not backwards compatible. This lead to problems when mixing cereal v1.3.2 with v1.3.0. This release bumps everything to v1.3.2 to match the latest package on debian testing. If salmon 1.10.0 is working fine for you, there's no need to update to this release (but obviously no harm in doing so). It adds no new features or bug fixes within salmon itself.
Salmon v1.10.0
Fixes
-
This releases addresses a bug in deserializing the
compact_vector(discovered by @jamshed) that could lead to undefined behavior. In fact, this bug was underlying a relatively rare but longstanding issue with the previous biconda build of salmon where a segmentation fault could occur during indexing. -
This release addresses #806, where several output counters used 32-bit values and could produce incorrect values if they exceeded the maximum representable 32-bit integer. These counters have been changed to be 64-bits wide. It is worth noting that this was an issue with the reported values with the output report, but not with the internal representations (i.e. the actual quantifications were not affected).
-
This release incorporates PR #817 by @Gaura that addresses an issue in the processing of some sci-sea 3 data where having a read1 length of 33 or 34 would result in error while being valid lengths. This resulted in salmon refusing to process this data; this has now been fixed (addresses #813).
Improvements
-
Substantial refactoring has been made to parts of the mapping code to clean up redundant code and to make future additions easier.
-
Substantial improvements have been made to the CMake files to reduce the need for redundant copies of files and to propagate target properties more faithfully.
-
Several dependencies have been updated, including
libstadenioanditlib.
Full Changelog: v1.9.0...v1.10.0
Salmon v1.9.0
New features
- Salmon learned the ability to optionally write quality values in output SAM files. If the
--writeQualitiesflag is passed tosalmonwhen mappings are also being written (i.e. with--writeMappings=), then the SAM records for reads will contain the corresponding quality values. Note: You should not pass this flag tosalmonif you are providingFASTArather thanFASTQfiles as input; those files have no quality values, and so this flag is not compatible withFASTAinput. Note: The default behavior remains to not write quality values, as they are not necessary for many downstream applications and they consume considerable extra space in the output. This addresses the feature request in #756; thanks to @A-N-Other for the suggestion.
Fixes
- Addressing #748, raised by @taylorreiter - In single-end mode, all unmapped reads were being reported with the code
u, including those mapped to decoys. This release fixes the output so the proper coded, is reported for those fragments best mapping to decoys.
Improvements
-
When
salmonalevinwas being run upstream ofalevin-fryfor generating a RAD file, it was possible for the file to be truncated if there was insufficient disk space for the output. This release ofsalmonadds a final check of theofstreamafter the call tocloseto determine if the stream is in a bad state. This should lead to better error reporting and proper exit codes if the RAD output ofsalmonalevinis unexpectedly truncated. Thanks to @allyhawkins for helping to uncover this issue. -
The use of multi-stage builds has greatly reduced the size of the Docker image to ~101MB (from ~1.38G); thanks to @kaczmarj for contributing this improvement.
-
Improvements to the documentation have been made and some typos fidex thanks to @molecules.
Full Changelog: v1.8.0...v1.9.0
Salmon v1.8.0
New features & improvements
Note (June 7, 2022) : Updated release tarball to remove problematic libm that was causing illegal instruction on some architectures.
-
The index command now optionally accepts a flag
-n/--no-clipthat will disable homopolymer clipping during reference indexing. -
Addressed an offset miscalculation; this results in further improved specificity in alevin's
--sketchmode.
Fixes
- No other particular bug fixes are noted for this release.
Notes
- Legacy and deprecated
Intel TBBfunctionality has now been removed, andsalmon(andpufferfishupon which it depends) have been updated tooneAPI TBB. The current release requires a recent version ofoneAPI TBB(>= 2021.4.0) library.
Full Changelog: v1.7.0...v1.8.0
Salmon 1.7.0
New features & improvements
-
This release includes a refactoring and optimization of the mapping code in
--sketchmode, further increasing speed; output should remain identical. -
This release adds the
--splitSeqV1and--splitSeqV2flags, that have been the development release for a bit, as simple alternatives to custom geometry when processing SPLiT-seq data foralevin-fryoralevinprocessing.
Fixes
- No particular bug fixes are noted for this release.
Other changes / enhancements
- Explicitly check for valid value of
kbefore calling out to the indexer. This leads to a more informative error message and exit if the user passes an unacceptable value ofk.
Notes
- The
Intel TBBlibrary used internally bysalmon(and used as well inTwoPaCothat is relied upon for compacted reference de Bruijn graph construction) has evolved into theoneAPI TBB. Recent releases of this library (2021.1 and forward) make certain backward incompatible changes and therefore cannot be used to buildsalmon. We anticipate working toward replacing the deprecated and removed functions with the correspondingoneAPIreplacements and idioms, hopefully in the next release ofsalmon. Therefore, we anticipate that this will be the last — or close to the last —salmonrelease to use (and be compatible with) the legacyIntel TBBlibrary. Future releases will likely require a newer version of theoneAPI TBBlibrary instead.
Full Changelog: v1.6.0...v1.7.0