Skip to main content

Β· 7 min read
Ken Odegard

The January 2024 releases included updates to four conda community projects: conda, conda-build, conda-libmamba-solver, and conda-index! πŸŽ‰ Each of these have been released to both main and conda-forge.

Changes in Conda 24.1.0/24.1.1/24.1.2​

To update conda, run:

conda install -n base conda=24.1.2

✨ What's New? βœ¨β€‹

  • Verify signatures on to-be-installed packages instead of on all packages.
  • Add new pre-solves and post-solves plugin hooks.
  • Add support for Python 3.12.
  • Check repodata.json.zst for faster repodata downloads.
  • Add --skip-flexible-search option in conda search to skip flexible search.
  • Provide a more useful warning when attempting to rename a non-existent prefix.
  • Add a new flag --keep-env to be used with conda remove --all. It allows users to delete all packages in the environment while retaining the environment itself.
  • Add a Y/N prompt warning users that conda env remove and conda remove --all deletes not only the conda packages but the entirety of the specified environment.
  • Add --repodata-use-zst/--no-repodata-use-zst flag to control repodata.json.zst check; corresponding repodata_use_zst: true/false setting for .condarc. Default is to check for repodata.json.zst. Disable if remote returns unparsable repodata.json.zst instead of correct data or 404.

πŸ”§ What Got Fixed? πŸ”§β€‹

  • Create the ~/.conda directory before trying to write to the environments.txt file.
  • Ensure PackageRecord.timestamp is dumped in milliseconds.
  • Fix error when setting a non-default repodata filename via CONDA_REPODATA_FNS.
  • Fix the config file location where the integrated Anaconda client gateway loads user configuration from. This is a regression introduced in conda 23.11.0 when the platformdirs library was adopted.
  • Interpret missing Cache-Control header as max-age=0 instead of exception.
  • (24.1.1) Fallback to repodata.json if repodata.json.zst cannot be decompressed as zstandard.
  • (24.1.1) Fallback to repodata.json from repodata.json.zst on most 4xx error codes.
  • (24.1.2) Fix conda.core.subdir_data.fetch_repodata_remote_request failure when repodata_use_zst is enabled.

πŸŒ… What's Marked for Deprecation? πŸŒ…β€‹

The conda_env.* modules have been merged into the conda package!

To improve the integration of the conda env subcommand (previously standalone), we've moved its code into the conda package, while allowing old conda env commands to still work via Python import redirects. This is a first step of many to improving the user experience of the conda command line interface related to environment management.

πŸ“„ What's New in Documentation? πŸ“„β€‹

  • Update Getting Started documentation in User Guide.
  • Add GoatCounter for docs site analytics.
  • Improve type hints and doc strings.

Changes in Conda-Build 24.1.0/24.1.1/24.1.2​

To update conda-build, run:

conda install -n base conda-build=24.1.2

✨ What's New? βœ¨β€‹

  • Update conda inspect channels to use updated solver/transaction logic.
  • Relax script_env error in outputs when variable referenced in script_env is not defined. This unifies current behavior with the top-level build.
  • Add support for Python 3.12.
  • Adopt calendar versioning (CalVer) per CEP-8 for consistency with conda.
  • Adopt expedited CEP-9 deprecation policy.

πŸ”§ What Got Fixed? πŸ”§β€‹

  • (24.1.1) Fix nonzero exitcode on success.
  • (24.1.2) Fix rpaths patcher being run on symbolic links.
  • (24.1.2) Fix corrupted package cache for outputs in subpackage tests.

πŸŒ… What's Marked for Deprecation? πŸŒ…β€‹

This is the first release of conda-build removing code previously marked as deprecated per the expedited deprecation schedule. The following is a list of what was removed:

  • conda_build.api.update_index
  • conda_build.cli.main_build.main
  • conda_build.cli.main_convert.main
  • conda_build.cli.main_debug.main
  • conda_build.cli.main_develop.main
  • conda_build.cli.main_index
  • conda_build.cli.main_inspect.main
  • conda_build.cli.main_metapackage.main
  • conda_build.cli.main_render.main
  • conda_build.cli.main_skeleton.main
  • conda_build.conda_interface.IndexRecord
  • conda_build.conda_interface.CrossPlatformStLink
  • conda_build.conda_interface.SignatureError
  • conda_build.conda_interface.which_package
  • conda_build.conda_interface.which_prefix
  • conda_build.conda_interface.get_installed_version
  • conda_build.config.python2_fs_encode
  • conda_build.config._ensure_dir
  • conda_build.config.Config.CONDA_LUA
  • conda_build.config.Config.CONDA_PY
  • conda_build.config.Config.CONDA_NPY
  • conda_build.config.Config.CONDA_PERL
  • conda_build.config.Config.CONDA_R
  • conda_build.environ.clean_pkg_cache
  • conda_build.index.update_index
  • conda_build.inspect_pkg.dist_files
  • conda_build.inspect_pkg.which_package(avoid_canonical_channel_name)
  • conda_build.inspect_pkg._installed
  • conda_build.metadata.Metadata.name(fail_ok)
  • conda_build.os_utils.ldd.get_package_files
  • conda_build.os_utils.liefldd.is_string
  • conda_build.os_utils.liefldd.codefile_type_liefldd
  • conda_build.os_utils.liefldd.codefile_type_pyldd
  • conda_build.os_utils.liefldd.codefile_type
  • conda_build.os_utils.pyldd.mach_o_change
  • conda_build.os_utils.pyldd.is_codefile
  • conda_build.os_utils.pyldd.codefile_type
  • conda_build.os_utils.pyldd.inspect_rpaths
  • conda_build.os_utils.pyldd.get_runpaths
  • conda_build.os_utils.pyldd.otool_sys
  • conda_build.os_utils.pyldd.ldd_sys
  • conda_build.plugin.index
  • conda_build.post.determine_package_nature
  • conda_build.post.library_nature(subdir)
  • conda_build.post.library_nature(bldpkgs_dirs)
  • conda_build.post.library_nature(output_folder)
  • conda_build.post.library_nature(channel_urls)
  • conda_build.post.dists_from_names
  • conda_build.post.FakeDist
  • conda_build.post._get_fake_pkg_dist
  • conda_build.utils.relative
  • conda_build.utils.samefile

In addition, we continued with the effort to remove any remaining usage of the legacy conda.models.dist.Dist object:

  • Mark conda inspect channels --test-installable as pending deprecation.
  • Mark conda_build.inspect_pkg.check_install(package) as pending deprecation in favor of conda_build.inspect_pkg.check_install(subdir).
  • Mark conda_build.inspect_pkg.check_install(prepend) as pending deprecation.
  • Mark conda_build.inspect_pkg.check_install(minimal_hint) as pending deprecation.
  • Mark conda_build.conda_interface.Dist as pending deprecation.
  • Mark conda_build.conda_interface.display_actions as pending deprecation.
  • Mark conda_build.conda_interface.execute_actions as pending deprecation.
  • Mark conda_build.conda_interface.execute_plan as pending deprecation.
  • Mark conda_build.conda_interface.get_index as pending deprecation.
  • Mark conda_build.conda_interface.install_actions as pending deprecation.
  • Mark conda_build.conda_interface.linked as pending deprecation.
  • Mark conda_build.conda_interface.linked_data as pending deprecation.
  • Mark conda_build.utils.linked_data_no_multichannels as pending deprecation.
  • Mark conda_build.environ.get_install_actions as pending deprecation in favor of conda_build.environ.get_package_records.
  • Mark conda_build.environ.create_env(specs_or_actions) as pending deprecation in favor of conda_build.environ.create_env(specs_or_precs).
  • Mark conda_build.index.channel_data as pending deprecation.
  • Mark conda_build.index._determine_namespace as pending deprecation.
  • Mark conda_build.index._make_seconds as pending deprecation.
  • Mark conda_build.index.REPODATA_VERSION as pending deprecation.
  • Mark conda_build.index.CHANNELDATA_VERSION as pending deprecation.
  • Mark conda_build.index.REPODATA_JSON_FN as pending deprecation.
  • Mark conda_build.index.REPODATA_FROM_PKGS_JSON_FN as pending deprecation.
  • Mark conda_build.index.CHANNELDATA_FIELDS as pending deprecation.
  • Mark conda_build.index._clear_newline_chars as pending deprecation.
  • Mark conda_build.index._apply_instructions as pending deprecation.
  • Mark conda_build.index._get_jinja2_environment as pending deprecation.
  • Mark conda_build.index._maybe_write as pending deprecation.
  • Mark conda_build.index._maybe_build_string as pending deprecation.
  • Mark conda_build.index._warn_on_missing_dependencies as pending deprecation.
  • Mark conda_build.index._cache_post_install_details as pending deprecation.
  • Mark conda_build.index._cache_recipe as pending deprecation.
  • Mark conda_build.index._cache_run_exports as pending deprecation.
  • Mark conda_build.index._cache_icon as pending deprecation.
  • Mark conda_build.index._make_subdir_index_html as pending deprecation.
  • Mark conda_build.index._make_channeldata_index_html as pending deprecation.
  • Mark conda_build.index._get_source_repo_git_info as pending deprecation.
  • Mark conda_build.index._cache_info_file as pending deprecation.
  • Mark conda_build.index._alternate_file_extension as pending deprecation.
  • Mark conda_build.index._get_resolve_object as pending deprecation.
  • Mark conda_build.index._get_newest_versions as pending deprecation.
  • Mark conda_build.index._add_missing_deps as pending deprecation.
  • Mark conda_build.index._add_prev_ver_for_features as pending deprecation.
  • Mark conda_build.index._shard_newest_packages as pending deprecation.
  • Mark conda_build.index._build_current_repodata as pending deprecation.
  • Mark conda_build.index.ChannelIndex as pending deprecation.
  • Mark conda_build.render.actions_to_pins as pending deprecation.
  • Mark conda_build.render.execute_download_actions(actions) as pending deprecation in favor of conda_build.render.execute_download_actions(precs).
  • Mark conda_build.render.get_upstream_pins(actions) as pending deprecation in favor of conda_build.render.get_upstream_pins(precs).

πŸ“„ What's New in Documentation? πŸ“„β€‹


Changes in Conda-Libmamba-Solver 24.1.0​

To update conda-libmamba-solver, run:

conda install -n base conda-libmamba-solver=24.1.0

✨ What's New? βœ¨β€‹

  • Prioritize explicitly requested specs with stricter constraints over implicit ones or name-only specs (e.g. a CLI-specified name=version=build will be sent to the solver before CLI-specified name=version and name).
  • Load pkgs_dirs records when called in offline mode.

πŸ”§ What Got Fixed? πŸ”§β€‹

  • Fix a regression introduced in 23.11.1, where certain solves would hard crash due to the given specs input order.
  • Properly propagate customized local channels (conda-build workspaces). Requires libmamba 1.5.6 or above.
  • Do not raise an error if an unsupported MatchSpec field can be safely dropped instead. Currently ignoring url, md5 and sha256.
  • Do not crash if a stateless repodata cache is accessed with --offline or --use-index-cache.

Changes in Conda-Index 0.4.0​

To update conda-index, run:

conda install -n base conda-index=0.4.0

✨ What's New? βœ¨β€‹

  • Add --compact-json/--no-compact-json option, default to compact.
  • Add an index subcommand using conda's new subcommand plugin hook, allowing conda index instead of python -m conda_index. Note the CLI has changed compared to old conda-index. When conda-build < 24.1.0 is installed, the older conda-index code will still be used instead of this plugin.

πŸ”§ What Got Fixed? πŸ”§β€‹

  • Check size in addition to mtime when deciding which packages to index.
  • Update cached index.json, not just stat values, for changed packages that are already indexed.

We ❀️ Our Community​

Altogether, we had 2 (!) new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible.

If you have ideas or want to help improve any of the conda community projects, we love to see new (and returning) contributors! πŸ˜„

Β· One min read
Dave Clements

Conda is moving our social media presence from Twitter/X to Mastodon and LinkedIn at the start of 2024. It's past time to move into spaces that are welcoming and more in line with our community values.

Going forward, you can find us at

If you are on either platform then please follow and link to those accounts, or, just use the #conda hashtag.

We won't close the Twitter account. We will update it to say it is no longer active, and point users to the conda communities on Mastodon and LinkedIn. If you are active on Twitter, we encourage you to also use the #conda hashtag.

We hope to see you on Mastodon and LinkedIn in 2024!

PS: conda-forge is discussing making the same move.

Β· 6 min read
Ken Odegard

The November 2023 releases included updates to three conda community projects: conda, conda-build, and conda-libmamba-solver! πŸŽ‰ Each of these have been released to both main and conda-forge.

Changes in Conda 23.11.0​

To update conda, run:

conda install -n base conda=23.11.0

πŸ“’ Special Announcement πŸ“’β€‹

New menuinst v2 support!

Β· 3 min read
Jaime RodrΓ­guez-Guerra
Jannis Leidel

With this 23.10.0 release we are changing the default solver of conda to conda-libmamba-solver! πŸ₯³ πŸš€β€‹

libmamba builds on libsolv, a much faster solver from openSUSE. The previous "classic" solver is based on pycosat/Picosat and will remain part of conda for the foreseeable future. A fallback is possible and available.

Β· 6 min read
Ken Odegard

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 πŸ“’β€‹

info

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.

Β· 7 min read
Pinak Datta

Welcome to the second issue of the conda Community Newsletter! We're excited to bring you the latest updates and insights, packed with valuable information and exciting developments.

In this issue, we've got a diverse range of topics to cover, including Upcoming Events, new tools like conda-store, thought-provoking discussions on conda's free nature, plugin hooks, and intriguing projects like Pandata. Plus, we'll delve into recent releases that promise to enhance your conda experience.

But that's not all! We'll also highlight one job opportunity and share news about recent talks from Travis Hathaway and Bianca Henderson, now available for public consumption.

Β· One min read
Dave Clements

Image credit: Is conda free?


Hi All,

A new blog post, titled "Is conda Free?", answers your questions about:

  1. what is free to use in the conda ecosystem (most everything),
  2. what parts of that ecosystem may not be free, and
  3. under what clearly defined circumstances those maybe-not-free parts can still be free after all.

There has been confusion around this since Anaconda introduced its Terms of Service in 2020. I hope the post banishes that confusion (forevermore!). The post is framed as a discussion, introducing why there might be confusion about this topic, and then diving into the details.

Happy reading, and using the conda ecosystem too!
Dave C

PS: If reading the discussion doesn't grab you then go straight the summary and just pretend you read the whole thing.

PPS: Spoiler alert! ... Yes.

Β· 4 min read
Travis Hathaway

With the latest conda release (23.7.2 at the time this post was written), the ability to define two new plugin hooks was introduced: "pre command" and "post command". These two new plugin hooks give plugin authors the ability to execute code before and after conda commands are run. In this blog post, we provide more details on how and why you may use these to extend the default behavior of conda.

Β· 5 min read
Bianca Henderson

The July 2023 releases are here! 🎊 Conda 23.7.0, 23.7.1, 23.7.2, and conda-build 3.26.0 are now available on both main and conda-forge channels.

Changes in Conda 23.7.0/23.7.1/23.7.2​

To update conda, run:

conda install -n base conda=23.7.2

✨ What's New? βœ¨β€‹

In the latest release of conda, new pre- and post-command plugin hooks that allow you to run your code before or after a conda subcommand are now available, along with a much improved subcommand plugin hook and plugin infrastructure. There is also a new health check for conda doctor that detects altered packages in an environment by comparing expected and computed sha256 checksums, as well as a much-expanded API and command docs (conda env!).

Β· 2 min read
Dave Clements

Image credit: EUREF Campus Berlin


PackagingCon 2023​

  • 26-28th October
  • Berlin and online
  • Submission deadline: 31st July
  • Early registration ends: 8th September

PackagingCon 2023 will bring together different software packaging ecosystems to share best practices and discuss common challenges in software packaging. From Python’s pip to Rust’s cargo to Julia’s Pkg, from Debian apt over Nix, to Homebrew, conda and mamba, and from vcpkg to Spack. The 2021 conference drew 350+ participants and featured over 60 presentations.