Releases: prefix-dev/pixi
Release list
v0.77.0
[0.77.0] - 2026-08-18
✨ Highlights
This release includes the API update for the backends such that we support pin-compatible and pin-subpackage specs in package manifests. For example:
# Pin subpackage `mypkg` to the same version as the package itself, but allow any compatible version of `mypkg` to be used.
[package]
name = "mypkg"
[package.run-exports.weak]
mypkg = { pin-subpackage = { upper-bound = "x.x" } }
# Pin `boltons` to a compatible version.
[package.host-dependencies]
boltons = ">=2,<3"
[package.run-dependencies]
boltons = { pin-compatible = true }Note that this is a pixi-build-api-version update to v7.
Also, you can now modify the workspace activation with the new pixi workspace activation subcommand.
Added
- Pixi search with wildcard by default by @ruben-arts in #6791
- Add
pixi workspace activation ...cli subcommand. by @ruben-arts in #6815 - Honor CONDA_OVERRIDE_ARCHSPEC by @hunger in #6820
- Support
pin-compatibleandpin-subpackagespecs in package manifests by @Hofer-Julian in #6738
Changed
- Saturate out-of-range cutoffs instead of panicking by @zach-marto in #6794
Documentation
- Suggest constraints not dependencies by @C-nit in #6790
- Fix rich platform claim by @Hofer-Julian in #6829
Fixed
- Dedup paths yielded by the glob walk by @ruben-arts in #6811
- Treat corrupt task-cache JSON as a cache miss by @myukitty in #6824
- Honor CONDA_OVERRIDE_* in the publish build and host solves by @bretttully in #6826
- Help users with better help messages by @ruben-arts in #6821
- Scope target activation to the platform a run targets by @ruben-arts in #6822
- Enable
pixi_build_typesfeature onpixi_specin type conversions by @Hofer-Julian in #6853
Refactor
New Contributors
- @Timple made their first contribution in #6831
- @randyzwitch made their first contribution in #6833
- @bretttully made their first contribution in #6826
- @myukitty made their first contribution in #6824
- @zach-marto made their first contribution in #6794
- @C-nit made their first contribution in #6790
v0.76.2
[0.76.2] - 2026-08-10
✨ Highlights
This release features better logging and a few bug fixes.
Added
- Add logging about why pixi build has a cache miss by @baszalmstra in #6784
Changed
- Log CEP-42 user-order conflicts at debug level by @hunger in #6778
- Small fixes to better handle paths containing spaces by @hunger in #6779
Documentation
- Split
prepare-docsinto tasks with dependencies by @Hofer-Julian in #6757 - Better organize the CLI nav sections by @Hofer-Julian in #6768
- Clarify pixi search channels by @ytausch in #6774
Fixed
- Wasm example by @wolfv in #6777
- Scope the build source check to the package that declares it by @baszalmstra in #6783
Removed
- Remove stray
py-pixi-build-backendCargo.lockby @Hofer-Julian in #6758
Style
- Use TOML 1.1 multi-line inline tables in
pixi.tomlby @Hofer-Julian in #6761
v0.76.1
[0.76.1] - 2026-08-04
✨ Highlights
This release features an improved pixi task list and a revamped docs page based on Zensical.
Changed
Documentation
- Switch from mkdocs to zensical by @Hofer-Julian in #6572
Fixed
- Honour
editable = truein transitive[tool.uv.sources]at install time by @earlybard in #6730
New Contributors
- @earlybard made their first contribution in #6730
v0.76.0
[0.76.0] - 2026-08-03
✨ Highlights
A single Python file can now carry its own environment. Pixi reads PEP 723 inline metadata, and --script works on init, run, add, remove, lock, list, tree, and workspace export.
# /// script
# requires-python = ">=3.11"
# dependencies = ["rich>=13.9.2"]
# ///
import rich
rich.print("Hi from [bold magenta]hello.py[/bold magenta]!")pixi run --script hello.py is the whole setup: no pixi.toml, no .pixi folder, and no lock file unless you ask for one with pixi lock --script.
PEP 723 only covers Python and PyPI, so Pixi reads tool.pixi for the rest. This greatly extends the script's capabilities, for example to add conda dependencies:
# /// script
# dependencies = ["httpx"]
# [tool.pixi.workspace]
# channels = ["conda-forge"]
# [tool.pixi.dependencies]
# gdal = "*"
# ///pixi init --script, pixi add --script <file> gdal, and pixi add --script <file> --pypi httpx write that block for you. Scripts don't have to be local either: pixi run --script takes a URL, a Gist page (that one builds CPython 3.16 from git first), or - to read from stdin.
Thanks @manzt for building this out across five PRs, see the standalone scripts docs for the rest. This release also adds [package.run-exports], an lfs field for git dependencies, and configurable channel priority.
Added
- Support PEP 723 scripts with
--scriptby @manzt in #6648 - Support PEP 723 scripts in
pixi listby @manzt in #6726 - Support
[package.run-exports]in package manifests by @Hofer-Julian in #6696 - Run PEP 723 scripts from URLs by @manzt in #6728
- Resolve GitHub Gist scripts by @manzt in #6739
- Run PEP 723 scripts from standard input by @manzt in #6740
- Update rattler and support flexible channel priority by @Hofer-Julian in #6743
- Add
lfsfield to git dependencies by @Hofer-Julian in #6744
Changed
- Point the uv cache at the pixi cache directory by @wolfv in #6712
- Resolve the target subdir to the declared workspace platform by @wolfv in #6715
- Strip ANSI escapes from rendered diagnostics in snapshots by @ruben-arts in #6735
Documentation
- Make more use of the rich platform syntax by @ruben-arts in #6711
Fixed
- Force reinstall with setuptools in ros backend by @ruben-arts in #6713
- Fix pre-commit during backends release script by @lucascolley in #6719
New Contributors
v0.75.0
[0.75.0] - 2026-07-29
✨ Highlights
pixi publish now publishes every workspace package that opts in in dependency order. It also refuses to publish anything if a necessary source dependencies didn't opt into being published.
[package]
name = "cpp_math"
publish = trueOffline solves now only consider conda packages you already have, either in the package cache or on a local file:// channel.
That means that you can run pixi update --offline and it will resolve with the packages you have local on your machine.
Completion is now generated from the CLI itself, so environment, platform, feature, and task names complete on every option that takes one, in bash, zsh, fish, and nushell.
As usual we also fixed a couple of bugs.
Added
- Publish the workspace packages that opt in by @Hofer-Julian in #6526
- Rework completion by @hunger in #6686
- Restrict offline solves to locally available packages by @Hofer-Julian in #6644
- Validate __archspec microarchitecture names by @hunger in #6701
Changed
- Report the assumed platform per environment by @hunger in #6508
- Reuse cached artifacts for immutable sources when the cache dir is gone by @Hofer-Julian in #6699
Documentation
- Explain that
$PREFIXis not expanded on Windows by @baszalmstra in #6690
Fixed
- Clean stale files from incremental ROS Python builds by @baszalmstra in #6691
- Fix CI on main and slim down extra slow tests by @Hofer-Julian in #6708
Removed
v0.74.0
[0.74.0] - 2026-07-27
✨ Highlights
Environments can now define content inline, no feature needed:
[environments.test.dependencies]
pytest = "*"
[environments.test-lower-bounds]
solve-strategy = "lowest-direct"And pixi global can build tools from sources without a package manifest, just name the backend:
pixi global install --git https://github.com/BurntSushi/xsv.git --build-backend pixi-build-rustWe also fixed a bunch of bugs.
Added
- Inline environments by @Hofer-Julian in #6497
- Add offline mode (--offline) by @baszalmstra in #6608
- Inline package manifests for
pixi globalby @Hofer-Julian in #6521 - Fix build variant information for building by @ruben-arts in #6660
- Add run_exports to Package by @samrosenf in #6676
- Add progress spinner to pixi global sync by @MannXo in #6664
- Add --from-url option for self-update by @xia-tian-wu in #6641
Changed
- Stop docs-dev racing docs-release on tag dispatch by @Hofer-Julian in #6630
- Keep PR docs builds out of the deploy concurrency group by @Hofer-Julian in #6631
Documentation
- Typo in documentation by @anthonyylee in #6616
- Fix examples to use
requires-pixiinstead ofpixi-minimumby @li-em in #6634
Fixed
- Release workspace gateway before indexing on publish by @hunger in #6579
- Account for Cargo build target in install-as by @baszalmstra in #6611
- Resolve changelog preview range end to a commit SHA by @Hofer-Julian in #6613
- Detect host/build dependency changes in
--check/--dry-runby @baszalmstra in #6457 - Prevent pytest-temp from accumulating stale run directories by @Hofer-Julian in #6569
- Better messaging when adding dependencies to unused features by @Hofer-Julian in #6623
- Name the failing environment in pixi global error messages by @tdejager in #6643
- Rename
--subdirto--subdirectoryfor git dependencies by @Hofer-Julian in #6657 - Only source declarations decide inline package suppression by @Hofer-Julian in #6662
- Name the package when solving build environments fails by @Hofer-Julian in #6667
- Give inline packages a name and a helpful error for Cargo workspaces by @Hofer-Julian in #6659
- Resolve rich platforms in
workspace export conda-explicit-specby @MridulS in #6551
New Contributors
- @xia-tian-wu made their first contribution in #6641
- @MannXo made their first contribution in #6664
- @li-em made their first contribution in #6634
- @anthonyylee made their first contribution in #6616
v0.73.0
[0.73.0] - 2026-07-15
✨ Highlights
This release brings two big features:
workspace = truenow also works in environment[dependency]tables- TOML 1.1 multiline inline tables are now fully supported
As usual we also fixed a couple of bugs.
workspace = true in environment dependency tables
Until now, { workspace = true } only worked in the package dependency tables and required the pixi-build preview.
With this release, the environment tables can inherit from [workspace.dependencies] as well, no preview needed.
That means a version shared by several features or targets only has to be declared once:
[workspace.dependencies]
numpy = "1.*"
[dependencies]
numpy = { workspace = true }
[feature.dev.dependencies]
numpy = { workspace = true }You can learn more about this feature in the docs: https://pixi.prefix.dev/v0.73.0/build/workspace_dependencies/
TOML 1.1
Pixi now fully supports TOML 1.1.
Most notably, inline tables can now span multiple lines and have trailing commas, which used to be a syntax error:
[dependencies]
python = {
version = ">=3.12",
channel = "conda-forge",
}Commands that modify the manifest, like pixi add, keep the layout you wrote.
One word of caution: many other tools only read TOML 1.0 so far, so using the new syntax in pyproject.toml can break them even though Pixi accepts it.
Added
- Support
workspace = truein environment dependency tables by @Hofer-Julian in #6592 - Full support for TOML 1.1 by @Hofer-Julian in #6500
Changed
Documentation
- Expand docs for extras, flags, and conditional dependencies by @wolfv in #6570
- Document TOML 1.1 support by @Hofer-Julian
- Fix python version constraint location in pixi-build-python backend by @hunger in #6580
Fixed
- Handle dotted keys, regular tables and name normalization when editing manifests by @Hofer-Julian
- Isolate global_specs tests from the user's global manifest by @Hofer-Julian in #6573
- Mark slow integration tests with pytest.mark.slow by @Hofer-Julian in #6574
- Fail on git subprocess errors so a rev can resolve to a tag by @Hofer-Julian in #6591
- Resolve workspace dependencies in inline package definitions by @Hofer-Julian in #6590
- Do not chain run-exports when resolving source package run deps by @Hofer-Julian in #6587
- Anchor CARGO_TARGET_DIR to the workspace root by @Hofer-Julian in #6602
v0.72.2
[0.72.2] - 2026-07-09
✨ Highlights
This release contains more fixes for rich platforms.
Added
- Add
pixi workspace platform add --auto-detectedby @hunger in #6355 - Explain why each declared platform cannot run here by @hunger in #6491
Changed
- Compose sysreq platforms from customisations only by @kilian-hu in #6520
- Report unsatisfied virtual packages instead of a misleading interpreter error by @hunger
Documentation
Fixed
- Quick-validate to rebuild source packages on rich platforms by @wolfv in #6544
- Satisfiability of conditional dependencies with virtual packages by @ruben-arts in #6554
- Name the unmet virtual package in the runs-by-accident warning by @hunger in #6563
- Truncate stdlib variant version to major.minor by @hunger in #6567
Removed
- Remove outdated
clickpin by @lucascolley in #6549
v0.72.1
[0.72.1] - 2026-07-07
✨ Highlights
This release contains important bugfixes for rich platforms, v3 repodata handling, pixi-build-r and more.
Changed
- Do not fail when running tasks in an environment by @hunger in #6507
- Provide R packages under their r-prefixed conda name by @roaldarbol in #6515
- Suggest
pixi self-update --versionfor requires-pixi errors by @hunger in #6516 - Register run-export-introduced source deps on the assembled record by @wolfv in #6519
- Let explicit source registrations win over implied ones by @Hofer-Julian in #6532
Documentation
- Document all override variables by @Hofer-Julian in #6486
- Fix
requires-pythonfield by @mwtoews in #6512
Fixed
- Don't drag rich platform variants into bare-subdir environments by @hunger in #6517
- Invalidate lock file when an inline package definition changes by @Hofer-Julian in #6529
Refactor
New Contributors
- @mwtoews made their first contribution in #6512
- @roaldarbol made their first contribution in #6515
v0.72.0
[0.72.0] - 2026-07-01
✨ Highlights
This release brings an exciting new Pixi Build feature: inline package manifests.
If you want to build a package from source that didn't contain a Pixi Build manifest, that used to be pretty annoying.
Now you can simply set the metadata inline like this:
[dependencies]
rust-package = { git = "https://github.com/user/repo.git", package.build.backend.name = "pixi-build-rust" }You can learn more about this feature in the docs: https://pixi.prefix.dev/v0.72.0/build/inline_packages/
Added
- Inline package definition by @Hofer-Julian in #6428