June and July 2026 Releases

The June and July 2026 releases included updates to conda, conda-build, conda-libmamba-solver, conda-pypi, constructor, menuinst, rattler, and more! ๐ All of these have been released to both defaults and conda-forge channels.
Changes in conda 26.7.0โ
To update conda to the latest version, run:
conda install --name base conda=26.7.0
- Large-prefix transaction work: unlink/link ordering no longer does a quadratic scan (about 780ร faster for that step alone on a 50,000-record synthetic prefix),
PrefixGraphbuilds a per-name candidate index, package extraction can use a process pool so zstd work runs outside the GIL, and osx-arm64 batchescodesigninto one end-of-transaction call. - Error guidance scaffolding:
CondaErrorcan carry structured guidance (terminal hints plus aguidancefield in--json), with aconda_error_hintsplugin hook and light starter coverage for a few common errors. This is foundation work for richer hints over time, not a wholesale change to how failures look today. - Leaner CLI path: shell activation skips plugin loading when the plugin manager is not already up; heavy imports are deferred in several modules; progress bars and spinners stay quiet when stdout is not a TTY (and respect
NO_COLOR/TERM=dumb). conda env createis now an alias ofconda create(aligned dry-run output; safer behavior around existing prefixes).- Plugin subcommand aliases;
conda config --show-sourcescan show plugin parameter values;BaseSolverbase class for solver plugins;conda searchworks with sharded repodata (while refusingconda search *). - Fixes include URL-form
MatchSpecchannel identity, cleanup of failed creates, preserving environment history on rollback, and several sharded-repodata / wheel-record edge cases.
Full changelog: 26.7.0
Changes in rattler and py-rattler 0.24.0 / 0.25.0โ
conda install py-rattler=0.25.0
- Faster solves: rattler moved to resolvo 0.11.1, which cuts the larger solve benchmarks by roughly 40% (quetz 413 ms โ 242 ms, tensorflow 283 ms โ 175 ms). Every tool built on rattler gets that without changing a line. Matchspec and version parsing are faster too, which you notice when loading repodata.
- conda packages for iOS and Android: new
ios-*,iossimulator-*andandroid-*subdirs, with the minimum OS version carried as an__iosor__androidvirtual package. Compatibility then falls out of the solver the way__glibcand__osxalready do. The subdirs and virtual packages are going through a draft CEP. - Channel behavior: the gateway follows CEP 42 channel relations, so a channel like bioconda can name conda-forge as its base and asking for
biocondaalone is enough. rattler also implements conda'sflexiblechannel priority. - Working offline: an offline mode keeps the whole stack off the network, and a solve can be restricted to a set of candidates the caller supplies. Build that set from the package cache and a solve that succeeds will install without downloading anything.
- Authentication and CLI: reading a private prefix.dev channel from CI now authenticates itself off a
WWW-Authenticatechallenge, with no per-channel configuration, and OAuth defaults to the device-code flow. New commands:rattler exec,solve, andinject-into-prefix/remove-from-prefix. - py-rattler 0.24.0 brings lockfile v7 (breaking), CEP 42 channel relations, repodata revisions,
__cuda_arch, and extras, conditionals andflagsout of experimental. It also fixes two security advisories (GHSA-h672-p7h7-97v9, CVE-2026-47425), so it is worth updating for those alone. 0.25.0 reworks therepodata_revisionsAPI (breaking) and stops the metadata parsers raising when a component is simply absent.
Full changelogs: py-rattler 0.24.0, 0.25.0, and the rattler releases for the individual crates.
Changes in conda-build 26.7.0โ
conda install --name base conda-build=26.7.0
conda-debugsupports v1 (recipe.yaml) recipes, with additional UX improvements and user docs;conda rendersorts dependencies stably.- v1 build/host platform handling aligned with
meta.yaml(no accidental{build,host}_platforminconda_build_config.yaml; useCONDA_SUBDIR/target_platform). conda developis pending removal in 27.9; prefer editable installs via conda-pypi (conda pypi install --editable <path>).- Negative build numbers fail at metadata validation; duplicate rpaths on macOS are guarded; Jinja variables without spaces (e.g.
{{python_min}}) are found correctly.
Full changelog: 26.7.0
Changes in conda-libmamba-solver 26.6.0 / 26.7.0โ
conda install --name base conda-libmamba-solver=26.7.0
26.6.0:
- Sharded-repodata subset building moves into conda (via
build_repodata_subset); requires conda >=26.5. - Removes
plugins.use_sharded_repodata/CONDA_PLUGINS_USE_SHARDED_REPODATAin favor of conda'srepodata_use_shards. conda updateno longer allows package downgrades; drops directrequests/zstandarddependencies.
26.7.0:
- Large-environment solves cache installed state for the lifetime of a single solve (a 50,000-record prefix that previously timed out after 5+ minutes can complete in on the order of ~10 seconds for install/update/remove-style operations).
- Virtual-package constraints such as
constrainson__cudaare enforced correctly. - Suggests updating conda with
conda selfwhen that plugin is installed.
Full changelogs: 26.6.0, 26.7.0
Changes in conda-pypi 0.10.0 / 0.10.1 / 0.11.0โ
conda install --name base conda-pypi=0.11.0
0.10.0:
- Richer
info/about.jsonwhen converting PyPI projects;external-packageshealth check forconda doctor(with--fixto reinstall eligible packages from conda channels). --dry-run/--yes/ repeated--editablefor editable installs; shorter conda-pypi beta tip (and a setting to toggle the pip warning).
0.10.1:
- Docs landing page focused on
conda installworkflows. - Removes the
conda-pypi-post-install-createpost-install plugin.
0.11.0:
conda pypi index <dir>builds a conda channel from local wheel files.- Direct
.whlinstalls get correctinfo/index.jsonfn/buildmetadata (aligned with repodata v3), fixing lockfile restore mismatches. - The conda-pypi beta tip is visible again at default verbosity.
Full changelogs: 0.10.0, 0.10.1, 0.11.0
Changes in constructor 3.16.0 / 3.16.1 / 3.16.2 / 3.16.3โ
conda install constructor=3.16.3
3.16.0:
- Experimental Windows MSI installers (via BeeWare Briefcase).
installer_type: docker(Dockerfile + staged.sh) anddocker_image_format: tarfor portable images (Buildx).constructor --renderto renderconstruct.yaml.- EXE: Windows path-length check before install, clearer package-cache cleanup on uninstall, and temp dirs under
$INSTDIRto avoid Defender issues with conda-standalone. - Shell installers skip creating
~/.condawhenregister_envsis false.
3.16.1:
- Include Briefcase batch templates so MSI builds work from an installed constructor.
3.16.2:
--installer-typeCLI option.- EXE path-length check also accounts for the package-cache extraction path.
- AzureSignTool verification works when installer paths contain spaces.
3.16.3:
- Set
TEMP/TMPDIRas well asTMPwhen redirecting temp dirs inside$INSTDIR.
Full changelogs: 3.16.0, 3.16.1, 3.16.2, 3.16.3
Changes in menuinst 2.5.0 / 2.5.1 / 2.5.2โ
conda install menuinst=2.5.2
2.5.0:
- Windows fixes for registry quoting, activation scripts with spaces in the path, and
.nonadminhandling under@elevate_as_needed. - Skip malformed menu JSON with a warning; drop Python 3.9.
2.5.1:
- Handle permission errors when writing
menuinst.tomlin read-only environments.
2.5.2:
- Escape white-space characters in Linux desktop files (GHSA-fqh4-w37r-x339).
Full changelogs: 2.5.0, 2.5.1, 2.5.2
Other releasesโ
A few more projects shipped without a deep dive here:
- conda-standalone 26.5.2
- conda-index 0.12.0 / 0.12.1
- conda-package-handling 2.5.0
- conda-package-streaming v0.13.0
- conda-pack 0.9.2
We โค๏ธ our communityโ
Thank you to everyone who landed changes across these releases. A special welcome to contributors who contributed for the first time:
- @Adelagric in conda#16420
- @agriyakhetarpal in rattler#2311
- @Ashish-Kumar-Dash in rattler#2610
- @bdice in conda#16328
- @bltavares in rattler#2533
- @carterbox in conda#16446 and conda-libmamba-solver#962
- @colobas in rattler#2548
- @doraem-on in rattler#2488
- @Functionhx in conda#16391
- @btraven00 in conda#16266
- @eeshsaxena in conda#16338
- @flferretti in rattler#2614
- @jirib in rattler#2524
- @jlmoraleshellin in rattler#2474
- @mgorny in conda-build#6036
- @nehaljwani in rattler#2475
- @Nikil-D-Gr8 in conda-build#6000
- @olantwin in rattler#2594
- @pb01ka in conda-build#5997
- @pya in conda-pypi#368
- @russkel in rattler#2553
- @ytausch in rattler#2595
