[0.84.0] - 2026-11-02
✨ Highlights
exclude-newer has been redesigned to support more precise and configurable exclusions.
The top-level [exclude-newer] and [pypi-exclude-newer] tables have been deprecated
in favour of corresponding [workspace] sub-tables. These tables can now consist of
fine-grained exemptions to a given cutoff, which can be used to, for example, apply
a blanket exclusion period while exempting vetted security releases.
New pixi workspace exclude-newer and pixi global exclude-newer subcommands
allow configuration via the command line.
TLS options are now available for pixi self-update, and TLS configuration is
inspectable via pixi info.
This release includes a rattler bugfix which avoids hash collisions for nonequal
package versions, eliminating a class of false cache-hits.
Lock files written by older Pixi versions may need to have hashes
updated by pixi lock before they are considered locked (even if no dependencies change).
If this affects your workspace, it is recommended to have all collaborators on the workspace
use Pixi>=0.84.0, to achieve lock file stability.
Breaking changes
Errors are now emitted instead of warnings when a configuration file fails to parse.
- config: Make a config file that fails to parse a hard error by @lucascolley in #7409
Features
- self-update: Expose TLS options by @baszalmstra in #7333
- lock: Honor exclude-newer exemptions in satisfiability by @pavelzw in #7247
- manifest: Deprecate the top-level
exclude-newertables by @pavelzw in #7248 - global: Use match spec exemptions in
exclude-newerby @pavelzw in #7249 - cli: Add exclude-newer commands for workspaces and pixi global by @pavelzw in #7356
- Add cutoffs to exclude-newer exemptions by @pavelzw in #7363
- pixi_api: Expose run and shell by @haecker-felix in #7354
- Per-index exclude-newer for PyPI extra indexes by @pavelzw in #7382
- Add nanobind-dev and python3-typing-extensions as in rosdistro by @EzraBrooks in #7379
- info: Show effective TLS root certificates by @baszalmstra in #7336
- pixi-build-backend: Let backends generate multi-output recipes by @EzraBrooks in #7381
- Add sha256 to workspace explicit export by @bollwyvl in #7185
- publish: No
publish = truerequired if explicit--pathoption is given by @Timple in #7355 - pixi_api: Add GlobalContext with pixi global list by @haecker-felix in #7387
- config: Add
exclude-newerby @pavelzw in #7385 - publish: Build with the exclude-newer of the workspace by @pavelzw in #7386
Fixes
- Bump webpki-root-certs to 1.0.11 to drop removed eMudhra roots by @baszalmstra in #7347
- publish: Keep Artifactory context path when uploading by @wolfv in #7388
- Keep PyPI releases without an upload time for exempted packages by @pavelzw in #7374
- Reuse the build backend environment with a relative exclude-newer by @pavelzw in #7384
- cli: Honour colour settings in help and argument errors by @lucascolley in #7396
- cache: Use xxh3 for all on-disk cache names by @lucascolley in #7408
- Skip system CA store for pypi mapping middleware client by @r3wretrhy in #6936
- global: Remove packages with custom exposed names by @Hofer-Julian in #7313
- pixi-build-ros: Support cross-compiling
ament_pythonpackages by @Timple in #7345 - tasks: Fix various bugs by @lucascolley in #7434
- exclude-newer: Resolve relative cutoffs once per workspace load by @lucascolley in #7435
Documentation
- Document exclude-newer exemptions by @pavelzw in #7251
- Add
releasescope to automated release commit messages by @lucascolley in #7360 - Adapt vouch request by @Hofer-Julian in #7403
- Clarify how to ping us by @Hofer-Julian in #7404
- setup-pixi: Mention setup-pixi being pre-v1 by @pavelzw in #7419
- setup-pixi: Document configuration input and bump to v0.11.3 by @pavelzw in #7421
- Fix PowerShell custom shell example for GitHub Actions by @pavelzw in #7423
- setup-pixi: Fix instructions for enabling debug logging by @pavelzw in #7422
Maintenance
- release: Provide Cargo through a shared Rust feature by @Hofer-Julian in #7342
- core: Add
Causewrapper, type the lock-file load, write and prefix errors by @lucascolley in #7314 - global: Type the trampoline, install and completions errors by @lucascolley in #7357
- global: Type the global directory and conda-meta errors by @lucascolley in #7359
- Update rattler and rattler-build crates by @pavelzw in #7267
- Add Cargo.lock from pixi-build example by @pavelzw in #7372
- Cover cache-name collision for zero-component versions by @lucascolley in #7373
- Revamp contributor docs and PR template by @baszalmstra in #7323
- global: Type the global manifest errors by @lucascolley in #7358
- Enforce vouching for pull requests by @Hofer-Julian in #7390
- global: Type the project discovery and list errors by @lucascolley in #7397
- global: Type the install and sync errors by @lucascolley in #7399
- pixi_api: Type the shell errors by @lucascolley in #7407
- api: Type the init errors by @lucascolley in #7410
- pixi-build-ros: Add tqdm by @Timple in #7307
- Fix missing
InitError::Configby @lucascolley in #7413 - Remove duplicate
InitError::Configby @lucascolley in #7415 - api: Type the workspace setter errors by @lucascolley in #7414
- api: Type the add errors by @lucascolley in #7416
- Require approval before publishing releases by @wolfv in #6766
- api: Type the task errors by @lucascolley in #7426
- Add AGENTS.md by @Hofer-Julian in #7412
- lock: Never install the conda prefix in the PyPI satisfiability check by @ytausch in #7427
New Contributors
- @r3wretrhy made their first contribution in #6936
- @EzraBrooks made their first contribution in #7381