All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- 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.
- Add
concurrency
configuration by @ruben-arts in #2569
- 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
- Improve pixi manifest by @Hofer-Julian in #2596
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
- Split install pypi into module and files by @tdejager in #2590
- PyPI installation traits + deduplication by @tdejager in #2599
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
- @seowalex made their first contribution in #2580
- 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!
- 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
- 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
- Experimental environment activation cache by @ruben-arts in #2367
- 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
- @nmarticorena made their first contribution in #2533
- @delsner made their first contribution in #2440
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 |
- Make sure that
[activation.env]
are not completely overridden by[target.
tables, by @hameerabbasi in #2396
- Allow using sharded repodata by @baszalmstra in #2467
- 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
- 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
- @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
- 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.
- 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
- 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
- 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
- Quick prefix validation check by @ruben-arts in #2400
- @jvenant made their first contribution in #2457
- @mrswastik-robot made their first contribution in #2447
- @LiamConnors made their first contribution in #2452
pixi global
now exposed binaries are not scripts anymore but actual executables.
Resulting in significant speedup and better compatibility with other tools.
- 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
- 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
- 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
- Global update reporting by @Hofer-Julian in #2352
- Correctly display unrequested environments on
task list
by @jjjermiah in #2402
- 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
- @maurosilber made their first contribution in #2404
- @opcode81 made their first contribution in #2370
- @alvgaona made their first contribution in #2342
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
- Add timeouts by @Hofer-Julian in #2311
-
Global update should add new executables by @nichmor in #2298
-
Add
pixi global install --with
by @Hofer-Julian in #2332
-
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
-
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
- Improve upload errors by @ruben-arts in #2303
- @gerlero made their first contribution in #2300
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" }
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/
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
.
- Add support for
gcs://
conda registries by @clement-chaneching in #2263
- Small fixes in tutorials/python.md by @carschandler in #2252
- Update
pixi list
docs by @Hofer-Julian in #2269
- 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
- Make self-update a compile time feature by @freundTech in #2213
- @clement-chaneching made their first contribution in #2263
- @freundTech made their first contribution in #2213
- Bump Rust version to
1.81
by @wolfv in #2227
- Pixi-pack, docker, devcontainer by @pavelzw in #2220
The biggest fix in this PR is the move to the latest rattler as it came with some major bug fixes for macOS and Rust 1.81 compatibility.
- Correctly implement total ordering for dependency provider by @tdejager in rattler/#892
- Fixed self-clobber issue when up/down grading packages by @wolfv in rattler/#893
- Check environment name before returning not found print by @ruben-arts in #2198
- Turn off symlink follow for task cache by @ruben-arts in #2209
Thanks to our maintainer @baszamstra! He sped up the resolver for all cases we could think of in #2162 Check the result of times it takes to solve the environments in our test set:
- Add
nodefaults
to imported conda envs by @ruben-arts in #2097 - Add newline to
.gitignore
by @ruben-arts in #2095 - Add
--no-activation
option to prevent env activation during global install/upgrade by @183amir in #1980 - Add
--priority
arg toproject channel add
by @minrk in #2086
- Use pixi spec for conda environment yml by @ruben-arts in #2096
- Update rattler by @nichmor in #2120
- Update README.md by @ruben-arts in #2129
- Follow symlinks while walking files by @0xbe7a in #2141
- Adapt wording in pixi global proposal by @Hofer-Julian in #2098
- Community: add array-api-extra by @lucascolley in #2107
pixi global
mentionno-activation
by @Hofer-Julian in #2109- Add minimal constructor example by @bollwyvl in #2102
- Update global manifest
install
by @Hofer-Julian in #2128 - Add description for
pixi update --json
by @scottamain in #2160 - Fixes backticks for doc strings by @rachfop in #2174
- Sort exported conda explicit spec topologically by @synapticarbors in #2101
--import env_file
breaks channel priority by @fecet in #2113- Allow exact yanked pypi packages by @nichmor in #2116
- Check if files are same in
self-update
by @apoorvkh in #2132 get_or_insert_nested_table
by @Hofer-Julian in #2167- Improve
install.sh
PATH handling and general robustness by @Arcitec in #2189 - Output tasks on
pixi run
without input by @ruben-arts in #2193
- Significantly speed up conda resolution by @baszalmstra in #2162
- @Arcitec made their first contribution in #2189
- @rachfop made their first contribution in #2174
- @scottamain made their first contribution in #2160
- @apoorvkh made their first contribution in #2132
- @0xbe7a made their first contribution in #2141
- @fecet made their first contribution in #2113
- @minrk made their first contribution in #2086
- @183amir made their first contribution in #1980
- @lucascolley made their first contribution in #2107
I want to thank @synapticarbors and @abkfenris for starting the work on pixi project export
.
Pixi now supports the export of a conda environment.yml
file and a conda explicit specification file.
This is a great addition to the project and will help users to share their projects with other non pixi users.
- Export conda explicit specification file from project by @synapticarbors in #1873
- Add flag to
pixi search
by @Hofer-Julian in #2018 - Adds the ability to set the index strategy by @tdejager in #1986
- Export conda
environment.yml
by @abkfenris in #2003
- Improve examples/docker by @jennydaman in #1965
- Minimal pre-commit tasks by @Hofer-Julian in #1984
- Improve error and feedback when target does not exist by @tdejager in #1961
- Move the rectangle using a mouse in SDL by @certik in #2069
- Update cli.md by @xela-95 in #2047
- Update
system-requirements
information by @ruben-arts in #2079 - Append to file syntax in task docs by @nicornk in #2013
- Change documentation of pixi upload to refer to correct API endpoint by @traversaro in #2074
- Add downstream nerfstudio test by @tdejager in #1996
- Run pytests in parallel by @tdejager in #2027
- Testing common wheels by @tdejager in #2031
- Lock file is always outdated for pypi path dependencies by @nichmor in #2039
- Fix error message for export conda explicit spec by @synapticarbors in #2048
- Use
conda-pypi-map
for feature channels by @nichmor in #2038 - Constrain feature platforms in schema by @bollwyvl in #2055
- Split tag creation functions by @tdejager in #2062
- Tree print to pipe by @ruben-arts in #2064
subdirectory
in pypi url by @ruben-arts in #2065- Create a GUI application on Windows, not Console by @certik in #2067
- Make dashes underscores in python package names by @ruben-arts in #2073
- Give better errors on broken
pyproject.toml
by @ruben-arts in #2075
- Stop duplicating
strip_channel_alias
from rattler by @Hofer-Julian in #2017 - Follow-up wheels tests by @Hofer-Julian in #2063
- Integration test suite by @Hofer-Julian in #2081
- Remove
psutils
by @Hofer-Julian in #2083 - Add back older caching method by @tdejager in #2046
- Release script by @Hofer-Julian in #1978
- Activation script by @Hofer-Julian in #2014
- Pins python version in add_pypi_functionality by @tdejager in #2040
- Improve the lock_file_usage flags and behavior. by @ruben-arts in #2078
- Move matrix to workflow that it is used in by @tdejager in #1987
- Refactor manifest into more generic approach by @nichmor in #2015
- @certik made their first contribution in #2069
- @xela-95 made their first contribution in #2047
- @nicornk made their first contribution in #2013
- @jennydaman made their first contribution in #1965
- Add build-isolation options, for more details check out our docs
- Allow to use virtual package overrides from environment variables (PR)
- Many bug fixes
-
Use rustls-tls instead of native-tls per default by @Hofer-Julian in #1929
-
Upgrade to uv 0.3.4 by @tdejager in #1936
-
Upgrade to uv 0.4.0 by @tdejager in #1944
-
Better error for when the target or platform are missing by @tdejager in #1959
-
Improve integration tests by @Hofer-Julian in #1958
-
Improve release script by @Hofer-Julian in #1974
-
Update env variables in installation docs by @lev112 in #1937
-
Always overwrite when pixi adding the dependency by @ruben-arts in #1935
-
Typo in schema.json by @SobhanMP in #1948
-
Using file url as mapping by @nichmor in #1930
-
Offline mapping should not request by @nichmor in #1968
-
pixi init
forpyproject.toml
by @Hofer-Julian in #1947 -
Use two in memory indexes, for resolve and builds by @tdejager in #1969
-
Minor issues and todos by @KGrewal1 in #1963
- Improve integration tests by @Hofer-Julian in #1942
- Use mold on linux by @Hofer-Julian in #1914
- Let
init
add dependencies independent of target and don't install by @ruben-arts in #1916 - Enable use of manylinux wheeltags once again by @tdejager in #1925
- The bigger runner by @ruben-arts in #1902
- Uv upgrade to 0.3.2 by @tdejager in #1900
- Add
keyrings.artifacts
to the list of project built withpixi
by @jslorrma in #1908
- Use default indexes if non where given by the lockfile by @ruben-arts in #1910
- @jslorrma made their first contribution in #1908
- Bug Fixes: Major fixes in general but especially for PyPI installation issues and better error messaging.
- Compatibility: Default Linux version downgraded to 4.18 for broader support.
- New Features: Added INIT_CWD in pixi run, improved logging, and more cache options.
- Add
INIT_CWD
to activated envpixi run
by @ruben-arts in #1798 - Add context to error when parsing conda-meta files by @baszalmstra in #1854
- Add some logging for when packages are actually overridden by conda by @tdejager in #1874
- Add package when extra is added by @ruben-arts in #1856
- Use new gateway to get the repodata for global install by @nichmor in #1767
- Pixi global proposal by @Hofer-Julian in #1757
- Upgrade to new uv 0.2.37 by @tdejager in #1829
- Use new gateway for pixi search by @nichmor in #1819
- Extend pixi clean cache with more cache options by @ruben-arts in #1872
- Downgrade
__linux
default to4.18
by @ruben-arts in #1887
- Fix instructions for update github actions by @Hofer-Julian in #1774
- Fix fish completion script by @dennis-wey in #1789
- Expands the environment variable examples in the reference section by @travishathaway in #1779
- Community feedback
pixi global
by @Hofer-Julian in #1800 - Additions to the pixi global proposal by @Hofer-Julian in #1803
- Stop using invalid environment name in pixi global proposal by @Hofer-Julian in #1826
- Extend
pixi global
proposal by @Hofer-Julian in #1861 - Make
channels
required inpixi global
manifest by @Hofer-Julian in #1868 - Fix linux minimum version in project_configuration docs by @traversaro in #1888
- Try to increase
rlimit
by @baszalmstra in #1766 - Add test for invalid environment names by @Hofer-Julian in #1825
- Show global config in info command by @ruben-arts in #1807
- Correct documentation of PIXI_ENVIRONMENT_PLATFORMS by @traversaro in #1842
- Format in docs/features/environment.md by @cdeil in #1846
- Make proper use of
NamedChannelOrUrl
by @ruben-arts in #1820 - Trait impl override by @baszalmstra in #1848
- Tame
pixi search
by @baszalmstra in #1849 - Fix
pixi tree -i
duplicate output by @baszalmstra in #1847 - Improve spec parsing error messages by @baszalmstra in #1786
- Parse matchspec from CLI Lenient by @baszalmstra in #1852
- Improve parsing of pypi-dependencies by @baszalmstra in #1851
- Don't enforce system requirements for task tests by @baszalmstra in #1855
- Satisfy when there are no pypi packages in the lockfile by @ruben-arts in #1862
- Ssh url should not contain colon by @baszalmstra in #1865
find-links
with manifest-path by @baszalmstra in #1864- Increase stack size in debug mode on windows by @baszalmstra in #1867
- Solve-group-envs should reside in
.pixi
folder by @baszalmstra in #1866 - Move package-override logging by @tdejager in #1883
- Pinning logic for minor and major by @baszalmstra in #1885
- Docs manifest tests by @ruben-arts in #1879
- Encapsulate channel resolution logic for CLI by @olivier-lacroix in #1781
- Move to
pub(crate) fn
in order to detect and remove unused functions by @Hofer-Julian in #1805 - Only compile
TaskNode::full_command
for tests by @Hofer-Julian in #1809 - Derive
Default
for more structs by @Hofer-Julian in #1824 - Rename
get_up_to_date_prefix
toupdate_prefix
by @Hofer-Julian in #1837 - Make
HasSpecs
implementation more functional by @Hofer-Julian in #1863
- @cdeil made their first contribution in #1846
- Fix mlx feature in "multiple machines" example by @rgommers in #1762
- Update some of the cli and add osx rosetta mention by @ruben-arts in #1760
- Fix typo by @pavelzw in #1771
- User agent string was wrong by @wolfv in #1759
- Dont accidentally wipe pyproject.toml on
init
by @ruben-arts in #1775
- Add
pixi_spec
crate by @baszalmstra in #1741
- @rgommers made their first contribution in #1762
This release contains a lot of refactoring and improvements to the codebase, in preparation for future features and improvements. Including with that we've fixed a ton of bugs. To make sure we're not breaking anything we've added a lot of tests and CI checks. But let us know if you find any issues!
As a reminder, you can update pixi using pixi self-update
and move to a specific version, including backwards, with pixi self-update --version 0.27.0
.
- Add
pixi run
completion forfish
shell by @dennis-wey in #1680
- Move examples from setuptools to hatchling by @Hofer-Julian in #1692
- Let
pixi init
create hatchling pyproject.toml by @Hofer-Julian in #1693 - Make
[project]
table optional forpyproject.toml
manifests by @olivier-lacroix in #1732
- Improve the
fish
completions location by @tdejager in #1647 - Explain why we use
hatchling
by @Hofer-Julian - Update install CLI doc now that the
update
command exist by @olivier-lacroix in #1690 - Mention
pixi exec
in GHA docs by @pavelzw in #1724 - Update to correct spelling by @ahnsn in #1730
- Ensure
hatchling
is used everywhere in documentation by @olivier-lacroix in #1733 - Add readme to WASM example by @wolfv in #1703
- Fix typo by @pavelzw in #1660
- Fix typo by @DimitriPapadopoulos in #1743
- Fix typo by @SeaOtocinclus in #1651
- Added script and tasks for testing examples by @tdejager in #1671
- Add simple integration tests by @ruben-arts in #1719
- Prepend pixi to path instead of appending by @vigneshmanick in #1644
- Add manifest tests and run them in ci by @ruben-arts in #1667
- Use hashed pypi mapping by @baszalmstra in #1663
- Depend on
pep440_rs
from crates.io and use replace by @baszalmstra in #1698 pixi add
with more than just package name and version by @ruben-arts in #1704- Ignore pypi logic on non pypi projects by @ruben-arts in #1705
- Fix and refactor
--no-lockfile-update
by @ruben-arts in #1683 - Changed example to use hatchling by @tdejager in #1729
- Todo clean up by @KGrewal1 in #1735
- Allow for init to
pixi.toml
whenpyproject.toml
is available. by @ruben-arts in #1640 - Test on
macos-13
by @ruben-arts in #1739 - Make sure pixi vars are available before
activation.env
vars are by @ruben-arts in #1740 - Authenticate exec package download by @olivier-lacroix in #1751
- Extract
pixi_manifest
by @baszalmstra in #1656 - Delay channel config url evaluation by @baszalmstra in #1662
- Split out pty functionality by @tdejager in #1678
- Make project manifest loading DRY and consistent by @olivier-lacroix in #1688
- Refactor channel add and remove CLI commands by @olivier-lacroix in #1689
- Refactor
pixi::consts
andpixi::config
into separate crates by @tdejager in #1684 - Move dependencies to
pixi_manifest
by @tdejager in #1700 - Moved pypi environment modifiers by @tdejager in #1699
- Split
HasFeatures
by @tdejager in #1712 - Move, splits and renames the
HasFeatures
trait by @tdejager in #1717 - Merge
utils
by @tdejager in #1718 - Move
fancy
to its own crate by @tdejager in #1722 - Move
config
to repodata functions by @tdejager in #1723 - Move
pypi-mapping
to its own crate by @tdejager in #1725 - Split
utils
into 2 crates by @tdejager in #1736 - Add progress bar as a crate by @nichmor in #1727
- Split up
pixi_manifest
lib by @tdejager in #1661
- @DimitriPapadopoulos made their first contribution in #1743
- @KGrewal1 made their first contribution in #1735
- @ahnsn made their first contribution in #1730
- @dennis-wey made their first contribution in #1680
- Make sure we also build the msi installer by @ruben-arts in #1645
- Specify how pixi pins your dependencies with the
pinning-strategy
in the config. e.g.semver
->>=1.2.3,<2
andno-pin
->*
) #1516 - Specify how pixi solves multiple channels with
channel-priority
in the manifest. #1631
- Add short options to config location flags by @ruben-arts in #1586
- Add a file guard to indicate if an environment is being installed by @baszalmstra in #1593
- Add
pinning-strategy
to the configuration by @ruben-arts in #1516 - Add
channel-priority
to the manifest and solve by @ruben-arts in #1631 - Add
nushell
completion by @Hofer-Julian in #1599 - Add
nushell
completions forpixi run
by @Hofer-Julian in #1627 - Add completion for
pixi run --environment
for nushell by @Hofer-Julian in #1636
- Upgrade uv 0.2.18 by @tdejager in #1540
- Refactor
pyproject.toml
parser by @nichmor in #1592 - Interactive warning for packages in
pixi global install
by @ruben-arts in #1626
- Add WASM example with JupyterLite by @wolfv in #1623
- Added LLM example by @ytjhai in #1545
- Add note to mark directory as excluded in pixi-pycharm by @pavelzw in #1579
- Add changelog to docs by @vigneshmanick in #1574
- Updated the values of the system requirements by @tdejager in #1575
- Tell cargo install which bin to install by @ruben-arts in #1584
- Update conflict docs for
cargo add
by @Hofer-Julian in #1600 - Revert "Update conflict docs for
cargo add
" by @Hofer-Julian in #1605 - Add reference documentation for the exec command by @baszalmstra in #1587
- Add transitioning docs for
poetry
andconda
by @ruben-arts in #1624 - Add pixi-pack by @pavelzw in #1629
- Use '-' instead of '_' for package name by @olivier-lacroix in #1628
- Flaky task test by @tdejager in #1581
- Pass command line arguments verbatim by @baszalmstra in #1582
- Run clippy on all targets by @Hofer-Julian in #1588
- Pre-commit install pixi task by @Hofer-Julian in #1590
- Add
clap_complete_nushell
to dependencies by @Hofer-Julian in #1625 - Write to
stdout
for machine readable output by @Hofer-Julian in #1639
- Migrate to workspace by @baszalmstra in #1597
- Remove double manifest warning by @tdejager in #1580
- @ytjhai made their first contribution in #1545
pixi exec
command, execute commands in temporary environments, useful for testing in short-lived sessions.- We've bumped the default system-requirements to higher defaults: glibc (2.17 -> 2.28), osx64 (10.15 -> 13.0), osx-arm64 (11.0 -> 13.0). Let us know if this causes any issues. To keep the previous values please use a
system-requirements
table, this is explained here
- Bump system requirements by @wolfv in #1553
- Better error when exec is missing a cmd by @tdejager in #1565
- Make exec use authenticated client by @tdejager in #1568
- Automatic updating using github actions by @pavelzw in #1456
- Describe the --change-ps1 option for pixi shell by @Yura52 in #1536
- Add some other quantco repos by @pavelzw in #1542
- Add example using
geos-rs
by @Hofer-Julian in #1563
- Tiny error in basic_usage.md by @Sjouks in #1513
- Lazy initialize client by @baszalmstra in #1511
- URL typos in rtd examples by @kklein in #1538
- Fix satisfiability for short sha hashes by @tdejager in #1530
- Wrong path passed to dynamic check by @tdejager in #1552
- Don't error if no tasks is available on platform by @hoxbro in #1550
- Add to use update code by @baszalmstra in #1508
- @kklein made their first contribution in #1538
- @Yura52 made their first contribution in #1536
- @Sjouks made their first contribution in #1513
- Add readthedocs examples by @bollwyvl in #1423
- Fix typo in project_configuration.md by @RaulPL in #1502
- Too much shell variables in activation of
pixi shell
by @ruben-arts in #1507
- Replace http code %2b with + by @ruben-arts in #1500
- You can now run in a more isolated environment on
unix
machines, usingpixi run --clean-env TASK_NAME
. - You can new easily clean your environment with
pixi clean
or the cache withpixi clean cache
- Add
pixi clean
command by @ruben-arts in #1325 - Add
--clean-env
flag to tasks and run command by @ruben-arts in #1395 - Add
description
field totask
by @jjjermiah in #1479 - Add pixi file to the environment to add pixi specific details by @ruben-arts in #1495
- Project environment cli by @baszalmstra in #1433
- Update task list console output by @vigneshmanick in #1443
- Upgrade uv by @tdejager in #1436
- Sort packages in
list_global_packages
by @dhirschfeld in #1458 - Added test for special chars wheel filename by @tdejager in #1454
- Improve multi env tasks documentation by @ruben-arts in #1494
- Use the activated environment when running a task by @tdejager in #1461
- Fix authentication pypi-deps for download from lockfile by @tdejager in #1460
- Display channels correctly in
pixi info
by @ruben-arts in #1459 - Render help for
--frozen
by @ruben-arts in #1468 - Don't record purl for non conda-forge channels by @nichmor in #1451
- Use best_platform to verify the run platform by @ruben-arts in #1472
- Creation of parent dir of symlink by @ruben-arts in #1483
pixi install --all
output missing newline by @vigneshmanick in #1487- Don't error on already existing dependency by @ruben-arts in #1449
- Remove debug true in release by @ruben-arts in #1477
- @dhirschfeld made their first contribution in #1458
- This release adds two new commands
pixi config
andpixi update
pixi config
allows you toedit
,set
,unset
,append
,prepend
andlist
your local/global or system configuration.pixi update
re-solves the full lockfile or usepixi update PACKAGE
to only updatePACKAGE
, making sure your project is using the latest versions that the manifest allows for.
- Add
pixi config
command by @chawyehsu in #1339 - Add
pixi list --explicit
flag command by @jjjermiah in #1403 - Add
[activation.env]
table for environment variables by @ruben-arts in #1156 - Allow installing multiple envs, including
--all
at once by @tdejager in #1413 - Add
pixi update
command to re-solve the lockfile by @baszalmstra in #1431 (fixes 20 👍) - Add
detached-environments
to the config, move environments outside the project folder by @ruben-arts in #1381 (fixes 11 👍)
- Use the gateway to fetch repodata by @baszalmstra in #1307
- Switch to compressed mapping by @nichmor in #1335
- Warn on pypi conda clobbering by @nichmor in #1353
- Align
remove
arguments withadd
by @olivier-lacroix in #1406 - Add backward compat logic for older lock files by @nichmor in #1425
- Fix small screen by removing getting started section. by @ruben-arts in #1393
- Improve caching docs by @ruben-arts in #1422
- Add example, python library using gcp upload by @tdejager in #1380
- Correct typos with
--no-lockfile-update
. by @tobiasraabe in #1396
- Trim channel url when filter packages_for_prefix_mapping by @zen-xu in #1391
- Use the right channels when upgrading global packages by @olivier-lacroix in #1326
- Fish prompt display looks wrong in tide by @tfriedel in #1424
- Use local mapping instead of remote by @nichmor in #1430
- Remove unused fetch_sparse_repodata by @olivier-lacroix in #1411
- Remove project level method that are per environment by @olivier-lacroix in #1412
- Update lockfile functionality for reusability by @baszalmstra in #1426
- @tfriedel made their first contribution in #1424
- @jjjermiah made their first contribution in #1403
- @tobiasraabe made their first contribution in #1396
- Support for source pypi dependencies through the cli:
pixi add --pypi 'package @ package.whl'
, perfect for adding just build wheels to your environment in CI.pixi add --pypi 'package_from_git @ git+https://github.com/org/package.git'
, to add a package from a git repository.pixi add --pypi 'package_from_path @ file:///path/to/package' --editable
, to add a package from a local path.
- Implement more functions for
pixi add --pypi
by @wolfv in #1244
- Update
install
cli doc by @vigneshmanick in #1336 - Replace empty default example with no-default-feature by @beenje in #1352
- Document the add & remove cli behaviour with pyproject.toml manifest by @olivier-lacroix in #1338
- Add environment activation to GitHub actions docs by @pavelzw in #1371
- Clarify in CLI that run can also take commands by @twrightsman in #1368
- Automated update of install script in pixi.sh by @ruben-arts in #1351
- Wrong description on
pixi project help
by @notPlancha in #1358 - Don't need a python interpreter when not having
pypi
dependencies. by @ruben-arts in #1366 - Don't error on not editable not path by @ruben-arts in #1365
- Align shell-hook cli with shell by @ruben-arts in #1364
- Only write prefix file if needed by @ruben-arts in #1363
- Lock-file resolve functionality in separated modules by @tdejager in #1337
- Use generic for RepoDataRecordsByName and PypiRecordsByName by @olivier-lacroix in #1341
- @twrightsman made their first contribution in #1368
- @notPlancha made their first contribution in #1358
- @vigneshmanick made their first contribution in #1336
- Use read timeout, not global timeout by @wolfv in #1329
- Channel priority logic by @ruben-arts in #1332
- This release adds support for configuring PyPI settings globally, to use alternative PyPI indexes and load credentials with keyring.
- We now support cross-platform running, for
osx-64
onosx-arm64
andwasm
environments. - There is now a
no-default-feature
option to simplify usage of environments.
- Add pypi config for global local config file + keyring support by @wolfv in #1279
- Allow for cross-platform running, for
osx-64
onosx-arm64
andwasm
environments by @wolfv in #1020
- Add
no-default-feature
option to environments by @olivier-lacroix in #1092 - Add
/etc/pixi/config.toml
to global configuration search paths by @pavelzw in #1304 - Change global config fields to kebab-case by @tdejager in #1308
- Show all available task with
task list
by @Hoxbro in #1286 - Allow to emit activation environment variables as JSON by @borchero in #1317
- Use locked pypi packages as preferences in the pypi solve to get minimally updating lock files by @ruben-arts in #1320
- Allow to upgrade several global packages at once by @olivier-lacroix in #1324
- Typo in tutorials python by @carschandler in #1297
- Python Tutorial: Dependencies, PyPI, Order, Grammar by @JesperDramsch in #1313
- Schema version and add it to tbump by @ruben-arts in #1284
- Make integration test fail in ci and fix ssh issue by @ruben-arts in #1301
- Automate adding install scripts to the docs by @ruben-arts in #1302
- Do not always request for prefix mapping by @nichmor in #1300
- Align CLI aliases and add missing by @ruben-arts in #1316
- Alias
depends_on
todepends-on
by @ruben-arts in #1310 - Add error if channel or platform doesn't exist on remove by @ruben-arts in #1315
- Allow spec in
pixi q
instead of only name by @ruben-arts in #1314 - Remove dependency on sysroot for linux by @ruben-arts in #1319
- Fix linking symlink issue, by updating to the latest
rattler
by @baszalmstra in #1327
- Use IndexSet instead of Vec for collections of unique elements by @olivier-lacroix in #1289
- Use generics over PyPiDependencies and CondaDependencies by @olivier-lacroix in #1303
- @borchero made their first contribution in #1317
- @JesperDramsch made their first contribution in #1313
- @Hoxbro made their first contribution in #1286
- @carschandler made their first contribution in #1297
- Big improvements on the pypi-editable installs.
- Editable non-satisfiable by @baszalmstra in #1251
- Satisfiability with pypi extras by @baszalmstra in #1253
- Change global install activation script permission from 0o744 -> 0o755 by @zen-xu in #1250
- Avoid creating Empty TOML tables by @olivier-lacroix in #1270
- Uses the special-case uv path handling for both built and source by @tdejager in #1263
- Modify test before attempting to write to .bash_profile in install.sh by @bruchim-cisco in #1267
- Parse properly 'default' as environment Cli argument by @olivier-lacroix in #1247
- Apply
schema.json
normalization, add to docs by @bollwyvl in #1265 - Improve absolute path satisfiability by @tdejager in #1252
- Improve parse deno error and make task a required field in the cli by @ruben-arts in #1260
- @bollwyvl made their first contribution in #1265
- @bruchim-cisco made their first contribution in #1267
- @zen-xu made their first contribution in #1250
- We now support
env
variables in thetask
definition, these can also be used as default values for parameters in your task which you can overwrite with your shell's env variables. e.g.task = { cmd = "task to run", env = { VAR="value1", PATH="my/path:$PATH" } }
- We made a big effort on fixing issues and improving documentation!
- Add
env
to the tasks to specify tasks specific environment variables by @wolfv in #972
- Add
--pyproject
option topixi init
with a pyproject.toml by @olivier-lacroix in #1188 - Upgrade to new uv version 0.1.32 by @tdejager in #1208
-
Document
pixi.lock
by @ruben-arts in #1209 -
Document channel
priority
definition by @ruben-arts in #1234 -
Add rust tutorial including openssl example by @ruben-arts in #1155
-
Add python tutorial to documentation by @tdejager in #1179
-
Add JupyterLab integration docs by @renan-r-santos in #1147
-
Add Windows support for PyCharm integration by @pavelzw in #1192
-
Setup_pixi for local pixi installation by @ytausch in #1181
-
Update pypi docs by @Hofer-Julian in #1215
-
Fix order of
--no-deps
when pip installing in editable mode by @glemaitre in #1220 -
Fix frozen documentation by @ruben-arts in #1167
- Small typo in list cli by @tdejager in #1169
- Issue with invalid solve group by @baszalmstra in #1190
- Improve error on parsing lockfile by @ruben-arts in #1180
- Replace
_
with-
when creating environments from features by @wolfv in #1203 - Prevent duplicate direct dependencies in tree by @abkfenris in #1184
- Use project root directory instead of task.working_directory for base dir when hashing by @wolfv in #1202
- Do not leak env vars from bat scripts in cmd.exe by @wolfv in #1205
- Make file globbing behave more as expected by @wolfv in #1204
- Fix for using file::// in pyproject.toml dependencies by @tdejager in #1196
- Improve pypi version conversion in pyproject.toml dependencies by @wolfv in #1201
- Update to the latest rattler by @wolfv in #1235
task = { cmd = "task to run", cwd = "folder", inputs = "input.txt", output = "output.txt"}
Whereinput.txt
andoutput.txt
where previously infolder
they are now relative the project root. This changed in: #1202task = { cmd = "task to run", inputs = "input.txt"}
previously searched for allinput.txt
files now only for the ones in the project root. This changed in: #1204
- @glemaitre made their first contribution in #1220
This fixes the issue where pixi would generate broken environments/lockfiles when a mapping for a brand-new version of a package is missing.
- Add fallback mechanism for missing mapping by @nichmor in #1166
- This release adds a new
pixi tree
command to show the dependency tree of the project. - Pixi now persists the manifest and environment when activating a shell, so you can use pixi as if you are in that folder while in the shell.
pixi tree
command to show dependency tree by @abkfenris in #1069- Persistent shell manifests by @abkfenris in #1080
- Add to pypi in feature (
pixi add --feature test --pypi package
) by @ruben-arts in #1135 - Use new mapping by @nichmor in #888
--no-progress
to disable all progress bars by @baszalmstra in #1105- Create a table if channel is specified (
pixi add conda-forge::rattler-build
) by @baszalmstra in #1079
- Add the project itself as an editable dependency by @olivier-lacroix in #1084
- Get
tool.pixi.project.name
fromproject.name
by @olivier-lacroix in #1112 - Create
features
andenvironments
from extras by @olivier-lacroix in #1077 - Pypi supports come out of Beta by @olivier-lacroix in #1120
- Enable to force
PIXI_ARCH
for pixi installation by @beenje in #1129 - Improve tool.pixi.project detection logic by @olivier-lacroix in #1127
- Add purls for packages if adding pypi dependencies by @nichmor in #1148
- Add env name if not default to
tree
andlist
commands by @ruben-arts in #1145
- Add MODFLOW 6 to community docs by @Hofer-Julian in #1125
- Addition of ros2 tutorial by @ruben-arts in #1116
- Improve install script docs by @ruben-arts in #1136
- More structured table of content by @tdejager in #1142
- Amend syntax in
conda-meta/history
to preventconda.history.History.parse()
error by @jaimergp in #1117 - Fix docker example and include
pyproject.toml
by @tdejager in #1121
- @abkfenris made their first contribution in #1069
- @beenje made their first contribution in #1129
- @jaimergp made their first contribution in #1117
- This release adds support for
pyproject.toml
, now pixi reads from the[tool.pixi]
table. - We now support editable PyPI dependencies, and PyPI source dependencies, including
git
,path
, andurl
dependencies.
Tip
These new features are part of the ongoing effort to make pixi more flexible, powerful, and comfortable for the python users. They are still in progress so expect more improvements on these features soon, so please report any issues you encounter and follow our next releases!
- Support for
pyproject.toml
by @olivier-lacroix in #999 - Support for PyPI source dependencies by @tdejager in #985
- Support for editable PyPI dependencies by @tdejager in #1044
XDG_CONFIG_HOME
andXDG_CACHE_HOME
compliance by @chawyehsu in #1050- Build pixi for windows arm by @baszalmstra in #1053
- Platform literals by @baszalmstra in #1054
- Cli docs: --user is actually --username
- Fixed error in auth example (CLI docs) by @ytausch in #1076
- Add lockfile update description in preparation for pixi update by @ruben-arts in #1073
zsh
may be used for installation on macOS by @pya in #1091- Fix typo in
pixi auth
documentation by @ytausch in #1076 - Add
rstudio
to the IDE integration docs by @wolfv in #1144
- Test failure on riscv64 by @hack3ric in #1045
- Validation test was testing on a wrong pixi.toml by @ruben-arts in #1056
- Pixi list shows path and editable by @baszalmstra in #1100
- Docs ci by @ruben-arts in #1074
- Add error for unsupported pypi dependencies by @baszalmstra in #1052
- Interactively delete environment when it was relocated by @baszalmstra in #1102
- Allow solving for different platforms by @baszalmstra in #1101
- Don't allow extra keys in pypi requirements by @baszalmstra in #1104
- Solve when moving dependency from conda to pypi by @baszalmstra in #1099
- @pya made their first contribution in #1091
- @ytausch made their first contribution in #1076
- @hack3ric made their first contribution in #1045
- @olivier-lacroix made their first contribution in #999
- @henryiii made their first contribution in #1063
A quick bug-fix release for pixi list
.
- Fix typo by @pavelzw in #1028
- Remove the need for a python interpreter in
pixi list
by @baszalmstra in #1033
- This release greatly improves
pixi global
commands, thanks to @chawyehsu! - We now support global (or local) configuration for pixi's own behavior, including mirrors, and OCI registries.
- We support channel mirrors for corporate environments!
- Faster
task
execution thanks to caching 🚀 Tasks that already executed successfully can be skipped based on the hash of theinputs
andoutputs
. - PyCharm and GitHub Actions integration thanks to @pavelzw – read more about it in the docs!
- Add citation file by @ruben-arts in #908
- Add a pixi badge by @ruben-arts in #961
- Add deserialization of pypi source dependencies from toml by @ruben-arts and @wolf in #895 #984
- Implement mirror and OCI settings by @wolfv in #988
- Implement
inputs
andoutputs
hash based task skipping by @wolfv in #933
- Refined global upgrade commands by @chawyehsu in #948
- Global upgrade supports matchspec by @chawyehsu in #962
- Improve
pixi search
with platform selection and making limit optional by @wolfv in #979 - Implement global config options by @wolfv in #960 #1015 #1019
- Update auth to use rattler cli by @kassoulait by @ruben-arts in #986
- Remove cache: true from setup-pixi by @pavelzw in #950
- Add GitHub Actions documentation by @pavelzw in #955
- Add PyCharm documentation by @pavelzw in #974
- Mention
watch_file
in direnv usage by @pavelzw in #983 - Add tip to help users when no PROFILE file exists by @ruben-arts in #991
- Move yaml comments into mkdocs annotations by @pavelzw in #1003
- Fix --env and extend actions examples by @ruben-arts in #1005
- Add Wflow to projects built with pixi by @Hofer-Julian in #1006
- Removed
linenums
to avoid buggy visualization by @ruben-arts in #1002 - Fix typos by @pavelzw in #1016
- Pypi dependencies not being removed by @tdejager in #952
- Permissions for lint pr by @ruben-arts in #852
- Install Windows executable with
install.sh
in Git Bash by @jdblischak in #966 - Proper scanning of the conda-meta folder for
json
entries by @wolfv in #971 - Global shim scripts for Windows by @wolfv in #975
- Correct fish prompt by @wolfv in #981
- Prefix_file rename by @ruben-arts in #959
- Conda transitive dependencies of pypi packages are properly extracted by @baszalmstra in #967
- Make tests more deterministic and use single * for glob expansion by @wolfv in #987
- Create conda-meta/history file by @pavelzw in #995
- Pypi dependency parsing was too lenient by @wolfv in #984
- Add reactivation of the environment in pixi shell by @wolfv in #982
- Add
tool
to strict json schema by @ruben-arts in #969
- Parse lockfile matchspecs lenient, fixing bug introduced in
0.16.0
by @ruben-arts in #951
- Add tcsh install support by @obust in #898
- Add user agent to pixi http client by @baszalmstra in #892
- Add a schema for the pixi.toml by @ruben-arts in #936
- Switch from rip to uv by @tdejager in #863
- Move uv options into context by @tdejager in #911
- Add Deltares projects to Community.md by @Hofer-Julian in #920
- Upgrade to uv 0.1.16, updated for changes in the API by @tdejager in #935
- Made the uv re-install logic a bit more clear by @tdejager in #894
- Avoid duplicate pip dependency while importing environment.yaml by @sumanth-manchala in #890
- Handle custom channels when importing from env yaml by @sumanth-manchala in #901
- Pip editable installs getting uninstalled by @renan-r-santos in #902
- Highlight pypi deps in pixi list by @sumanth-manchala in #907
- Default to the default environment if possible by @ruben-arts in #921
- Switching channels by @baszalmstra in #923
- Use correct name of the channel on adding by @ruben-arts in #928
- Turn back on jlap for faster repodata fetching by @ruben-arts in #937
- Remove dists site-packages's when python interpreter changes by @tdejager in #896
- Add more info to a failure of activation by @ruben-arts in #873
- Improve global list UX when there is no global env dir created by @sumanth-manchala in #865
- Update rattler to
v0.19.0
by @AliPiccioniQC in #885 - Error on
pixi run
if platform is not supported by @ruben-arts in #878
- @sumanth-manchala made their first contribution in #865
- @AliPiccioniQC made their first contribution in #885
- Add prefix to project info json output by @baszalmstra in #859
- New
pixi global list
display format by @chawyehsu in #723 - Add direnv usage by @pavelzw in #845
- Add docker example by @pavelzw in #846
- Install/remove multiple packages globally by @chawyehsu in #854
- Prefix file in
init --import
by @ruben-arts in #855 - Environment and feature names in pixi info --json by @baszalmstra in #857
[pypi-dependencies]
now get build in the created environment so it uses the conda installed build tools.pixi init --import env.yml
to import an existing conda environment file.[target.unix.dependencies]
to specify dependencies for unix systems instead of per platform.
Warning
This versions build failed, use v0.15.1
- pass environment variables during pypi resolution and install (#818)
- skip micromamba style selector lines and warn about them (#830)
- add import yml flag (#792)
- check duplicate dependencies (#717)
- (ci) check conventional PR title (#820)
- add
--feature
topixi add
(#803) - add windows, macos, linux and unix to targets (#832)
- cache and retry pypi name mapping (#839)
- check duplicates while adding dependencies (#829)
- logic
PIXI_NO_PATH_UPDATE
variable (#822)
- add
mike
to the documentation and update looks (#809) - add instructions for installing on Alpine Linux (#828)
- more error reporting in
self-update
(#823) - disabled
jlap
for now (#836)
Now, solve-groups
can be used in [environments]
to ensure dependency alignment across different environments without simultaneous installation.
This feature is particularly beneficial for managing identical dependencies in test
and production
environments.
Example configuration:
[environments]
test = { features = ["prod", "test"], solve-groups = ["group1"] }
prod = { features = ["prod"], solve-groups = ["group1"] }
This setup simplifies managing dependencies that must be consistent across test
and production
.
- Add index field to pypi requirements by @vlad-ivanov-name in #784
- Add
-f
/--feature
to thepixi project platform
command by @ruben-arts in #785 - Warn user when unused features are defined by @ruben-arts in #762
- Disambiguate tasks interactive by @baszalmstra in #766
- Solve groups for conda by @baszalmstra in #783
- Pypi solve groups by @baszalmstra in #802
- Enable reflinks by @baszalmstra in #729
- Add environment name to the progress by @ruben-arts in #788
- Set color scheme by @ruben-arts in #773
- Update lock on
pixi list
by @ruben-arts in #775 - Use default env if task available in it. by @ruben-arts in #772
- Color environment name in install step by @ruben-arts in #795
- Running cuda env and using those tasks. by @ruben-arts in #764
- Make svg a gif by @ruben-arts in #782
- Fmt by @ruben-arts
- Check for correct platform in task env creation by @ruben-arts in #759
- Remove using source name by @ruben-arts in #765
- Auto-guessing of the shell in the
shell-hook
by @ruben-arts in #811 sdist
with direct references by @nichmor in #813
- Add slim-trees to community projects by @pavelzw in #760
- Add test to default env in polarify example
- Add multiple machine example by @ruben-arts in #757
- Add more documentation on
environments
by @ruben-arts in #790 - Update rip and rattler by @wolfv in #798
- Rattler 0.18.0 by @baszalmstra in #805
- Rip 0.8.0 by @nichmor in #806
- Fix authentication path by @pavelzw in #796
- Initial addition of integration test by @ruben-arts in #804
- @vlad-ivanov-name made their first contribution in #784
- @nichmor made their first contribution in #806
This release is pretty crazy in amount of features! The major ones are:
- We added support for multiple environments. 🎉 Checkout the documentation
- We added support for
sdist
installation, which greatly improves the amount of packages that can be installed from PyPI. 🚀
Important
Renaming of PIXI_PACKAGE_*
variables:
PIXI_PACKAGE_ROOT -> PIXI_PROJECT_ROOT
PIXI_PACKAGE_NAME -> PIXI_PROJECT_NAME
PIXI_PACKAGE_MANIFEST -> PIXI_PROJECT_MANIFEST
PIXI_PACKAGE_VERSION -> PIXI_PROJECT_VERSION
PIXI_PACKAGE_PLATFORMS -> PIXI_ENVIRONMENT_PLATFORMS
Check documentation here: https://pixi.sh/environment/
Important
The .pixi/env/
folder has been moved to accommodate multiple environments.
If you only have one environment it is now named .pixi/envs/default
.
-
Add support for multiple environment:
- Update to rattler lock v4 by @baszalmstra in #698
- Multi-env installation and usage by @baszalmstra in #721
- Update all environments in the lock-file when requesting an environment by @baszalmstra in #711
- Run tasks in the env they are defined by @baszalmstra in #731
polarify
use-case as an example by @ruben-arts in #735- Make environment name parsing strict by @ruben-arts in #673
- Use named environments (only "default" for now) by @ruben-arts in #674
- Use task graph instead of traversal by @baszalmstra in #725
- Multi env documentation by @ruben-arts in #703
pixi info -e/--environment
option by @ruben-arts in #676pixi channel add -f/--feature
option by @ruben-arts in #700pixi channel remove -f/--feature
option by @ruben-arts in #706pixi remove -f/--feature
option by @ruben-arts in #680pixi task list -e/--environment
option by @ruben-arts in #694pixi task remove -f/--feature
option by @ruben-arts in #694pixi install -e/--environment
option by @ruben-arts in #722
-
Support for sdists in
pypi-dependencies
by @tdejager in #664 -
Add pre-release support to
pypi-dependencies
by @tdejager in #716 -
Support adding dependencies for project's unsupported platforms by @orhun in #668
-
Add
pixi list
command by @hadim in #665 -
Use env variable to configure locked, frozen and color by @hadim in #726
-
pixi self-update
by @hadim in #675 -
Add
PIXI_NO_PATH_UPDATE
for PATH update suppression by @chawyehsu in #692 -
Set the cache directory by @ruben-arts in #683
- Use consistent naming for tests module by @orhun in #678
- Install pixi and add to the path in docker example by @ruben-arts in #743
- Simplify the deserializer of
PyPiRequirement
by @orhun in #744 - Use
tabwriter
instead ofcomfy_table
by @baszalmstra in #745 - Document environment variables by @ruben-arts in #746
- Quote part of the task that has brackets (
[ or ]
) by @JafarAbdi in #677 - Package clobber and
__pycache__
removal issues by @wolfv in #573 - Non-global reqwest client by @tdejager in #693
- Fix broken pipe error during search by @orhun in #699
- Make
pixi search
result correct by @chawyehsu in #713 - Allow the tasks for all platforms to be shown in
pixi info
by @ruben-arts in #728 - Flaky tests while installing pypi dependencies by @baszalmstra in #732
- Linux install script by @mariusvniekerk in #737
- Download wheels in parallel to avoid deadlock by @baszalmstra in #752
- @JafarAbdi made their first contribution in #677
- @mariusvniekerk made their first contribution in #737
- Some great community contributions,
pixi global upgrade
,pixi project version
commands, aPIXI_HOME
variable. - A ton of refactor work to prepare for the multi-environment feature.
- Note that there are no extra environments created yet, but you can just specify them in the
pixi.toml
file already. - Next we'll build the actual environments.
- Note that there are no extra environments created yet, but you can just specify them in the
- Add
global upgrade
command to pixi by @trueleo in #614 - Add configurable
PIXI_HOME
by @chawyehsu in #627 - Add
--pypi
option topixi remove
by @marcelotrevisani in #602 - PrioritizedChannels to specify channel priority by @ruben-arts in #658
- Add
project version {major,minor,patch}
CLIs by @hadim in #633
- Refactored project model using targets, features and environments by @baszalmstra in #616
- Move code from
Project
toEnvironment
by @baszalmstra in #630 - Refactored
system-requirements
from Environment by @baszalmstra in #632 - Extract
activation.scripts
into Environment by @baszalmstra in #659 - Extract
pypi-dependencies
from Environment by @baszalmstra in #656 - De-serialization of
features
andenvironments
by @ruben-arts in #636
- Make install.sh also work with wget if curl is not available by @wolfv in #644
- Use source build for rattler by @ruben-arts
- Check for pypi-dependencies before amending the pypi purls by @ruben-arts in #661
- Don't allow the use of reflinks by @ruben-arts in #662
- Remove windows and unix system requirements by @baszalmstra in #635
- Document the channel logic by @ruben-arts in #610
- Update the instructions for installing on Arch Linux by @orhun in #653
- Update Community.md by @KarelZe in #654
- Replace contributions.md with contributing.md and make it more standardized by @ruben-arts in #649
- Remove
windows
andunix
system requirements by @baszalmstra in #635 - Add
CODE_OF_CONDUCT.md
by @ruben-arts in #648 - Removed remaining .ps1 references by @bahugo in #643
- @marcelotrevisani made their first contribution in #602
- @trueleo made their first contribution in #614
- @bahugo made their first contribution in #643
- @KarelZe made their first contribution in #654
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.11.0...v0.12.0
- Upgrading rattler to fix
pixi auth
in #642
- Lots of important and preparations for the pypi
sdist
and multi environment feature - Lots of new contributors that help
pixi
improve!
- Add new commands for
pixi project {version|channel|platform|description}
by @hadim in #579 - Add dependabot.yml by @pavelzw in #606
winget-releaser
gets correct identifier by @ruben-arts in #561- Task run code by @baszalmstra in #556
- No ps1 in activation scripts by @ruben-arts in #563
- Changed some names for clarity by @tdejager in #568
- Change font and make it dark mode by @ruben-arts in #576
- Moved pypi installation into its own module by @tdejager in #589
- Move alpha to beta feature and toggle it off with env var by @ruben-arts in #604
- Improve UX activation scripts by @ruben-arts in #560
- Add sanity check by @tdejager in #569
- Refactor manifest by @ruben-arts in #572
- Improve search by @Johnwillliam in #578
- Split pypi and conda solve steps by @tdejager in #601
- Save file after lockfile is correctly updated by @ruben-arts in #555
- Limit the number of concurrent solves by @baszalmstra in #571
- Use project virtual packages in add command by @msegado in #609
- Improved mapped dependency by @ruben-arts in #574
- Change font and make it dark mode by @ruben-arts in #576
- typo: no ps1 in activation scripts by @ruben-arts in #563
- Document adding CUDA to
system-requirements
by @ruben-arts in #595 - Multi env proposal documentation by @ruben-arts in #584
- Fix multiple typos in configuration.md by @SeaOtocinclus in #608
- Add multiple machines from one project example by @pavelzw in #605
- @hadim made their first contribution in #579
- @msegado made their first contribution in #609
- @Johnwillliam made their first contribution in #578
- @SeaOtocinclus made their first contribution in #608
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.10.0...v0.11.0
- Better
pypi-dependencies
support, now install even more of the pypi packages. pixi add --pypi
command to add a pypi package to your project.
- Use range (
>=1.2.3, <1.3
) when adding requirement, instead of1.2.3.*
by @baszalmstra in #536 - Update
rip
to fix by @tdejager in #543- Better Bytecode compilation (
.pyc
) support by @baszalmstra - Recognize
.data
directoryheaders
by @baszalmstra
- Better Bytecode compilation (
- Also print arguments given to a pixi task by @ruben-arts in #545
- Add
pixi add --pypi
command by @ruben-arts in #539
- space in global install path by @ruben-arts in #513
- Glibc version/family parsing by @baszalmstra in #535
- Use
build
andhost
specs while getting the best version by @ruben-arts in #538
- docs: add update manual by @ruben-arts in #521
- add lightgbm demo by @partrita in #492
- Update documentation link by @williamjamir in #525
- Update Community.md by @jiaxiyang in #527
- Add
winget
releaser by @ruben-arts in #547 - Custom
rerun-sdk
example, force driven graph ofpixi.lock
by @ruben-arts in #548 - Better document pypi part by @ruben-arts in #546
- @partrita made their first contribution in #492
- @williamjamir made their first contribution in #525
- @jiaxiyang made their first contribution in #527
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.9.1...v0.10.0
- PyPI's
scripts
are now fixed. For example: #516
- Remove attr (unused) and update all dependencies by @wolfv in #510
- Remove empty folders on python uninstall by @baszalmstra in #512
- Bump
rip
to add scripts by @baszalmstra in #517
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.9.0...v0.9.1
- You can now run
pixi remove
,pixi rm
to remove a package from the environment - Fix
pip install -e
issue that was created by releasev0.8.0
: #507
pixi remove
command by @Wackyator in #483
- Install entrypoints for
[pypi-dependencies]
@baszalmstra in #508 - Only uninstall pixi installed packages by @baszalmstra in #509
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.8.0...v0.9.0
- 🎉🐍
[pypi-dependencies]
ALPHA RELEASE🐍🎉, you can now add PyPI dependencies to your pixi project. - UX of
pixi run
has been improved with better errors and showing what task is run.
Note
[pypi-dependencies]
support is still incomplete, missing functionality is listed here: https://github.com/orgs/prefix-dev/projects/6.
Our intent is not to have 100% feature parity with pip
, our goal is that you only need pixi
for both conda and pypi packages alike.
- Bump
rattler
@ruben-arts in #496 - Implement lock-file satisfiability with
pypi-dependencies
by @baszalmstra in #494 - List pixi tasks when
command not found
is returned by @ruben-arts in #488 - Show which command is run as a pixi task by @ruben-arts in #491 && #493
- Add progress info to conda install by @baszalmstra in #470
- Install pypi dependencies (alpha) by @baszalmstra in #452
- Add install scripts to
pixi.sh
by @ruben-arts in #458 && #459 && #460 - Fix
RECORD not found
issue by @baszalmstra in #495 - Actually add to the
.gitignore
and give better errors by @ruben-arts in #490 - Support macOS for
pypi-dependencies
by @baszalmstra in #478 - Custom
pypi-dependencies
type by @ruben-arts in #471 pypi-dependencies
parsing errors by @ruben-arts in #479- Progress issues by @baszalmstra in #4
- Example:
ctypes
by @liquidcarbon in #441 - Mention the AUR package by @orhun in #464
- Update
rerun
example by @ruben-arts in #489 - Document
pypi-dependencies
by @ruben-arts in #481 - Ignore docs paths on rust workflow by @ruben-arts in #482
- Fix flaky tests, run serially by @baszalmstra in #477
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.7.0...v0.8.0
- Channel priority:
channels = ["conda-forge", "pytorch"]
All packages found in conda-forge will not be taken from pytorch. - Channel specific dependencies:
pytorch = { version="*", channel="pytorch"}
- Autocompletion on
pixi run <TABTAB>
- Moved all pixi documentation into this repo, try it with
pixi run docs
! - Lots of new contributors!
- Bump rattler to its newest version by @ruben-arts in #395
- Some notable changes:
- Add channel priority (If a package is found in the first listed channel it will not be looked for in the other channels).
- Fix JLAP using wrong hash.
- Lockfile forward compatibility error.
- Some notable changes:
- Add nushell support by @wolfv in #360
- Autocomplete tasks on
pixi run
forbash
andzsh
by @ruben-arts in #390 - Add prefix location file to avoid copy error by @ruben-arts in #422
- Channel specific dependencies
python = { version = "*" channel="conda-forge" }
by @ruben-arts in #439
project.version
as optional field in thepixi.toml
by @ruben-arts in #400
- Deny unknown fields in
pixi.toml
to help users find errors by @ruben-arts in #396 install.sh
to create dot file if not present by @humphd in #408- Ensure order of repodata fetches by @baszalmstra in #405
- Strip Linux binaries by @baszalmstra in #414
- Sort
task list
by @ruben-arts in #431 - Fix
global install
path on windows by @ruben-arts in #449 - Let
PIXI_BIN_PATH
use backslashes by @Hofer-Julian in #442 - Print more informative error if created file is empty by @traversaro in #447
- Move to
mkdocs
with all documentation by @ruben-arts in #435 - Fix typing errors by @FarukhS52 in #426
- Add social cards to the pages by @ruben-arts in #445
- Enhance README.md: Added Table of Contents, Grammar Improvements by @adarsh-jha-dev in #421
- Adding conda-auth to community examples by @travishathaway in #433
- Minor grammar correction by @tylere in #406
- Make capitalization of tab titles consistent by @tylere in #407
- @tylere made their first contribution in #406
- @humphd made their first contribution in #408
- @adarsh-jha-dev made their first contribution in #421
- @FarukhS52 made their first contribution in #426
- @travishathaway made their first contribution in #433
- @traversaro made their first contribution in #447
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.6.0...v0.7.0
This release fixes some bugs and adds the --cwd
option to the tasks.
- Improve shell prompts by @ruben-arts in #385 #388
- Change
--frozen
logic to error when there is no lockfile by @ruben-arts in #373 - Don't remove the '.11' from 'python3.11' binary file name by @ruben-arts in #366
- Update
rerun
example to v0.9.1 by @ruben-arts in #389
- Add the current working directory (
--cwd
) inpixi tasks
by @ruben-arts in #380
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.5.0...v0.6.0
We rebuilt pixi shell
, fixing the fact that your rc
file would overrule the environment activation.
- Change how
shell
works and make activation more robust by @wolfv in #316 - Documentation: use quotes in cli by @pavelzw in #367
- Create or append to the
.gitignore
and.gitattributes
files by @ruben-arts in #359 - Add
--locked
and--frozen
to getting an up-to-date prefix by @ruben-arts in #363 - Documentation: improvement/update by @ruben-arts in #355
- Example: how to build a docker image using
pixi
by @ruben-arts in #353 & #365 - Update to the newest rattler by @baszalmstra in #361
- Periodic
cargo upgrade --all --incompatible
by @wolfv in #358
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.4.0...v0.5.0
This release adds the start of a new cli command pixi project
which will allow users to interact with the project configuration from the command line.
- Align with latest rattler version
0.9.0
by @ruben-arts in #350
- Add codespell (config, workflow) to catch typos + catch and fix some of those by @yarikoptic in #329
- remove atty and use stdlib by @wolfv in #337
xtsci-dist
to Community.md by @HaoZeke in #339ribasim
to Community.md by @Hofer-Julian in #340LFortran
to Community.md by @wolfv in #341- Give tip to resolve virtual package issue by @ruben-arts in #348
pixi project channel add
subcommand by @baszalmstra and @ruben-arts in #347
Full Changelog: https://github.com/prefix-dev/pixi/compare/v0.3.0...v0.4.0
This releases fixes a lot of issues encountered by the community as well as some awesome community contributions like the addition of pixi global list
and pixi global remove
.
- Properly detect Cuda on linux using our build binaries, by @baszalmstra (#290)
- Package names are now case-insensitive, by @baszalmstra (#285)
- Issue with starts-with and compatibility operator, by @tdejager (#296)
- Lock files are now consistently sorted, by @baszalmstra (#295 & #307)
- Improved xonsh detection and powershell env-var escaping, by @wolfv (#307)
system-requirements
are properly filtered by platform, by @ruben-arts (#299)- Powershell completion install script, by @chawyehsu (#325)
- Simplified and improved shell quoting, by @baszalmstra (#313)
- Issue where platform specific subdirs were required, by @baszalmstra (#333)
thread 'tokio-runtime-worker' has overflowed its stack
issue, by @baszalmstra (#28)
- Certificates from the OS certificate store are now used, by @baszalmstra (#310)
pixi global list
andpixi global remove
commands, by @cjfuller (#318)
--manifest-path
must point to apixi.toml
file, by @baszalmstra (#324)
- Added
pixi search
command to search for packages, by @Wackyator. (#244) - Added target specific tasks, eg.
[target.win-64.tasks]
, by @ruben-arts. (#269) - Flaky install caused by the download of packages, by @baszalmstra. (#281)
- Install instructions, by @baszalmstra. (#258)
- Typo in getting started, by @RaulPL. (#266)
- Don't execute alias tasks, by @baszalmstra. (#274)
- Rerun example, by @ruben-arts. (#236)
- Reduction of pixi's binary size, by @baszalmstra (#256)
- Updated pixi banner, including webp file for faster loading, by @baszalmstra. (#257)
- Set linguist attributes for
pixi.lock
automatically, by @spenserblack. (#265) - Contribution manual for pixi, by @ruben-arts. (#268)
- GitHub issue templates, by @ruben-arts. (#271)
- Links to prefix.dev in readme, by @tdejager. (#279)
As this is our first Semantic Versioning release, we'll change from the prototype to the developing phase, as semver describes. A 0.x release could be anything from a new major feature to a breaking change where the 0.0.x releases will be bugfixes or small improvements.
- Only add shebang to activation scripts on
unix
platforms, by @baszalmstra. (#250) - Use official crates.io releases for all dependencies, by @baszalmstra. (#252)
- Much better error printing using
miette
, by @baszalmstra. (#211) - You can now use pixi on
aarch64-linux
, by @pavelzw. (#233) - Use the Rust port of
libsolv
as the default solver, by @ruben-arts. (#209)
- Add mention to
condax
in the docs, by @maresb. (#207) - Add
brew
installation instructions, by @wolfv. (#208) - Add
activation.scripts
to thepixi.toml
to configure environment activation, by @ruben-arts. (#217) - Add
pixi upload
command to upload packages toprefix.dev
, by @wolfv. (#127) - Add more metadata fields to the
pixi.toml
, by @wolfv. (#218) - Add
pixi task list
to show all tasks in the project, by @tdejager. (#228) - Add
--color
to configure the colors in the output, by @baszalmstra. (#243) - Examples, ROS2 Nav2, JupyterLab and QGIS, by @ruben-arts.
- Add trailing newline to
pixi.toml
and.gitignore
, by @pavelzw. (#216) - Deny unknown fields and rename license-file in
pixi.toml
, by @wolfv. (#220) - Overwrite
PS1
variable when going into apixi shell
, by @ruben-arts. (#201)
- Install environment when adding a dependency using
pixi add
, by @baszalmstra. (#213) - Improve and speedup CI, by @baszalmstra. (#241)
- Transitioned the
run
subcommand to use thedeno_task_shell
for improved cross-platform functionality. More details in the Deno Task Runner documentation. - Added an
info
subcommand to retrieve system-specific information understood bypixi
.
[commands]
in thepixi.toml
is now called[tasks]
. (#177)
- The
pixi info
command to get more system information by @wolfv in (#158) - Documentation on how to use the cli by @ruben-arts in (#160)
- Use the
deno_task_shell
to execute commands inpixi run
by @baszalmstra in (#173) - Use new solver backend from rattler by @baszalmstra in (#178)
- The
pixi command
command to the cli by @tdejager in (#177) - Documentation on how to use the
pixi auth
command by @wolfv in (#183) - Use the newest rattler 0.6.0 by @baszalmstra in (#185)
- Build with pixi section to the documentation by @tdejager in (#196)
- Running tasks sequentially when using
depends_on
by @tdejager in (#161) - Don't add
PATH
variable where it is already set by @baszalmstra in (#169) - Fix README by @Hofer-Julian in (#182)
- Fix Ctrl+C signal in
pixi run
by @tdejager in (#190) - Add the correct license information to the lockfiles by @wolfv in (#191)
Improving the reliability is important to us, so we added an integration testing framework, we can now test as close as possible to the CLI level using cargo
.
- An integration test harness, to test as close as possible to the user experience but in rust. (#138, #140, #156)
- Add different levels of dependencies in preparation for
pixi build
, allowinghost-
andbuild-
dependencies
(#149)
- Use correct folder name on pixi init (#144)
- Fix windows cli installer (#152)
- Fix global install path variable (#147)
- Fix macOS binary notarization (#153)
Fixing Windows installer build in CI. (#145)
A new command, auth
which can be used to authenticate the host of the package channels.
A new command, shell
which can be used to start a shell in the pixi environment of a project.
A refactor of the install
command which is changed to global install
and the install
command now installs a pixi project if you run it in the directory.
Platform specific dependencies using [target.linux-64.dependencies]
instead of [dependencies]
in the pixi.toml
Lots and lots of fixes and improvements to make it easier for this user, where bumping to the new version of rattler
helped a lot.
- Platform specific dependencies and helpful error reporting on
pixi.toml
issues(#111) - Windows installer, which is very useful for users that want to start using pixi on windows. (#114)
shell
command to use the pixi environment withoutpixi run
. (#116)- Verbosity options using
-v, -vv, -vvv
(#118) auth
command to be able to login or logout of a host likerepo.prefix.dev
if you're using private channels. (#120)- New examples: CPP sdl: #121, Opencv camera calibration #125
- Apple binary signing and notarization. (#137)
pixi install
moved topixi global install
andpixi install
became the installation of a project using thepixi.toml
(#124)