October 2026 Releases

The October 2026 release cycle is here, headlined by conda 26.10.0, the special release that makes Rattler the default solver. The classic solver now ships as the separate conda-pycosat-solver plugin, libmamba remains available as an alternative, and the solver plugins and py-rattler received matching updates.
Rattler is now the default solver. With conda 26.10.0, fresh installations and upgrades that do not have an explicit solver setting use conda-rattler-solver. The previous default, libmamba, remains available, as does the classic solver through conda-pycosat-solver. Existing solver: classic settings and --solver=classic commands keep working, and the plugin also accepts --solver=pycosat.
If you explicitly selected a solver, conda keeps that choice when you upgrade. To go back to libmamba:
conda config --set solver libmamba
To use libmamba for a single command instead:
conda install --solver=libmamba ...
See the conda-rattler-solver documentation and its known limitations for what is different from the classic and libmamba solvers. Please report problems in the conda-rattler-solver issue tracker.
Changes in conda 26.10.0
To update conda to the latest version, run:
conda install --name base conda=26.10.0
If you already have conda-self installed, you can use:
conda self update
- The default solver is now Rattler. The switch applies to fresh installations and to upgrades that do not have an explicit solver setting. libmamba and the classic solver remain available.
--disable-pluginsand--enable-pluginslet you turn external plugins off and selectively re-enable the ones you need, including solver plugins needed for recovery.- Dependency specs can request CEP 44
extra_dependsgroups, including in sharded repodata. - Configuration writes are atomic when the directory permissions allow it, preserve macOS ACLs, and reject a write if the file changed in the meantime.
conda env removeandconda remove --allask once before deleting an environment, with the package plan and the prefix-deletion warning shown together.conda config --getno longer writes to the configuration file when no key is given.- Remote requests that fail with HTTP 502 or 504 are retried.
- Conda now requires Python 3.11 or newer to run. It can still create and manage environments with Python 3.10 and older; this only affects the interpreter that runs conda.
- The built-in classic solver is pending deprecation. The
conda.plugins.solvers,conda.resolve,conda.common.logic, andconda.common._logicmodules will be removed in 27.9. Useconda-pycosat-solverinstead. See the full release notes for other pending API deprecations.
Full changelog: 26.10.0
Changes in conda-rattler-solver 26.10.0 / 26.10.1 / 26.10.2
The 26.10 line is the first release of the Rattler solver as conda's default.
- Multichannel support: conda's
defaults, conda-build'slocal, and condarc'scustom_multichannelsare passed to the solver asrattler.MultiSourcegroups. Members share a channel-priority tier, and a spec such asdefaults::pythoncan match any member. - Updates avoid unnecessary build downgrades while still allowing the dependency downgrades needed to satisfy pins and package requirements.
conda updatealso retries with looser dependency constraints when channel changes make the first solve unsatisfiable. - Dependencies of explicitly requested extras are kept when pruning, and frozen installs keep compatible packages from the environment history.
- Handles pip-installed package records that do not have download URLs when pip interoperability is enabled.
- Requires
py-rattler >=0.28.1,<0.29.0a0and conda 26.10 or newer. - The solver documentation site is now available at conda.github.io/conda-rattler-solver.
Full changelogs: 26.10.0, 26.10.1, 26.10.2
Changes in conda-pycosat-solver 26.10.0
The classic solver is now a separate plugin. conda-pycosat-solver 26.10.0 is bundled with conda 26.10.0. Both --solver=classic and --solver=pycosat select it, and existing solver: classic configuration keeps working.
Full changelog: 26.10.0
Changes in conda-libmamba-solver 26.10.0 / 26.10.1
libmamba is no longer the default solver, but it remains available for anyone who sets solver: libmamba or passes --solver=libmamba.
conda update --allkeeps Python within its current major and minor series, matching the classic solver.- Solver errors now report all missing requested packages, not just the first one.
- Package timestamps already in milliseconds are no longer multiplied again, and package download URLs keep percent-encoded credentials and query parameters.
- 26.10.1 sorts solver jobs in Python instead of relying on libsolv's alphabetical ordering, which fixes a
track_featurespriority bug that could select the wrong Python variant. It also avoids a repeated failing solve attempt and fixes aCONDA_LIBMAMBA_SOLVER_MAX_ATTEMPTScrash on empty environments. - The solver now requires conda 26.7.1 or newer and
libmambapy2.3.2 or newer. Its recipe requirescertifiandca-certificates2026.10.19 or newer for the refreshed CA bundles.
Full changelogs: 26.10.0, 26.10.1
Changes in py-rattler 0.28.0 / 0.28.1
py-rattler 0.28 is the version required by conda-rattler-solver 26.10. It includes security fixes for the bundled TLS stack, which stop trusting the compromised eMudhra/emSign intermediates, and 0.28.1 updates the zip crate used to read .conda archives.
- Build strings are now
BuildStringobjects instead of plain strings. New values are validated against CEP 26, and comparisons such asrecord.build == "py312_0"now need an explicitstr(record.build). exclude_newernow applies to locked and pinned packages as well as channel records.- Candidate versions are ranked once per package, cutting solve times by about 9% on average and up to 14% on the largest benchmark environments.
- Activation works again on macOS 12.2 and older, and macOS binaries re-signed after prefix replacement keep their code-signing identifier and requirements.
Full changelogs: 0.28.0, 0.28.1
We ❤️ our community
Thank you to everyone who contributed to these releases. Welcome to the first-time contributors to these projects:
