Skip to content

Releases: COMBINE-lab/salmon

v1.11.4

11 Mar 07:05

Choose a tag to compare

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 alevin has 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/--sketch for 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:


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/
  • 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.txt has been split into focused, single-responsibility modules, dramatically improving build system readability and maintainability.
  • Global build state in src/CMakeLists.txt has been reduced; target properties are now propagated explicitly via target_* 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 FastxParser FASTQ/FASTA reading layer has been replaced with a new FQFeeder adapter, 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-salmon branch 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 quant functionality 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 quant and salmon index. No flags have been added or removed.
  • Alignment-based mode (salmon quant -a) is fully preserved.

Upgrading from v1.10.3

  1. Replace your salmon binary with the v1.11.2 release.
  2. Rebuild your index:
    salmon index -t transcriptome.fa -d decoys.txt -i salmon_index_v1.11.2/
    (Passing multiple threads with -p is recommended to reduce index build time.)
  3. If you use salmon alevin, migrate to piscem + alevin-fry. All salmon quant and 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

  1. 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

  2. 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

  3. 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

11 Mar 06:28

Choose a tag to compare

Full Changelog: v1.11.2...v1.11.3

v1.11.2

11 Mar 03:38

Choose a tag to compare

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 alevin has 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/--sketch for 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:


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/
  • 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.txt has been split into focused, single-responsibility modules, dramatically improving build system readability and maintainability.
  • Global build state in src/CMakeLists.txt has been reduced; target properties are now propagated explicitly via target_* 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 FastxParser FASTQ/FASTA reading layer has been replaced with a new FQFeeder adapter, 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-salmon branch 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 quant functionality 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 quant and salmon index. No flags have been added or removed.
  • Alignment-based mode (salmon quant -a) is fully preserved.

Upgrading from v1.10.3

  1. Replace your salmon binary with the v1.11.2 release.
  2. Rebuild your index:
    salmon index -t transcriptome.fa -d decoys.txt -i salmon_index_v1.11.2/
    (Passing multiple threads with -p is recommended to reduce index build time.)
  3. If you use salmon alevin, migrate to piscem + alevin-fry. All salmon quant and 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

  1. 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

  2. Pibiri GE, Patro R, et al. [preprint]. bioRxiv 2026. https://www.biorxiv.org/content/10.64898/2026.01.21.700884v1

  3. 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

11 Mar 03:20

Choose a tag to compare

Full Changelog: v1.11.0...v1.11.1

Full Changelog: v1.11.0...v1.11.1

v1.11.0

11 Mar 02:46

Choose a tag to compare

What's Changed

Full Changelog: v1.10.3...v1.11.0

Salmon v1.10.1

12 Mar 05:35
c380f53

Choose a tag to compare

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

24 Feb 03:10
35558d5

Choose a tag to compare

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 libstadenio and itlib.

Full Changelog: v1.9.0...v1.10.0

Salmon v1.9.0

23 Jun 18:55

Choose a tag to compare

New features

  • Salmon learned the ability to optionally write quality values in output SAM files. If the --writeQualities flag is passed to salmon when 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 to salmon if you are providing FASTA rather than FASTQ files as input; those files have no quality values, and so this flag is not compatible with FASTA input. 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 code d, is reported for those fragments best mapping to decoys.

Improvements

  • When salmon alevin was being run upstream of alevin-fry for generating a RAD file, it was possible for the file to be truncated if there was insufficient disk space for the output. This release of salmon adds a final check of the ofstream after the call to close to determine if the stream is in a bad state. This should lead to better error reporting and proper exit codes if the RAD output of salmon alevin is 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

09 Mar 00:31

Choose a tag to compare

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-clip that will disable homopolymer clipping during reference indexing.

  • Addressed an offset miscalculation; this results in further improved specificity in alevin's --sketch mode.

Fixes

  • No other particular bug fixes are noted for this release.

Notes

  • Legacy and deprecated Intel TBB functionality has now been removed, and salmon (and pufferfish upon which it depends) have been updated to oneAPI TBB. The current release requires a recent version of oneAPI TBB (>= 2021.4.0) library.

Full Changelog: v1.7.0...v1.8.0

Salmon 1.7.0

16 Feb 18:04

Choose a tag to compare

New features & improvements

  • This release includes a refactoring and optimization of the mapping code in --sketch mode, further increasing speed; output should remain identical.

  • This release adds the --splitSeqV1 and --splitSeqV2 flags, that have been the development release for a bit, as simple alternatives to custom geometry when processing SPLiT-seq data for alevin-fry or alevin processing.

Fixes

  • No particular bug fixes are noted for this release.

Other changes / enhancements

  • Explicitly check for valid value of k before calling out to the indexer. This leads to a more informative error message and exit if the user passes an unacceptable value of k.

Notes

  • The Intel TBB library used internally by salmon (and used as well in TwoPaCo that is relied upon for compacted reference de Bruijn graph construction) has evolved into the oneAPI TBB. Recent releases of this library (2021.1 and forward) make certain backward incompatible changes and therefore cannot be used to build salmon. We anticipate working toward replacing the deprecated and removed functions with the corresponding oneAPI replacements and idioms, hopefully in the next release of salmon. Therefore, we anticipate that this will be the last — or close to the last —salmon release to use (and be compatible with) the legacy Intel TBB library. Future releases will likely require a newer version of the oneAPI TBB library instead.

Full Changelog: v1.6.0...v1.7.0