-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
September 2024 Release blogpost (#213)
* 24.09.0 Release blogpost * add special announcement * Apply suggestions from code review Co-authored-by: Ken Odegard <[email protected]> * Change publish date for announcement blog post --------- Co-authored-by: Bianca Henderson <[email protected]> Co-authored-by: Ken Odegard <[email protected]> Co-authored-by: Jannis Leidel <[email protected]> Co-authored-by: Bianca Henderson <[email protected]>
- Loading branch information
1 parent
4fb0692
commit 6518fa9
Showing
3 changed files
with
253 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
--- | ||
title: "September 2024 Releases" | ||
slug: "2024-09-30-september-releases" | ||
authors: [forgottenprogramme] | ||
tags: [announcement, conda, conda-build, conda-libmamba-solver] | ||
description: | | ||
Conda 24.9.0/24.9.1, conda-build 24.9.0, and conda-libmamba-solver 24.9.0 have been released! 🎉 | ||
image: img/blog/2024-10-02-september-releases/banner.png | ||
--- | ||
|
||
The September 2024 releases included updates to conda, conda-build, and conda-libmamba-solver! 🎉 All of these have been released to both `main` and `conda-forge` channels. | ||
|
||
## Changes in Conda [24.9.0](https://github.com/conda/conda/releases/tag/24.9.0)/[24.9.1](https://github.com/conda/conda/releases/tag/24.9.1) | ||
|
||
To update conda, run: | ||
|
||
```bash | ||
conda install -n base conda=24.9.1 | ||
``` | ||
|
||
|
||
### ✨ Special announcement ✨ | ||
|
||
This is an announcement about an important and positive **future** change in conda's functionality: | ||
|
||
Following feedback from conda users about the pre-configuration of the conda code base to favor channels from Anaconda Inc, we've [started the process to deprecate](https://github.com/conda/conda/issues/14178) hardcoding Anaconda's channels as the default set of channels in the conda source code, which is a remnant of conda's incubation at the company. | ||
|
||
In the future, we will rely on providers of conda distributions, such as [miniforge](https://github.com/conda-forge/miniforge) or Anaconda (including miniconda), to pre-configure their preferred channels, e.g. by running the necessary ``conda config --set channels`` command. | ||
|
||
We're also going to continue to [work on improving channel management](https://github.com/conda/conda/issues/14217) in the foreseeable future and would love to get your feedback. | ||
|
||
<!-- truncate --> | ||
|
||
### ✨ What's New? ✨ | ||
|
||
- Add `conda.core.index.Index` as a faster drop-in replacement of the realized dictionary index. Note: The loggers are no longer implicitly initialized when fetching the index. Instead, you must explicitly call `conda.gateways.logging.initialize_logging`. | ||
- Alias `conda env remove` command to `conda remove --all`. | ||
- Add a new health check to `conda doctor` that detects if the `REQUESTS_CA_BUNDLE` env var points to a non-existent file. | ||
- Add `--sha256` flag to `conda list --explicit` so it lists URLs with a SHA256 hash instead of MD5 and make `conda install|create` compatible with these inputs. | ||
- Report `conda` version used to generate a `@EXPLICIT` text file. | ||
- Update health checks outputs for consistency. | ||
- Fix Windows to Unix path conversion to handle UNC mounts and root paths. | ||
- Add a new `denylist_channels` config option and `CONDA_DENYLIST_CHANNELS` environment variable to explicitly deny using specific channels globally, which is complementing the already existing `allowlist_channels` config option. | ||
- Add `conda commands` subcommand. | ||
- Add `conda.testing.fixtures.session_capsys`. Use this to capture stdout and stderr within module, package, and session scoped fixtures. | ||
- Add `conda.testing.fixtures.session_conda_cli`. Use this to invoke conda commands within module, package, and session scoped fixtures. | ||
- Add `conda.testing.fixtures.session_tmp_env`. Use this to create a conda environment within module, package, and session scoped fixtures. | ||
|
||
### 🔧 What Got Fixed? 🔧 | ||
|
||
- Prevent directories that contain conda environments from being specified as an environment prefix when creating new envs; this provides guardrails against the accidental deletion of environments via commands such as `conda rename`. | ||
- Enable `conda doctor` to check whether the environment exists or not before trying to generate a health report. | ||
- Fix `conda.common.configuration.ObjectParameter`'s ability to appropriately handle defaults. | ||
- `conda remove [env] --all` command no longer deletes empty parent directories for environments that are removed. | ||
- Raise an error when attempting to remove non-existent environment. | ||
- Add pre-/post-command hooks to activation subcommands (`activate`, `deactivate`, `reactivate`, `hooks`, and `commands`). | ||
- Replace extensions from end of filename only, not `str.replace()`, in two places. | ||
- Fix PowerShell activation/deactivation to properly unset environment variables using `$Env:VARIABLE = $null` instead of `$Env:VARIABLE = ""`. | ||
- (24.9.1) Tweak pending deprecation warning for the upcoming changes in channel defaults. | ||
|
||
### 🌅 What Got Deprecated or Got Marked for Future [Deprecation](https://github.com/conda-incubator/ceps/blob/main/cep-9.md)? 🌅 | ||
|
||
- Mark `conda.core.index.get_index` as pending deprecation. Use `conda.core.index.Index` instead. | ||
- Mark `conda.core.index.get_reduced_index` as pending deprecation. Use `conda.core.index.ReducedIndex` instead. | ||
- Mark `conda.core.index.fetch_index` as pending deprecation. Use `conda.core.index.Index` instead. | ||
- Mark `conda.core.index._supplement_index_with_prefix` as pending deprecation. Use `conda.core.index.Index.reload` instead. | ||
- Mark `conda.core.index._supplement_index_with_cache` as pending deprecation. Use `conda.core.index.Index.reload` instead. | ||
- Mark `conda.core.index._supplement_index_with_features` as pending deprecation. Use `conda.core.index.Index.reload` instead. | ||
- Mark `conda.core.index._supplement_index_with_system` as pending deprecation. Use `conda.core.index.Index.reload` instead. | ||
- Mark `conda.core.index._make_virtual_package` as pending deprecation. Use `conda.models.records.PackageRecord.virtual_package` instead. | ||
- Mark `conda.core.subdir_data.make_feature_record` as pending deprecation. Use `conda.models.records.PackageRecord.feature` instead. | ||
- Mark `conda.plugins.manager.CondaPluginManager.get_virtual_packages` as pending deprecation. Use `conda.plugins.manager.CondaPluginManager.get_virtual_package_records` instead. | ||
- Mark `conda.misc.explicit(index_args)` as pending deprecation. | ||
- Mark `conda.cli.main_rename.validate_destination` as pending deprecation. Use `conda.cli.install.validate_new_prefix` instead. | ||
- Mark `conda.cli.main_env_remove.execute` as pending deprecation. Use `conda.cli.main_remove.execute` instead. | ||
- Mark `conda.activate.path_identity` as pending deprecation. Use `conda.common.path.path_identity` instead. | ||
- Mark `conda.utils.path_identity` as pending deprecation. Use `conda.common.path.path_identity` instead. | ||
- Mark `conda.models.leased_path_entry` as pending deprecation. | ||
- Postpone removal of `conda.base.context.Context.conda_exe` to `conda 25.3`. | ||
- Postpone removal of `conda.cli.python_api` to `conda 25.9`. | ||
- Remove `conda._vendor.appdirs`. Use `platformdirs` instead. | ||
- Remove `conda._vendor.cpuinfo`. | ||
- Remove `conda._vendor.distro`. Use `distro` instead. | ||
- Remove `conda.auxlib.collection.call_each`. | ||
- Remove `conda.auxlib.collection.firstitem`. | ||
- Remove `conda.auxlib.compat.NoneType`. | ||
- Remove `conda.auxlib.compat.primitive_types`. | ||
- Remove `conda.auxlib.compat.utf8_writer`. | ||
- Remove `conda.auxlib.exceptions.AssignmentError`. | ||
- Remove `conda.auxlib.exceptions.AuthenticationError`. | ||
- Remove `conda.auxlib.exceptions.InitializationError`. | ||
- Remove `conda.auxlib.exceptions.NotFoundError`. | ||
- Remove `conda.auxlib.exceptions.SenderError`. | ||
- Remove `conda.auxlib.type_coercion.boolify_truthy_string_ok`. | ||
- Remove `conda.auxlib.type_coercion.listify`. | ||
- Remove `conda.base.context.Context.root_dir`. Use `conda.base.context.Context.root_prefix` instead. | ||
- Remove `conda.base.exceptions`. | ||
- Remove `conda.cli.main.generate_parser`. Use `conda.cli.conda_argparse.generate_parser` instead. | ||
- Remove `conda.cli.main.init_loggers(context)`. | ||
- Remove `conda.cli.main_rename.validate_src(name)`. | ||
- Remove `conda.cli.main_rename.validate_src(prefix)`. | ||
- Remove `conda.common.configuration.load_file_configs`. | ||
- Remove `conda.common.decorators.env_override`. | ||
- Remove `conda.common.decorators`. | ||
- Remove `conda.common.disk.temporary_content_in_file`. Use `tempfile` instead. | ||
- Remove `conda.core.package_cache_data.download`. Use `conda.gateways.connection.download.download` instead. | ||
- Remove `conda.core.package_cache_data.rm_fetched`. | ||
- Remove `conda.core.package_cache`. Use `conda.core.package_cache_data` instead. | ||
- Remove `conda.core.prefix_data.PrefixData._has_python`. | ||
- Remove `conda.core.subdir_data.get_cache_control_max_age`. Use `conda.gateways.repodata.get_cache_control_max_age` instead. | ||
- Remove `conda.exports.fetch_index`. Use `conda.core.index.fetch_index` instead. | ||
- Remove `conda.exports.IndexRecord`. Use `conda.models.records.PackageRecord` instead. | ||
- Remove `conda.gateways.anaconda_client.EnvAppDirs`. Use `platformdirs` instead. | ||
- Remove `conda.gateways.connection.adapters.ftp.FTPAdapter.stor`. | ||
- Remove `conda.gateways.connection.adapters.ftp.parse_multipart_files` | ||
- Remove `conda.gateways.logging.set_verbosity`. Use `conda.gateways.logging.set_log_level` instead. | ||
- Remove `conda.gateways.logging.VERBOSITY_LEVELS`. | ||
- Remove `conda.models.dist.IndexRecord`. Use `conda.models.records.PackageRecord` instead. | ||
- Remove `conda.models.enums.LeasedPathType`. | ||
- Remove `conda.models.leased_path_entry.LeasedPathEntry`. | ||
- Remove `conda.plugins.subcommands.doctor.get_prefix`. Use `conda.base.context.context.target_prefix` instead. | ||
- Remove `conda.plugins.subcommands.doctor.health_checks.display_health_checks`. | ||
- Remove `conda.plugins.subcommands.doctor.health_checks.display_report_heading`. | ||
- Remove `conda.testing.helpers.set_active_prefix`. Use `mocker.patch('conda.base.context.Context.active_prefix')` instead. | ||
- Remove `tests.env.utils.run_command`. Use `conda_cli` fixture instead. | ||
- Mark `tests.env.utils.make_temp_envs_dir` as pending deprecation. Use `tmp_envs_dir` fixture instead. | ||
- Mark `conda.gateways.disk.delete.rm_rf(max_retries)` as pending deprecated. | ||
- Mark `conda.gateways.disk.delete.rm_rf(trash)` as pending deprecated. | ||
- Mark `conda.gateways.disk.delete.try_rmdir_all_empty` as pending deprecated. Use `conda.gateways.disk.delete.rm_rf` instead. | ||
- Mark `conda.gateways.disk.delete.move_to_trash` as pending deprecated. Use `conda.gateways.disk.delete.rm_rf` instead. | ||
- Mark `conda.gateways.disk.delete.move_path_to_trash` as pending deprecated. Use `conda.gateways.disk.delete.rm_rf` instead. | ||
- Mark `conda.exports.move_to_trash` as pending deprecation. Use `conda.gateways.disk.delete.rm_rf` instead. | ||
- Mark `conda.activate.ensure_binary` as pending deprecation. Use `conda.common.compat.ensure_binary` instead. | ||
- Mark `conda.activate.ensure_fs_path_encoding` as pending deprecation. | ||
- Mark `conda.common.compat.six_with_metaclass` as pending deprecation. Use class' `metaclass=` keyword argument instead. | ||
- Mark `conda.common.compat.open` as pending deprecation. Use `conda.common.compat.open_utf8` instead. | ||
- Mark `conda.common.compat.ensure_unicode` as pending deprecation. | ||
- Mark `conda.common.compat.ensure_fs_path_encoding` as pending deprecation. | ||
- Mark `conda.common.compat.FILESYSTEM_ENCODING` as pending deprecation. | ||
- Mark `conda.activate.native_path_to_unix` as pending deprecation. Use `conda.common.path.win_path_to_unix` instead. | ||
- Mark `conda.activate.unix_path_to_native` as pending deprecation. Use `conda.common.path.unix_path_to_win` instead. | ||
- Mark `conda.activate._Cygpath` as pending deprecation. Use `conda.common.path._cygpath` instead. | ||
- Mark `conda.activate._Cygpath.RE_UNIX` as pending deprecation. Use `conda.common.path._cygpath.RE_WIN_DRIVE` instead. | ||
- Mark `conda.activate._Cygpath.translate_unix` as pending deprecation. Use `conda.common.path._cygpath._to_unix_drive` instead. | ||
- Mark `conda.activate._Cygpath.RE_DRIVE` as pending deprecation. Use `conda.common.path._cygpath.RE_UNIX_DRIVE` instead. | ||
- Mark `conda.activate._Cygpath.translation_drive` as pending deprecation. Use `conda.common.path._cygpath._to_win_drive` instead. | ||
- Mark `conda.activate._Cygpath.RE_MOUNT` as pending deprecation. Use `conda.common.path._cygpath.RE_UNIX_MOUNT` instead. | ||
- Mark `conda.activate._Cygpath.translation_mount` as pending deprecation. Use `conda.common.path._cygpath._to_win_mount` instead. | ||
- Mark `conda.activate._Cygpath.RE_ROOT` as pending deprecation. Use `conda.common.path._cygpath.RE_UNIX_ROOT` instead. | ||
- Mark `conda.activate._Cygpath.translation_root` as pending deprecation. Use `conda.common.path._cygpath._to_win_root` instead. | ||
- Mark `conda.utils.unix_path_to_win` as pending deprecation. Use `conda.common.path.unix_path_to_win` instead. | ||
- Deprecate `conda.env.specs.binstar` module. | ||
- Deprecate `conda env [create|update] REMOTE_DEFINITION`. Use `conda env [create|update] --file=URL` instead. | ||
- Mark `conda.testing.integration.BIN_DIRECTORY` as pending deprecation. Use `conda.common.path.BIN_DIRECTORY` instead. | ||
- Mark `conda.common.path.get_bin_directory_short_path()` as pending deprecation. Use `conda.common.path.BIN_DIRECTORY` instead. | ||
- Mark `conda.common.path.is_private_env_name` as pending deprecation. | ||
- Mark `conda.common.path.is_private_env_path` as pending deprecation. | ||
- Mark `conda shell.SHELL commands` as pending deprecation. Use `conda commands` instead. | ||
- The `defaults` multichannel will stop being the (implicit) default value for `channels`. Users relying on this behavior are encouraged to run `conda config --add channels defaults`. This is pending deprecation, and will be fully deprecated in 25.3. | ||
- `conda config --add/--append channels ...` will warn when `defaults` is implicitly added. In `conda 25.3`, this behavior will be removed and users should run `conda config --add/--append channels defaults` explicitly if needed. Conda distribution installers like miniforge or miniconda will pre-configure conda channels during installation. | ||
- Without an explicit `channels` configuration (via `condarc` files, environment variables, or CLI flags), conda will warn about using `defaults` implicitly. In 25.3, an empty list will be used. | ||
- Mark the `restore_free_channel` configuration option as pending deprecation. Add `https://repo.anaconda.com/pkgs/free` to your channel list after `defaults` instead. | ||
- Mark `conda.testing.CondaCLIFixture` as pending deprecation. Use `conda.testing.fixtures.CondaCLIFixture` instead. | ||
- Mark `conda.testing.conda_cli` as pending deprecation. Use `conda.testing.fixtures.conda_cli` instead. | ||
- Mark `conda.testing.PathFactoryFixture` as pending deprecation. Use `conda.testing.fixtures.PathFactoryFixture` instead. | ||
- Mark `conda.testing.path_factory` as pending deprecation. Use `conda.testing.fixtures.path_factory` instead. | ||
- Mark `conda.testing.TmpEnvFixture` as pending deprecation. Use `conda.testing.fixtures.TmpEnvFixture` instead. | ||
- Mark `conda.testing.tmp_env` as pending deprecation. Use `conda.testing.fixtures.tmp_env` instead. | ||
- Mark `conda.testing.TmpChannelFixture` as pending deprecation. Use `conda.testing.fixtures.TmpChannelFixture` instead. | ||
- Mark `conda.testing.tmp_channel` as pending deprecation. Use `conda.testing.fixtures.tmp_channel` instead. | ||
- Mark `conda.testing.context_aware_monkeypatch` as pending deprecation. Use `conda.testing.fixtures.context_aware_monkeypatch` instead. | ||
- Mark `conda.testing.tmp_pkgs_dir` as pending deprecation. Use `conda.testing.fixtures.tmp_pkgs_dir` instead. | ||
- Mark `conda.testing.tmp_envs_dir` as pending deprecation. Use `conda.testing.fixtures.tmp_envs_dir` instead. | ||
- (24.9.1) Remove deprecated testing entrypoint `shell/bin/conda`. Use `dev/start[.bat]` instead. | ||
|
||
### 📄 What's New in Documentation? 📄 | ||
|
||
- Document `--platform` flag for `conda [env] create`. | ||
|
||
### Other | ||
|
||
- Update `xonsh` support to accommodate deprecated import path. | ||
|
||
|
||
## Changes in Conda-Build [24.9.0](https://github.com/conda/conda-build/releases/tag/24.9.0) | ||
|
||
To update conda-build, run: | ||
|
||
```bash | ||
conda install -n base conda-build=24.9.0 | ||
``` | ||
|
||
### ✨ What's New? ✨ | ||
|
||
- Reduce render time when there is a large number of unused variants. | ||
|
||
### 🔧 What Got Fixed? 🔧 | ||
|
||
- Ensure variables mentioned in `script_env` are undefined in the multi-output build environment if they are undefined in the environment that `conda-build` is invoked from. | ||
- Variables used in single-line jinja2 `for` and `set` statements are now properly included in the variant matrix for some edge cases. | ||
- Allow undefined jinja variables when a particular metadata block evaluates as skipped. | ||
|
||
### 🌅 What Got Deprecated or Got Marked for Future [Deprecation](https://github.com/conda-incubator/ceps/blob/main/cep-9.md)? 🌅 | ||
|
||
- Remove `conda_build.build.check_external`. `patchelf` is an explicit conda-build dependency on Linux, so it will always be installed. | ||
- Remove `conda_build.metadata._get_env_path`. Use `conda.base.context.locate_prefix_by_name` instead. | ||
- Remove `conda_build.build._construct_metadata_for_test_from_recipe`. Test built packages instead, not recipes (e.g., `conda build --test package` instead of `conda build --test recipe/`). | ||
|
||
|
||
## Changes in Conda-Libmamba-Solver [24.9.0](https://github.com/conda/conda-libmamba-solver/releases/tag/24.9.0) | ||
|
||
To update conda-libmamba-solver, run: | ||
|
||
```bash | ||
conda install -n base conda-libmamba-solver=24.9.0 | ||
``` | ||
|
||
### 🔧 What Got Fixed? 🔧 | ||
|
||
- Use Solver instance configuration to initialize the libmamba context without implicitly relying on the conda context settings. | ||
- Fix conda-build compatibility regression where arch-specific outputs can't be found in the test phase if a noarch output was built first. | ||
|
||
### 📄 What's New in Documentation? 📄 | ||
|
||
- Add installation workarounds FAQ with conda-standalone. | ||
- Update user guide to reflect conda-libmamba-solver being the default solver in conda. | ||
- Include mamba-org/mamba as a required cloned repository for setting up a dev environment. | ||
|
||
|
||
### We ❤️ Our Community | ||
|
||
Altogether, we had 4 new contributors this release cycle; thank you to all of our open source community members for helping making these improvements possible. | ||
|
||
- @anki-code made their first contribution in [conda#14047](https://github.com/conda/conda/pull/14047) | ||
- @SylvainCorlay made their first contribution in [conda#14226](https://github.com/conda/conda/pull/14226) | ||
- @jjhelmus made their first contribution in [conda-libmamba-solver#528](https://github.com/conda/conda-libmamba-solver/pull/528) | ||
- @justmarkham made their first contribution in [conda-libmamba-solver#510](https://github.com/conda/conda-libmamba-solver/pull/510) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.