Releases: conda/conda-libmamba-solver
26.4.0
26.4.0 (2026-04-16)
Enhancements
- Enable
use_sharded_repodataby default. The solver will check for
repodata_shards.msgpack.zstand use sharded repodata if it is present in at
least one channel. Sharded repodata can be disabled withconda config --set plugins.use_sharded_repodata falseor 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
- @dholth
- @conda-bot
- @dependabot[bot]
- @pre-commit-ci[bot]
Pull Requests Merged
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #888
- 🤖 Update infrastructure file(s) by @conda-bot in #886
- 🤖 Update infrastructure file(s) by @conda-bot in #892
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #893
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #896
- 🤖 Update infrastructure file(s) by @conda-bot in #895
- 🤖 Update infrastructure file(s) by @conda-bot in #898
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #899
- Bump the github-actions group across 1 directory with 8 updates by @dependabot[bot] in #900
- Enable sharded repodata by default. by @dholth in #890
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #903
- Bump the github-actions group with 2 updates by @dependabot[bot] in #904
- 🤖 Update infrastructure file(s) by @conda-bot in #902
- 🤖 Update infrastructure file(s) by @conda-bot in #907
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #909
- Release 26.4.0 by @dholth in #912
- Update CHANGELOG.md by @dholth in #913
Full Diff: 26.3.0...26.4.0
26.3.0
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.bz2with matching.conda-format packages during shard
traversal ifcondais not in "use_only_tar_bz2" mode; needed as shards
directly adds individual packages to the solver. (#710) - Fall back to
repodata.jsonpath if no channel has
repodata_shards.msgpack.zstinstead of computing repodata subsets for
monolithic channels. (#716) - Ensure
track_featuresfields are recorded properly inconda-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://-hostedrepodata_shards.msgpack.zstand shards
base_url, instead of truncating to justbase_url. (#866)
Docs
- Update documentation to reflect that the cudatoolkit/cpuonly issue has returned. (#815)
Other
- Use lazy
PrefixDatagetter to remove custom workaround forcondaupdate checks. (#784 via #817) - Refactor
LibMambaIndexHelper._channel_urlsto preserve arch/noarch in
Channel()objects; simplify sharded channel handling. (#841) - The
cpuonlymutex 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__cudapackage the mutex appears
to no longer work. Reversing (#131 via #741)
Contributors
New Contributors
- @ryanskeith made their first contribution in #803
- @soapy1 made their first contribution in #828
Full Changelog: https://github.com/conda/conda-libmamba-solver/blob/main/CHANGELOG.md
Full Diff: 25.11.0...26.3.0
25.11.0
✨ 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 trueorCONDA_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 searchor other repodata uses that do not
include a solve.
- When sharded repodata is enabled, the solver checks every channel for an index,
- Add support for CEP 17
python_site_packages_path. (#560 via #628) - Add new messaging for when
condais outdated, environment is frozen, andconda-selfis 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
CondaSolverfrom its canonical location inconda.plugins.types. (#691) - The
cpuonlymutex now correctly prevents CUDA packages from being installed, matching classic solver behavior. (#131 via #741)
Deprecations
- Replace deprecated
conda.core.index._supplement_index_with_systemwithconda.core.index.Index().system_packages. (#654 via #655) - Drop support for Python 3.9. (#747)
Docs
- Update documentation to reflect that the cudatoolkit/cpuonly issue has been resolved for the libmamba solver. (#131)
- Document the sharded repodata implementation. (#756, #745)
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 withdefaults, since Anaconda does not build osx-64 dependencies anymore. (#729, #747)
Contributors
- @agriyakhetarpal made their first contribution in #741
- @dholth
- @jaimergp
- @jezdez
- @jjhelmus
- @kenodegard
- @stacynoland made their first contribution in #766
- @travishathaway
25.4.0
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
pytorchandtorchvisiondidn't work as expected. (#646 via #647) - Avoid
libmambaMatchSpecparsing errors by skipping nameless channel information in passed specs. (#645 via #648)
Contributors
25.3.0
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_channeldeprecation by usinggetattr. (#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
25.1.0
24.11.1
24.11.0
24.11.0rc
Enhancements
- Require
libmambapyv2. This is a big refactor inlibmambainternals, which also allowed us to remove a lot of code inconda-libmamba-solver. (#457)
Deprecations
CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLEDhas 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 nowconda_libmamba_solver.index.IndexHelper. (#457) - Verbose logging in
libsolvhas a big overhead inlibmambav2, so we have disabled it by default (even if the user adds-vvvflags to the CLI). To opt-in, please setCONDA_LIBMAMBA_SOLVER_DEBUG_LIBSOLVto a truthy value. (#457) - Python 3.8 is no longer supported. The minimum version is now 3.9. (#457)