Releases: prefix-dev/pixi
v0.39.0 - 2024-12-02
β¨ Highlights
- We now have a new
concurrency
configuration in thepixi.toml
file.
This allows you to set the number of concurrent solves or downloads that can be run at the same time. - We changed the way pixi searches for a pixi manifest. Where it was previously first considering the activated
pixi shell
, it will now search first in the current directory and its parent directories. more info - The lockfile format is changed to make it slightly smaller and support source dependencies.
Added
- Add
concurrency
configuration by @ruben-arts in #2569
Changed
- Add
XDG_CONFIG_HOME
/.config
to search of pixi global manifest path by @hoxbro in #2547 - Let
pixi global sync
collect errors rather than returning early by @Hofer-Julian in #2586 - Allow configuring pypi insecure host by @zen-xu in #2521
- Reorder manifest discovery logic by @Hofer-Julian in #2564
Documentation
- Improve pixi manifest by @Hofer-Julian in #2596
Fixed
pixi global list
failing for empty environments by @Hofer-Julian in #2571- Macos activation cargo vars by @ruben-arts in #2578
- Trampoline without corresponding json breaking by @Hofer-Julian in #2576
- Ensure pinning strategy is not affected by non-semver packages by @seowalex in #2580
- Pypi installs happening every time by @tdejager in #2587
pixi global
report formatting by @Hofer-Julian in #2595- Improve test speed and support win-arm64 by @baszalmstra in #2597
- Update Task::Alias to return command description by @jjjermiah in #2607
Refactor
- Split install pypi into module and files by @tdejager in #2590
- PyPI installation traits + deduplication by @tdejager in #2599
Pixi build
We've merged in the main pixi build
feature branch. This is a big change but shouldn't have affected any of the current functionality.
If you notice any issues, please let us know.
It can be turned on by preview = "pixi-build"
in your pixi.toml
file. It's under heavy development so expect breaking changes in that feature for now.
- Preview of
pixi build
and workspaces by @tdejager in #2250 - Build recipe yaml directly by @wolfv in #2568
New Contributors
v0.38.0 - 2024-11-26
β¨ Highlights
- Specify
pypi-index
per pypi-dependency
[pypi-dependencies]
pytorch ={ version = "*", index = "https://download.pytorch.org/whl/cu118" }
[dependency-groups]
(PEP735) support inpyproject.toml
[dependency-groups]
test = ["pytest"]
docs = ["sphinx"]
dev = [{include-group = "test"}, {include-group = "docs"}]
[tool.pixi.environments]
dev = ["dev"]
- Much improved
pixi search
output!
Added
- Add pypi index by @nichmor in #2416
- Implement PEP735 support by @olivier-lacroix in #2448
- Extends manifest to allow for
preview
features by @tdejager in #2489 - Add versions/build list to
pixi search
output by @delsner in #2440 - Expose nested executables in
pixi global
by @bahugo in #2362
Fixed
- Always print a warning when config is invalid by @Hofer-Julian in #2508
- Incorrectly saving absolute base as path component by @tdejager in #2501
- Keep the case when getting the executable in
pixi global
by @wolfv in #2528 - Install script on
win-arm64
by @baszalmstra in #2538 - Trampoline installation on
pixi global update
by @nichmor in #2530 - Update the
PATH
env var with dynamic elements onpixi global
by @wolfv in #2541 - Correct
ppc64le
arch by @wolfv in #2540
Performance
- Experimental environment activation cache by @ruben-arts in #2367
Documentation
- Update project structure in Python tutorial by @LiamConnors in #2506
- Fix typo in
pixi project export conda-environment
by @nmarticorena in #2533 - Fix wrong use of underscores in
pixi project export
by @traversaro in #2539 - Adapt completion instructions by @Hofer-Julian in #2561
New Contributors
- @nmarticorena made their first contribution in #2533
- @delsner made their first contribution in #2440
v0.37.0 - 2024-11-18
β¨ Highlights
We now allow the use of prefix.dev
channels with sharded repodata:
Running pixi search rubin-env
using hyperfine
on the default versus our channels gives these results:
Cache Status | Channel | Mean [ms] | Relative |
---|---|---|---|
With cache | https://prefix.dev/conda-forge |
69.3 | 1.00 |
Without | https://prefix.dev/conda-forge |
389.5 | 5.62 |
With cache | https://conda.anaconda.org/conda-forge |
1043.3 | 15.06 |
Without | https://conda.anaconda.org/conda-forge |
2420.3 | 34.94 |
Breaking
- Make sure that
[activation.env]
are not completely overridden by[target.
tables, by @hameerabbasi in #2396
Changed
- Allow using sharded repodata by @baszalmstra in #2467
Documentation
- Update ros2.md turtlesim section by @nbbrooks in #2442
- Update pycharm.md to show optional installation by @plainerman in #2487
- Fix typo in documentation by @saraedum in #2496
- Update pixi install output by @LiamConnors in #2495
Fixed
- Incorrect python version was used in some parts of the solve by @tdejager in #2481
- Wrong description on pixi upgrade by @notPlancha in #2483
- Extra test for mismatch in python versions by @tdejager in #2485
- Keep
build
inpixi upgrade
by @ruben-arts in #2476
New Contributors
- @saraedum made their first contribution in #2496
- @plainerman made their first contribution in #2487
- @hameerabbasi made their first contribution in #2396
- @nbbrooks made their first contribution in #2442
v0.36.0 - 2024-11-07
β¨ Highlights
- You can now
pixi upgrade
your project dependencies. - We've done a performance improvement on the prefix validation check, thus faster
pixi run
startup times.
Added
- Add powerpc64le target to trampoline by @ruben-arts in #2419
- Add trampoline tests again by @Hofer-Julian in #2420
- Add
pixi upgrade
by @Hofer-Julian in #2368 - Add platform fallback win-64 for win-arm64 by @chawyehsu in #2427
- Add
--prepend
option forpixi project channel add
by @mrswastik-robot in #2447
Documentation
- Fix cli basic usage example by @lucascolley in #2432
- Update python tutorial by @LiamConnors in #2452
- Improve
pixi global
docs by @Hofer-Julian in #2437
Fixed
- Use
--silent
instead of--no-progress-meter
for oldcurl
by @jaimergp in #2428 - Search should return latest package across all platforms by @nichmor in #2424
- Trampoline unwraps by @ruben-arts in #2422
- PyPI Index usage (regression in v0.35.0) by @tdejager in #2465
- PyPI git dependencies (regression in v0.35.0) by @wolfv in #2438
- Tolerate pixi file errors (regression in v0.35.0) by @jvenant in #2457
- Make sure tasks are fetched for best platform by @jjjermiah in #2446
Performance
- Quick prefix validation check by @ruben-arts in #2400
New Contributors
- @jvenant made their first contribution in #2457
- @mrswastik-robot made their first contribution in #2447
- @LiamConnors made their first contribution in #2452
v0.35.0 - 2024-11-05
β¨ Highlights
pixi global
now exposed binaries are not scripts anymore but actual executables.
Resulting in significant speedup and better compatibility with other tools.
Added
- Add language packages with minor pinning by default by @ruben-arts in #2310
- Add grouping for exposing and removing by @nichmor in #2387
- Add trampoline for pixi global by @Hofer-Julian and @nichmor in #2381
- Adding SCM option for init command by @alvgaona in #2342
- Create
.pixi/.gitignore
containing*
by @maresb in #2361
Changed
- Use the same package cache folder by @nichmor in #2335zx
- Disable progress in non tty by @ruben-arts in #2308
- Improve global install reporting by @Hofer-Julian in #2395
- Suggest fix in platform error message by @maurosilber in #2404
- Upgrading uv to
0.4.30
by @tdejager in #2372
Documentation
- Add pybind11 example by @alvgaona in #2324
- Replace build with uv in pybind11 example by @alvgaona in #2341
- Fix incorrect statement about env location by @opcode81 in #2370
Fixed
- Global update reporting by @Hofer-Julian in #2352
- Correctly display unrequested environments on
task list
by @jjjermiah in #2402
Refactor
- Use built in string methods by @KGrewal1 in #2348
- Reorganize integration tests by @Hofer-Julian in #2408
- Reimplement barrier cell on OnceLock by @KGrewal1 in #2347
New Contributors
v0.34.0
β¨ Highlights
pixi global install
now takes a flag--with
, inspired byuv tool install
. If you only want to add dependencies without exposing them, you can now runpixi global install ipython --with numpy --with matplotlib
- Improved the output of
pixi global
subcommands - Many bug fixes
Added
- Add timeouts by @Hofer-Julian in #2311
Changed
-
Global update should add new executables by @nichmor in #2298
-
Add
pixi global install --with
by @Hofer-Julian in #2332
Documentation
-
Document where
pixi-global.toml
can be found by @Hofer-Julian in #2304 -
Add ros noetic example by @ruben-arts in #2271
-
Add nichita and julian to CITATION.cff by @Hofer-Julian in #2327
-
Improve keyring documentation to use pixi global by @olivier-lacroix in #2318
Fixed
-
pixi global upgrade-all
error message by @Hofer-Julian in #2296 -
Select correct run environment by @ruben-arts in #2301
-
Adapt channels to work with newest rattler-build version by @Hofer-Julian in #2306
-
Hide obsolete commands in help page of
pixi global
by @chawyehsu in #2320 -
Typecheck all tests by @Hofer-Julian in #2328
Refactor
- Improve upload errors by @ruben-arts in #2303
New Contributors
v0.33.0
β¨ Highlights
This is the first release with the new pixi global
implementation. It's a full reimplementation of pixi global
where it now uses a manifest file just like pixi
projects. This way you can declare your environments and save them to a VCS.
It also brings features like, adding dependencies to a global environment, and exposing multiple binaries from the same environment that are not part of the main installed packages.
Test it out with:
# Normal feature
pixi global install ipython
# New features
pixi global install \
--environment science \ # Defined the environment name
--expose scipython=ipython \ # Expose binaries under custom names
ipython scipy # Define multiple dependencies for one environment
This should result in a manifest in $HOME/.pixi/manifests/pixi-global.toml
:
version = 1
[envs.ipython]
channels = ["conda-forge"]
dependencies = { ipython = "*" }
exposed = { ipython = "ipython", ipython3 = "ipython3" }
[envs.science]
channels = ["conda-forge"]
dependencies = { ipython = "*", scipy = "*" }
exposed = { scipython = "ipython" }
π Documentation
Checkout the updated documentation on this new feature:
- Main documentation on this tag: https://pixi.sh/v0.33.0/
- Global CLI documentation: https://pixi.sh/v0.33.0/reference/cli/#global
- The implementation documentation: https://pixi.sh/v0.33.0/features/global_tools/
- The initial design proposal: https://pixi.sh/v0.33.0/design_proposals/pixi_global_manifest/
Breaking changes
This release breaks some CLI commands for pixi global
Before v0.33 |
In v0.33.0 |
Comment |
---|---|---|
pixi global upgrade package |
pixi global update environment_name |
updates the environment to the highest versions possible within the spec from the manifest |
pixi global upgrade-all |
pixi global update |
Updates all environments to the highest possible version within the spec from the manifest |
pixi global remove |
pixi global uninstall |
remove has become the opposite of add and uninstall of install , thus remove only removes packages from an environment not the environment itself |
v0.32.2 - 2024-10-16
β¨ Highlights
pixi self-update
will only work on the binaries from the GitHub releases, avoiding accidentally breaking the installation.- We now support
gcs://
conda registries. - No more broken PowerShell after using
pixi shell
.
Changed
- Add support for
gcs://
conda registries by @clement-chaneching in #2263
Documentation
- Small fixes in tutorials/python.md by @carschandler in #2252
- Update
pixi list
docs by @Hofer-Julian in #2269
Fixed
- Bind ctrl c listener so that it doesn't interfere on powershell by @wolfv in #2260
- Explicitly run default environment by @ruben-arts in #2273
- Parse env name on adding by @ruben-arts in #2279
Refactor
- Make self-update a compile time feature by @freundTech in #2213
New Contributors
- @clement-chaneching made their first contribution in #2263
- @freundTech made their first contribution in #2213
v0.33.0rc1
Installation:
pixi self-update --version 0.33.0rc1
# OR
curl -fsSL https://pixi.sh/install.sh | PIXI_VERSION=v0.33.0rc1 bash
β¨ Highlights
This is a release candidate for the new pixi global
implementation. It's a full reimplementation of pixi global
where it now uses a manifest file just like pixi
projects. This way you can declare your environments and save them to a VCS.
It also brings features like, adding dependencies to a global environment, and exposing multiple binaries from the same environment that are not part of the main installed packages.
Test it out with:
# Normal feature
pixi global install ipython
# New features
pixi global install \
--environment science \ # Defined the environment name
--expose scipython=ipython \ # Expose binaries under custom names
ipython scipy # Define multiple dependencies for one environment
This should result in a manifest in $HOME/.pixi/manifests/pixi-global.toml
:
version = 1
[envs.ipython]
channels = ["conda-forge"]
dependencies = { ipython = "*" }
exposed = { ipython = "ipython", ipython3 = "ipython3" }
[envs.science]
channels = ["conda-forge"]
dependencies = { ipython = "*", scipy = "*" }
exposed = { scipython = "ipython" }
π Documentation
Checkout the updated documentation on this new feature:
- Main documentation on this tag: https://pixi.sh/v0.33.0rc1/
- Global CLI documentation: https://pixi.sh/v0.33.0rc1/reference/cli/#global
- The implementation documentation: https://pixi.sh/v0.33.0rc1/features/global_tools/
- The initial design proposal: https://pixi.sh/v0.33.0rc1/design_proposals/pixi_global_manifest/
v0.32.1 - 2024-10-08
Fixes
Documentation
Note
The task
cache from inputs
and outputs
is most likely going to be invalidated, and thus will be rebuild. This had to do with a difference in the hash of a std::Path
in this version of Rust.