Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

July 2024 releases announcement blog post #194

Merged
merged 7 commits into from
Aug 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
235 changes: 235 additions & 0 deletions blog/2024-07-23-july-releases.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
---
title: "July 2024 Releases"
slug: "2024-07-23-july-releases"
authors: [beeankha]
tags: [announcement, conda, conda-build, conda-libmamba-solver]
description: |
Conda 24.7.0/.1, conda-build 24.7.0, and conda-libmamba-solver 24.7.0 have been released! 🎉
image: img/blog/2024-07-23-july-releases/banner.png
---

The July 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.7.0](https://github.com/conda/conda/releases/tag/24.7.0)/[24.7.1](https://github.com/conda/conda/releases/tag/24.7.1)

To update conda, run:

```bash
conda install -n base conda=24.7.1
```

<!-- truncate -->

### ✨ What's New? ✨

- Add a new `reporters` setting for configuring output.
- Report traceback of plugin loading errors with verbosity 2 or higher (`-vv` or more).
- Skip checking for `.pyc` and `.pyo` files in the `conda doctor` "missing files" health check.
- **Breaking change** `conda list --explicit` will not print authentication details by default. A new flag `--auth` has been added so folks can opt-in to this behavior.
- Print transaction report for `@EXPLICIT` lockfile installs.
- Do not require `-n/--name` or `-p/--prefix` if `conda create` is invoked with `--dry-run`.
- Add an `envvars_force_uppercase` setting which defaults to `True`, uppercasing all environment variables (thereby justifying `conda`'s current behaviour); when `envvars_force_uppercase` is set to `False`, conda will only save preserved-case variable names.
- Alias `conda env list` command to `conda info --envs`.
- Replace calls to `logger.warn` with `logger.warning`.

### 🔧 What Got Fixed? 🔧

- Improve treatment of logger levels.
- Mask authentication details in `conda-meta/*.json` metadata.
- Mask Anaconda.org tokens in verbose logs.
- Fix parsing error when history file only contains a single commented line.
- Add missing `emscripten` and `wasi` entries to the recognized platforms, and `wasm32` to the recognized architectures.
- Fix checksum comparisons in `conda.gateways.connection.download.download()` to be case insensitive.
- Fix caching when `repodata.json` contains `\r\n` line endings.
- Fix `conda.core.portability.binary_replace` not matching chunks that end with `\n`.
- (24.7.1) Revert increased restrictions on allowed environment name characters. The previously forbidden characters (^, %, !, =, (, ), \) are allowed again until the impact is assessed.

kenodegard marked this conversation as resolved.
Show resolved Hide resolved
### 🌅 What's Marked for [Deprecation](https://github.com/conda-incubator/ceps/blob/main/cep-9.md)? 🌅

- Mark `conda.gateways.logging.initialize_root_logger` as pending deprecation.
- Mark `conda.cli.main_env_list.execute` as pending deprecation. Use `conda.cli.main_info.execute` instead.
- Revert `--all` deprecation in `conda info`.
- Mark `conda.exports.iteritems` as pending deprecation. Use builtin `dict.items()` instead.
- Mark `conda.exports.Completer` as pending deprecation.
- Mark `conda.exports.InstalledPackages` as pending deprecation.
- Mark `conda.exports.KEYS` as pending deprecation.
- Mark `conda.exports.KEYS_DIR` as pending deprecation.
- Mark `conda.exports.hash_file` as pending deprecation.
- Mark `conda.exports.verify` as pending deprecation.
- Mark `conda.exports.symlink_conda` as pending deprecation. Use `conda.activate` instead.
- Mark `conda.exports._symlink_conda_hlp` as pending deprecation. Use `conda.activate` instead.
- Mark `conda.exports.win_conda_bat_redirect` as pending deprecation. Use `conda.activate` instead.
- Mark `conda.utils.win_path_to_cygwin` as pending deprecation. Use `conda.common.path.win_path_to_unix` instead.
- Mark `conda.utils.cygwin_path_to_win` as pending deprecation. Use `conda.utils.unix_path_to_win` instead.
- Mark `conda.utils.translate_stream` as pending deprecation.
- Mark `conda.utils.unix_shell_base` as pending deprecation. Use `conda.activate` instead.
- Mark `conda.utils.msys2_shell_base` as pending deprecation. Use `conda.activate` instead.
- Mark `conda.utils.shells` as pending deprecation. Use `conda.activate` instead.

### 📄 What's New in Documentation? 📄

- Clarify proxy server configuration in documentation.
- Add type hints and doc strings to `conda.core.envs_manager`.
- Add logging overview as deep-dive.
- Update conda cheatsheet text and add it directly to cheatsheet page.
- Add updated cheatsheet PDF download to cheatsheet page.
- Add `ssl_verify: truststore` to the user guide.
- Fix the help text of the `satisfied-skip-solve` flag.
- Add a section explaining how to correctly raise exceptions from a plugin.
- Add new article for configuring `envs_dirs` and `pkgs_dirs`.

---

## Changes in Conda-Build [24.7.0](https://github.com/conda/conda-build/releases/tag/24.7.0)/[24.7.1](https://github.com/conda/conda-build/releases/tag/24.7.1)

To update conda-build, run:

```bash
conda install -n base conda-build=24.7.1
```

### ✨ What's New? ✨

- Skip generating `repodata.json.bz2` for local index; generate `repodata.json` only; require `conda-package-handling >=2.2.0` matching conda.
- Add new include/exclude sections for glob expressions in multi-output `outputs/files`.
- Increase performance by using `pickle` instead of `copy.deepcopy`.
- Report fully rendered recipe to stdout before the build process starts.
- Validate `run_constrained` dependencies to prevent faulty specs reaching final repodata.
- `PIP_*` env variables are set when building outputs in multi-output recipes.
- Reduce performance overhead of logging.
- Do not generate conda error reports for common exceptions.
- Add `CondaBuildUserError` exception to replace `sys.exit` calls.
- Updated the CI to download the MacOSX 10.15 SDK.

### 🔧 What Got Fixed? 🔧

- Include file path in addition to the content when generating the file hash to avoid unwanted caching during linkage analysis.
- Error handling when `LIEF` fails is now consistent with `patchelf`.
- Ensure cross-building recipes select the correct noarch package variants.
- On Linux platforms, prefer the sysroot matching the target_platform when cross-compiling.
- (24.7.1) Check for WSL existence before calling `pathlib.Path.samefile`/`os.stat`.

kenodegard marked this conversation as resolved.
Show resolved Hide resolved
### 🌅 What's Marked for [Deprecation](https://github.com/conda-incubator/ceps/blob/main/cep-9.md)? 🌅

- Mark `conda_build.build._construct_metadata_for_test_from_recipe` as deprecated. Test built packages instead, not recipes (e.g., `conda build --test package` instead of `conda build --test recipe/`).
- Mark `conda_build.build.check_external` for deprecation. `patchelf` is an explicit conda-build dependency on Linux so it will always be installed.
- Remove the following deprecations:
- `conda_build.config.Config.override_channels` (use `conda.base.context.context.channels` instead).
- `conda_build.config.noarch_python_build_age_default`.
- `conda_build.conda_interface.add_parser_channels` (use `conda.cli.helpers.add_parser_channels` instead).
- `conda_build.conda_interface.add_parser_prefix` (use `conda.cli.helpers.add_parser_prefix` instead).
- `conda_build.conda_interface.ArgumentParser` (use `conda.cli.conda_argparse.ArgumentParser` instead).
- `conda_build.conda_interface.binstar_upload` (use `conda.base.context.context.binstar_upload` instead).
- `conda_build.conda_interface.cc_conda_build` (use `conda.base.context.context.conda_build` instead).
- `conda_build.conda_interface.cc_platform` (use `conda.base.context.context.platform` instead).
- `conda_build.conda_interface.Channel` (use `conda.models.channel.Channel` instead).
- `conda_build.conda_interface.Completer`.
- `conda_build.conda_interface.configparser` (use `configparser` instead).
- `conda_build.conda_interface.CondaError` (use `conda.exceptions.CondaError` instead).
- `conda_build.conda_interface.CondaHTTPError` (use `conda.exceptions.CondaHTTPError` instead).
- `conda_build.conda_interface.CondaSession` (use `conda.gateways.connection.session.CondaSession` instead).
- `conda_build.conda_interface.CONDA_VERSION` (use `conda.__version__` instead).
- `conda_build.conda_interface.context` (use `conda.base.context.context` instead).
- `conda_build.conda_interface.create_default_packages` (use `conda.base.context.context.create_default_packages` instead).
- `conda_build.conda_interface.default_python` (use `conda.base.context.context.default_python` instead).
- `conda_build.conda_interface.determine_target_prefix` (use `conda.base.context.determine_target_prefix` instead).
- `conda_build.conda_interface.download` (use `conda.gateways.connection.download.download` instead).
- `conda_build.conda_interface.env_path_backup_var_exists`.
- `conda_build.conda_interface.envs_dirs` (use `conda.base.context.context.envs_dirs` instead).
- `conda_build.conda_interface.EntityEncoder` (use `conda.auxlib.entity.EntityEncoder` instead).
- `conda_build.conda_interface.FileMode` (use `conda.models.enums.FileMode` instead).
- `conda_build.conda_interface.get_conda_build_local_url` (use `conda.models.channel.get_conda_build_local_url` instead).
- `conda_build.conda_interface.get_conda_channel` (use `conda.models.channel.Channel.from_value` instead).
- `conda_build.conda_interface.get_prefix` (use `conda.base.context.context.target_prefix` instead).
- `conda_build.conda_interface.get_rc_urls` (use `conda.base.context.context.channels` instead).
- `conda_build.conda_interface.human_bytes` (use `conda.utils.human_bytes` instead).
- `conda_build.conda_interface.import_module` (use `importlib.import_module` instead).
- `conda_build.conda_interface.input` (use `input` instead).
- `conda_build.conda_interface.InstalledPackages`.
- `conda_build.conda_interface.lchmod` (use `conda.gateways.disk.link.lchmod` instead).
- `conda_build.conda_interface.LinkError` (use `conda.exceptions.LinkError` instead).
- `conda_build.conda_interface.LockError` (use `conda.exceptions.LockError` instead).
- `conda_build.conda_interface.MatchSpec` (use `conda.models.match_spec.MatchSpec` instead).
- `conda_build.conda_interface.non_x86_linux_machines` (use `conda.base.context.non_x86_machines` instead).
- `conda_build.conda_interface.NoPackagesFound` (use `conda.exceptions.ResolvePackageNotFound` instead).
- `conda_build.conda_interface.NoPackagesFoundError` (use `conda.exceptions.NoPackagesFoundError` instead).
- `conda_build.conda_interface.normalized_version` (use `conda.models.version.normalized_version` instead).
- `conda_build.conda_interface.os` (use `os` instead).
- `conda_build.conda_interface.PackageRecord` (use `conda.models.records.PackageRecord` instead).
- `conda_build.conda_interface.PaddingError` (use `conda.exceptions.PaddingError` instead).
- `conda_build.conda_interface.partial` (use `functools.partial` instead).
- `conda_build.conda_interface.PathType` (use `conda.models.enums.PathType` instead).
- `conda_build.conda_interface.pkgs_dirs` (use `conda.base.context.context.pkgs_dirs` instead).
- `conda_build.conda_interface.prefix_placeholder` (use `conda.base.constants.PREFIX_PLACEHOLDER` instead).
- `conda_build.conda_interface.ProgressiveFetchExtract` (use `conda.core.package_cache_data.ProgressiveFetchExtract` instead).
- `conda_build.conda_interface.reset_context` (use `conda.base.context.reset_context` instead).
- `conda_build.conda_interface.Resolve` (use `conda.resolve.Resolve` instead).
- `conda_build.conda_interface.rm_rf` (use `conda_build.utils.rm_rf` instead).
- `conda_build.conda_interface.root_dir` (use `conda.base.context.context.root_prefix` instead).
- `conda_build.conda_interface.root_writable` (use `conda.base.context.context.root_writable` instead).
- `conda_build.conda_interface.spec_from_line` (use `conda.cli.common.spec_from_line` instead).
- `conda_build.conda_interface.specs_from_args` (use `conda.cli.common.specs_from_args` instead).
- `conda_build.conda_interface.specs_from_url` (use `conda.cli.common.specs_from_url` instead).
- `conda_build.conda_interface.StringIO` (use `io.StringIO` instead).
- `conda_build.conda_interface.subdir` (use `conda.base.context.context.subdir` instead).
- `conda_build.conda_interface.symlink_conda`.
- `conda_build.conda_interface.TemporaryDirectory` (use `conda.gateways.disk.create.TemporaryDirectory` instead).
- `conda_build.conda_interface.TmpDownload` (use `conda.gateways.connection.download.TmpDownload` instead).
- `conda_build.conda_interface._toposort` (use `conda.common.toposort._toposort` instead).
- `conda_build.conda_interface.unix_path_to_win` (use `conda.utils.unix_path_to_win` instead).
- `conda_build.conda_interface.untracked` (use `conda.misc.untracked` instead).
- `conda_build.conda_interface.Unsatisfiable` (use `conda.exceptions.UnsatisfiableError` instead).
- `conda_build.conda_interface.UnsatisfiableError` (use `conda.exceptions.UnsatisfiableError` instead).
- `conda_build.conda_interface.url_path` (use `conda.utils.url_path` instead).
- `conda_build.conda_interface.VersionOrder` (use `conda.models.version.VersionOrder` instead).
- `conda_build.conda_interface.walk_prefix` (use `conda.misc.walk_prefix` instead).
- `conda_build.conda_interface.win_path_to_unix` (use `conda.common.path.win_path_to_unix` instead).
- `conda_build.index.channel_data`; `conda_build.index.get_build_index` return value for `channel_data` is now always `None`.
- `conda_build.metadata.check_circular_dependencies` (use `conda_build.metadata._check_circular_dependencies` instead).
- `conda_build.metadata.toposort` (use `conda_build.metadata.toposort_outputs` instead).
- `conda_build.utils._convert_lists_to_sets` (use `frozendict.deepfreeze` instead).
- `conda_build.utils.HashableDict` (use `frozendict.deepfreeze` instead).
- `conda_build.utils.represent_hashabledict` (use `frozendict.deepfreeze` instead).
- `conda_build.utils.rm_rf(config)`.
- `conda_build.variants.get_vars(loop_only)`.

---

## Changes in Conda-Libmamba-Solver [24.7.0](https://github.com/conda/conda-libmamba-solver/releases/tag/24.7.0)

To update conda-libmamba-solver, run:

```bash
conda install -n base conda-libmamba-solver=24.7.0
```

### ✨ What's New? ✨

- Document development workflows with devcontainers.
- Add DevContainer configurations for local development workflows.

### 🔧 What Got Fixed? 🔧

- Allow wildcards in package names for `conda remove` (e.g. `conda remove "python-*"`).
- Avoid duplicate channel listing when using channel-pinned specs like `channel::package`.
- Fix a performance regression where `.solv` repodata cache files were not being loaded when available.
- Do not ignore virtual packages as input specs.
- Pin `libmambapy <2` to defend against upcoming API changes.

---

### We ❤️ Our Community

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

- [@carterbox](https://github.com/carterbox) made their first contribution in [conda-build#5216](https://github.com/conda/conda-build/pull/5216)
- [@DerThorsten](https://github.com/DerThorsten) made their first contribution in [conda#13962](https://github.com/conda/conda/pull/13962)
- [@erik-whiting](https://github.com/erik-whiting) made their first contribution in [conda#13877](https://github.com/conda/conda/pull/13877)
- [@kelvinou01](https://github.com/kelvinou01) made their first contribution in [conda#14044](https://github.com/conda/conda/pull/14044)
- [@padeoe](https://github.com/padeoe) made their first contribution in [conda#12856](https://github.com/conda/conda/pull/12856)
- [@skupr-anaconda](https://github.com/skupr-anaconda) made their first contribution in [conda#13946](https://github.com/conda/conda/pull/13946)
- [@timkpaine](https://github.com/timkpaine) made their first contribution in [conda-build#4821](https://github.com/conda/conda-build/pull/4821)
- [@tl-hbk](https://github.com/tl-hbk) made their first contribution in [conda-libmamba-solver#449](https://github.com/conda/conda-libmamba-solver/pull/449)
- [@zklaus](https://github.com/zklaus) made their first contributions in [conda-build#5364](https://github.com/conda/conda-build/pull/5364) and [conda-libmamba-solver#476](https://github.com/conda/conda-libmamba-solver/pull/476)

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