The September 2023 releases included updates to five conda community projects: conda, conda-build, conda-libmamba-solver, conda-index, and pycosat! ๐ Each of these have been released to both main
and conda-forge
.
Changes in Conda 23.9.0โ
To update conda, run:
conda install -n base conda=23.9.0
๐ข Special Announcement ๐ขโ
Conda's default solver will change to conda-libmamba-solver
in a special 23.10.0 release in the near future!
You can already benefit from conda-libmamba-solver
today by configuring your conda installation to use it (e.g. by running conda config --set solver libmamba
).
The current "classic" solver is based on pycosat/Picosat and will remain part of conda for the foreseeable future. A fallback is possible and available.
Additional details on this change as well as the full announcement can be found in the conda 23.9.0 changelog.
โจ What's New? โจโ
- A new "auth handler" plugin hook has been added for conda. See the new
conda-auth
plugin for an example. - Index cache metadata is locked by default; a
--no-lock
option is also now available. - A new
context.register_envs
option can control whether to register environments in~/.conda/environments.txt
when they are created. Defaults to true. - New detailed output verbosity level (i.e., the old debug level
-vv
is now-vvv
). - Support for
truststore
to thessl_verify
config option has been added, enabling conda to use the operating system certificate store (requires Python 3.10 or later). emscripten-wasm32
andwasi-wasm32
platforms are now supported.
๐ง What Got Fixed? ๐งโ
conda env create
checks the directory permissions when using pip dependencies before writing to disk.InsecureRequestWarning
for JLAP is hidden whenCONDA_SSL_VERIFY=false
, matching non-JLAP behavior.- The ability to create a conda environment with a colon in the prefix is no longer allowed.
AttributeError
logging response with nonexistent request has been fixed when using JLAP withfile:///
URIs.- For cleaner logs, progress bars no longer show up in non-interactive runs.
--json
and--debug
default toNULL
so as to not overrideCONDA_JSON
andCONDA_DEBUG
environment variables.- Fixed
conda remove --all --json
output. - Test data has been updated to stop triggering security scanners' false-positives.
- No more performance regression of basic commands (e.g.,
conda info
) on WSL. - Conda is now configured to ignore "Retry-After" header to avoid the scenarios when this value is very large and causes conda to hang indefinitely.
JSONDecodeError
onrepodata.info.json
is treated as a warning, equivalent to a missingrepodata.info.json
.- Fixed sorting error for
conda config --show-sources --json
. OSError
infind_commands
is now detected to account for incorrectPATH
entries on Windows.conda env update --prune
uses only the specs coming fromenvironment.yml
file and ignores the history specs.
๐ What's Marked for Deprecation? ๐ โ
This is the first release of conda removing code previously marked as deprecated per the deprecation schedule. The following is a list of what was removed:
conda.another_unicode()
conda._vendor.toolz
conda._vendor.tqdm
conda.auxlib.decorators.memoized
conda.base.context.Context.experimental_solver
conda.base.context.Context.conda_private
conda.base.context.Context.cuda_version
conda.base.context.get_prefix()
conda.cli.common.ensure_name_or_prefix()
--experimental-solver
conda.common.cuda
conda.common.path.explode_directories(already_split)
conda.common.url.escape_channel_url()
conda.core.index.check_whitelist()
conda.core.solve._get_solver_class()
conda.core.subdir_data.read_mod_and_etag()
conda.gateways.repodata.RepodataState.load()
conda.gateways.repodata.RepodataState.save()
conda.lock
conda_env.cli.common.stdout_json()
conda_env.cli.common.get_prefix()
conda_env.cli.common.find_prefix_name()
Changes in Conda-Build 3.27.0โ
To update conda-build, run:
conda install -n base conda-build=3.27.0
โจ What's New? โจโ
- Removed
glob2
dependency. emscripten-wasm32
andwasi-wasm32
platforms are now supported.
๐ง What Got Fixed? ๐งโ
- Imports in conda command plugins are delayed until the command is used, avoiding import-time side effects.
๐ What's New in Documentation? ๐โ
- Improved formatting of
~=
(compatibility release) match spec. - Docs now clarify that the
build
prefix is activated after thehost
prefix. - An explanation has been added stating that conda-build should be run from the base environment.
Changes in Conda-Libmamba-Solver 23.9.0/23.9.1โ
To update conda-libmamba-solver, run:
conda install -n base conda-libmamba-solver=23.9.1
โจ What's New? โจโ
- Increased performance of
notify_conda_outdated
logic. - Libmamba's
repoquery
search features are now exposed as a conda subcommand plugin. - How tasks for
libsolv
are created has been rewritten, making use oflibmamba
'sadd_pin
features (requireslibmambapy >=1.5.1
). - Name-only pins now lock the corresponding package if installed.
- The
.solv
cache for repodata is used if available and recent.
๐ง What Got Fixed? ๐งโ
- The solver no longer bounces between two compatible solutions when the same command is run twice in a row.
- Commands with no channels passed are handled gracefully.
- Workaround added for missing
noarch
field in returnedPackageRecord
payload. - A bug where the
--prune
flag was not working correctly inconda env update
commands has been fixed. - Environments are no longer aggressively updated to higher priority channels under certain conditions.
- No more injection of channels from installed packages that do not exist or are unavailable.
- All configured channels in
PackagesNotFoundError
exceptions print correctly. - No more crashes when a
MatchSpec
with a build string is specified in the CLI and there's a pinned spec for the same package name. defaults::pkg
workarounds are only applied for the default valuedefault_channels
.- Users won't be able to override pinned specs with incompatible CLI specs anymore. Instead, they must modify their pinned specs explicitly.
๐ What's New in Documentation? ๐โ
- Intentional deviations from conda's
classic
solver behavior are now documented.
Changes in Conda-Index 0.3.0โ
To update conda-index, run:
conda install -n base conda-index=0.3.0
โจ What's New? โจโ
--run-exports
has been added to generate CEP-12 compliantrun_exports.json
documents for eachsubdir
.- Pretty-print
repodata.json
is no longer default, saving time and space. - Version requirement:
conda >= 4.14
.
Changes in Pycosat 0.6.5/0.6.6โ
To update conda-index, run:
conda install -n base pycosat=0.6.6
โจ What's New? โจโ
- Pycosat 0.6.4 accidentally did not include the changes intended to be released. Pycosat 0.6.5 includes those changes.
PyMem_Calloc()
is utilized in order to initialize memory to0
.
We โค๏ธ Our Communityโ
Altogether, we had 11 (!) new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible.
- @boldorider4 made their first contribution in conda-build#4960
- @DaveKaretnyk made their first contribution in conda-build#5004
- @dholth made their first contribution in pycosat#54
- @jmcarpenter2 made their first contribution in conda#13034
- @Mon-ius made their first contribution in conda#12811
- @otaithleigh made their first contribution in conda#13035
- @psteyer made their first contribution in conda#11610
- @scdub made their first contribution in conda-build#4965
- @tarcisioe made their first contribution in conda#9614
- @wolfv made their first contribution in conda#13095 and conda-build#4813
- @zeehio made their first contribution in conda#13075
If you have ideas or want to help improve any of the conda community projects, we love to see new (and returning) contributors! ๐