Skip to content

Releases: conda/conda-libmamba-solver

26.4.0

17 Apr 12:03
3055dd0

Choose a tag to compare

26.4.0 (2026-04-16)

Enhancements

  • Enable use_sharded_repodata by default. The solver will check for
    repodata_shards.msgpack.zst and use sharded repodata if it is present in at
    least one channel. Sharded repodata can be disabled with conda config --set plugins.use_sharded_repodata false or the environment variable
    CONDA_PLUGINS_USE_SHARDED_REPODATA=0. (#836)

Bug fixes

  • Improve timeout behavior when fetching shards. (#890)
  • Fix race condition while reading shards index cache. (#890)

Contributors

Pull Requests Merged

Full Diff: 26.3.0...26.4.0

26.3.0

05 Mar 17:24
482a596

Choose a tag to compare

26.3.0 (2026-03-04)

✨ Special Announcement ✨

Following the preliminary support for fetching CEP 16 sharded repodata in conda-libmamba-solver 25.11.0, this release marks this feature as ready to be used by a wider audience.

See the 25.11.0 release notes for more information on how to enable it.

Enhancements

  • Add offline mode support for sharded repodata. When offline mode is enabled,
    the solver will use cached shards even if they are expired, and gracefully
    fall back to non-sharded repodata if no cache exists. Missing shards in
    offline mode return empty shards rather than failing. (#710)

Bug fixes

  • Remove .tar.bz2 with matching .conda-format packages during shard
    traversal if conda is not in "use_only_tar_bz2" mode; needed as shards
    directly adds individual packages to the solver. (#710)
  • Fall back to repodata.json path if no channel has
    repodata_shards.msgpack.zst instead of computing repodata subsets for
    monolithic channels. (#716)
  • Ensure track_features fields are recorded properly in conda-meta/*.json. (#804 via #805)
  • Remove sqlite3 sharded repodata cache and create another on error. (#823)
  • Ensure that channel order is preserved when fetching data from shards. (#824 via #828)
  • Explicitly close sqlite3 connections after shard traversal to avoid a Python
    3.13+ warning. (#843).
  • Fall back to repodata.json, but don't mark shards as unavailable, unless we
    receive a 4xx error code besides 416. (#844)
  • Use relative join on s3://-hosted repodata_shards.msgpack.zst and shards
    base_url, instead of truncating to just base_url. (#866)

Docs

  • Update documentation to reflect that the cudatoolkit/cpuonly issue has returned. (#815)

Other

  • Use lazy PrefixData getter to remove custom workaround for conda update checks. (#784 via #817)
  • Refactor LibMambaIndexHelper._channel_urls to preserve arch/noarch in
    Channel() objects; simplify sharded channel handling. (#841)
  • The cpuonly mutex no longer correctly prevents CUDA packages from being
    installed. For a time it appeared to work when non-cuda systems showed a
    virtual package __cuda=0=0, but with no __cuda package the mutex appears
    to no longer work. Reversing (#131 via #741)

Contributors

New Contributors

Full Changelog: https://github.com/conda/conda-libmamba-solver/blob/main/CHANGELOG.md
Full Diff: 25.11.0...26.3.0

25.11.0

25 Nov 11:00
2abc8f7

Choose a tag to compare

✨ Special Announcement ✨

This release includes preliminary support for fetching CEP 16 sharded repodata, a substantially more efficient way of distributing the necessary metadata to install packages in your environments.

You can try it by:

  • Enabling it in your settings with conda config --set plugins.use_sharded_repodata true
  • Setting this environment variable: CONDA_PLUGINS_USE_SHARDED_REPODATA=1

Note that sharded repodata requires that the target channels expose the necessary metadata too, so it will only work with CEP-16-ready deployments. conda-libmamba-solver will fallback to traditional (monolithic) repodata if not available, so you can mix sharded and non-sharded channels without problems.

Enhancements

  • Add experimental support for CEP 16 sharded repodata. Enable it with conda config --set plugins.use_sharded_repodata true or CONDA_PLUGINS_USE_SHARDED_REPODATA=1. (#684, #695, #696, #715 via #722, #730, #748, #736, #756, #762)
    • When sharded repodata is enabled, the solver checks every channel for an index,
      repodata_shards.msgpack.zst, and re-checks every 7 days if not found. It builds a subset of
      repodata by recursively traversing the dependencies of all installed and requested packages,
      using shards to fetch only the package metadata that could possibly be part of the solution from
      each channel. This smaller amount of package metadata is sent to the solver. Sharded repodata can
      save a significant amount of bandwith, memory, and parse time when installing packages.
    • Cache shards in a sqlite database in ${CONDA_PREFIX}/pkgs/cache/repodata_shards.db.
    • This implementation does not use shards for conda search or other repodata uses that do not
      include a solve.
  • Add support for CEP 17 python_site_packages_path. (#560 via #628)
  • Add new messaging for when conda is outdated, environment is frozen, and conda-self is installed. (#753 via #766)
  • Add a codspeed benchmarking GitHub action and a few benchmarks. (#754 via #755)

Bug fixes

  • Constrain the torchvision version in test_pytorch_gpu. (#659 via #661)
  • Correctly record channel platform in conda-meta record files. (#662 via #663)
  • Import CondaSolver from its canonical location in conda.plugins.types. (#691)
  • The cpuonly mutex now correctly prevents CUDA packages from being installed, matching classic solver behavior. (#131 via #741)

Deprecations

  • Replace deprecated conda.core.index._supplement_index_with_system with conda.core.index.Index().system_packages. (#654 via #655)
  • Drop support for Python 3.9. (#747)

Docs

Other

  • Improve repository server in test suite. (#700)
  • Add Python 3.13 to the CI matrix. (#747)
  • Test osx-64 with conda-forge, and osx-arm64 with defaults, since Anaconda does not build osx-64 dependencies anymore. (#729, #747)

Contributors

25.4.0

25 Apr 16:01
b088a94

Choose a tag to compare

Enhancements

  • Use conda.reporters.get_spinner() to support conda reporter plugins. (#641)

Bug fixes

  • Always percent-encode spaces in file:// channel URLs. (#640)
  • Fix a bug where auto-selection of GPU variants of pytorch and torchvision didn't work as expected. (#646 via #647)
  • Avoid libmamba MatchSpec parsing errors by skipping nameless channel information in passed specs. (#645 via #648)

Contributors

25.3.0

14 Mar 18:19
d363434

Choose a tag to compare

Bug fixes

  • Fix issue with content trust post-solve hooks that prevented signatures from being verified when the solved package records didn't include subdir information in their channel metadata. (#616 via #617)
  • Protect against conda.base.context.context.restore_free_channel deprecation by using getattr. (#629)
  • Remove all packages with --no-deps, not just the last one to be analyzed. (#632)

Docs

  • Mention conda ecosystem's adaptation of libsolv. (#624)

Contributors

25.1.1

24 Jan 12:08
539f05b

Choose a tag to compare

Bug fixes

  • Consider whether the full spec matches anything installed (not just name) when --satisfied-skip-solve is in use. (#605 via #606)

Contributors

25.1.0

21 Jan 08:11
17adb32

Choose a tag to compare

Bug fixes

  • Fix dependency handling in conda env update --prune. (#595 via #596)
  • Accept both pathlib.Path() and str for LibMambaSolver() prefix. (#586)

Contributors

24.11.1

04 Dec 11:49
e09df12

Choose a tag to compare

Bug fixes

  • Ensure PackageRecord URLs are percent-decoded before passing them back to conda. (#583)

Contributors

24.11.0

27 Nov 15:26
93ac81a

Choose a tag to compare

🚀 This release ships compatibility for libmamba 2.x. It's a major rewrite! Make sure to check the changelog entry for 24.11.0rc for more details.

Bug fixes

  • Load SOLV repodata cache in offline mode too. (#570)

Contributors

24.11.0rc

04 Nov 10:49
dbecb34

Choose a tag to compare

24.11.0rc Pre-release
Pre-release

Enhancements

  • Require libmambapy v2. This is a big refactor in libmamba internals, which also allowed us to remove a lot of code in conda-libmamba-solver. (#457)

Deprecations

  • CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED has no effect anymore. Channels coming from installed packages are no longer added to the channel list. (#411 via #457)
  • Removed conda_libmamba_solver.state.BaseIndexHelper. The base class is now conda_libmamba_solver.index.IndexHelper. (#457)
  • Verbose logging in libsolv has a big overhead in libmamba v2, so we have disabled it by default (even if the user adds -vvv flags to the CLI). To opt-in, please set CONDA_LIBMAMBA_SOLVER_DEBUG_LIBSOLV to a truthy value. (#457)
  • Python 3.8 is no longer supported. The minimum version is now 3.9. (#457)

Contributors