uv/changelogs/0.1.x.md

1457 lines
64 KiB
Markdown

# Changelog 0.1.x
## 0.1.1
### Bug fixes
- Fix bug where `python3` is not found in the global path
([#1351](https://github.com/astral-sh/uv/pull/1351))
### Documentation
- Fix diagram alignment ([#1354](https://github.com/astral-sh/uv/pull/1354))
- Grammar nit ([#1345](https://github.com/astral-sh/uv/pull/1345))
## 0.1.2
### Enhancements
- Add `--upgrade` support to `pip install` ([#1379](https://github.com/astral-sh/uv/pull/1379))
- Add `-U`/`-P` short flags for `--upgrade`/`--upgrade-package`
([#1394](https://github.com/astral-sh/uv/pull/1394))
- Add `UV_NO_CACHE` environment variable ([#1383](https://github.com/astral-sh/uv/pull/1383))
- uv-cache: Add hidden alias for --no-cache-dir ([#1380](https://github.com/astral-sh/uv/pull/1380))
### Bug fixes
- Add fix-up for invalid star comparison with major-only version
([#1410](https://github.com/astral-sh/uv/pull/1410))
- Add fix-up for trailing comma with trailing space
([#1409](https://github.com/astral-sh/uv/pull/1409))
- Allow empty fragments in HTML parser ([#1443](https://github.com/astral-sh/uv/pull/1443))
- Fix search for `python.exe` on Windows ([#1381](https://github.com/astral-sh/uv/pull/1381))
- Ignore invalid extra named `.none` ([#1428](https://github.com/astral-sh/uv/pull/1428))
- Parse `-r` and `-c` entries as relative to containing file
([#1421](https://github.com/astral-sh/uv/pull/1421))
- Avoid import contextlib in `_virtualenv` ([#1406](https://github.com/astral-sh/uv/pull/1406))
- Decode HTML escapes when extracting SHA ([#1440](https://github.com/astral-sh/uv/pull/1440))
- Fix broken URLs parsed from relative paths in registries
([#1413](https://github.com/astral-sh/uv/pull/1413))
- Improve error message for invalid sdist archives
([#1389](https://github.com/astral-sh/uv/pull/1389))
### Documentation
- Re-add license badge to the README ([#1333](https://github.com/astral-sh/uv/pull/1333))
- Replace "novel" in README ([#1365](https://github.com/astral-sh/uv/pull/1365))
- Tweak some grammar in the README ([#1387](https://github.com/astral-sh/uv/pull/1387))
- Update README.md to include venv activate ([#1411](https://github.com/astral-sh/uv/pull/1411))
- Update wording and add `alt` tag ([#1423](https://github.com/astral-sh/uv/pull/1423))
## 0.1.3
### Enhancements
- Add support for `UV_EXTRA_INDEX_URL` ([#1515](https://github.com/astral-sh/uv/pull/1515))
- Use the system trust store for HTTPS requests ([#1512](https://github.com/astral-sh/uv/pull/1512))
- Automatically detect virtual environments when used via `python -m uv`
([#1504](https://github.com/astral-sh/uv/pull/1504))
- Add warning for empty requirements files ([#1519](https://github.com/astral-sh/uv/pull/1519))
- Support MD5 hashes ([#1556](https://github.com/astral-sh/uv/pull/1556))
### Bug fixes
- Add support for extras in editable requirements
([#1531](https://github.com/astral-sh/uv/pull/1531))
- Apply percent-decoding to file-based URLs ([#1541](https://github.com/astral-sh/uv/pull/1541))
- Apply percent-decoding to filepaths in HTML find-links
([#1544](https://github.com/astral-sh/uv/pull/1544))
- Avoid attempting rename in copy fallback path ([#1546](https://github.com/astral-sh/uv/pull/1546))
- Fix list rendering in `venv --help` output ([#1459](https://github.com/astral-sh/uv/pull/1459))
- Fix trailing commas on `Requires-Python` in HTML indexes
([#1507](https://github.com/astral-sh/uv/pull/1507))
- Read from `/bin/sh` if `/bin/ls` cannot be found when determining libc path
([#1433](https://github.com/astral-sh/uv/pull/1433))
- Remove URL encoding when determining file name
([#1555](https://github.com/astral-sh/uv/pull/1555))
- Support recursive extras ([#1435](https://github.com/astral-sh/uv/pull/1435))
- Use comparable representation for `PackageId` ([#1543](https://github.com/astral-sh/uv/pull/1543))
- fix OS detection for Alpine Linux ([#1545](https://github.com/astral-sh/uv/pull/1545))
- only parse /bin/sh (not /bin/ls) ([#1493](https://github.com/astral-sh/uv/pull/1493))
- pypi-types: fix lenient requirement parsing ([#1529](https://github.com/astral-sh/uv/pull/1529))
- Loosen package script regexp to match spec ([#1482](https://github.com/astral-sh/uv/pull/1482))
- Use string display instead of debug for url parse trace
([#1498](https://github.com/astral-sh/uv/pull/1498))
### Documentation
- Provide example of file based package install.
([#1424](https://github.com/astral-sh/uv/pull/1424))
- Adjust link ([#1434](https://github.com/astral-sh/uv/pull/1434))
- Add troubleshooting section to benchmarks guide
([#1485](https://github.com/astral-sh/uv/pull/1485))
- infra: source github templates ([#1425](https://github.com/astral-sh/uv/pull/1425))
## 0.1.4
### Enhancements
- Add CMD support ([#1523](https://github.com/astral-sh/uv/pull/1523))
- Improve tracing when encountering invalid `requires-python` values
([#1568](https://github.com/astral-sh/uv/pull/1568))
### Bug fixes
- Add graceful fallback for Artifactory indexes ([#1574](https://github.com/astral-sh/uv/pull/1574))
- Allow URL requirements in editable installs ([#1614](https://github.com/astral-sh/uv/pull/1614))
- Allow repeated dependencies when installing ([#1558](https://github.com/astral-sh/uv/pull/1558))
- Always run `get_requires_for_build_wheel` ([#1590](https://github.com/astral-sh/uv/pull/1590))
- Avoid propagating top-level options to sub-resolutions
([#1607](https://github.com/astral-sh/uv/pull/1607))
- Consistent use of `BIN_NAME` in activation scripts
([#1577](https://github.com/astral-sh/uv/pull/1577))
- Enforce URL constraints for non-URL dependencies
([#1565](https://github.com/astral-sh/uv/pull/1565))
- Allow non-nested archives for `hexdump` and others
([#1564](https://github.com/astral-sh/uv/pull/1564))
- Avoid using `white` coloring in terminal output
([#1576](https://github.com/astral-sh/uv/pull/1576))
- Bump simple metadata cache version ([#1617](https://github.com/astral-sh/uv/pull/1617))
- Better error messages on expect failures in resolver
([#1583](https://github.com/astral-sh/uv/pull/1583))
### Documentation
- Add license to activator scripts ([#1610](https://github.com/astral-sh/uv/pull/1610))
## 0.1.5
### Enhancements
- Add `CACHEDIR.TAG` to uv-created virtualenvs ([#1653](https://github.com/astral-sh/uv/pull/1653))
### Bug fixes
- Build source distributions in the cache directory instead of the global temporary directory
([#1628](https://github.com/astral-sh/uv/pull/1628))
- Do not remove uv itself on pip sync ([#1649](https://github.com/astral-sh/uv/pull/1649))
- Ensure we retain existing environment variables during `python -m uv`
([#1667](https://github.com/astral-sh/uv/pull/1667))
- Add yank warnings at end of messages ([#1669](https://github.com/astral-sh/uv/pull/1669))
### Documentation
- Add brew to readme ([#1629](https://github.com/astral-sh/uv/pull/1629))
- Document RUST_LOG=trace for additional logging verbosity
([#1670](https://github.com/astral-sh/uv/pull/1670))
- Document local testing instructions ([#1672](https://github.com/astral-sh/uv/pull/1672))
- Minimal markdown nits ([#1664](https://github.com/astral-sh/uv/pull/1664))
- Use `--override` rather than `-o` to specify overrides in README.md
([#1668](https://github.com/astral-sh/uv/pull/1668))
- Remove setuptools & wheel from seed packages on Python 3.12+ ( #1602)
([#1613](https://github.com/astral-sh/uv/pull/1613))
## 0.1.6
### Enhancements
- Expose find_uv_bin and declare typing support ([#1728](https://github.com/astral-sh/uv/pull/1728))
- Implement `uv cache dir` ([#1734](https://github.com/astral-sh/uv/pull/1734))
- Support `venv --prompt` ([#1570](https://github.com/astral-sh/uv/pull/1570))
- Print activation instructions for a venv after one has been created
([#1580](https://github.com/astral-sh/uv/pull/1580))
### CLI
- Add shell completions generation ([#1675](https://github.com/astral-sh/uv/pull/1675))
- Move `uv clean` to `uv cache clean` ([#1733](https://github.com/astral-sh/uv/pull/1733))
- Allow `-f` alias for `--find-links` ([#1735](https://github.com/astral-sh/uv/pull/1735))
### Configuration
- Control pip timeout duration via environment variable
([#1694](https://github.com/astral-sh/uv/pull/1694))
### Bug fixes
- Add support for absolute paths on Windows ([#1725](https://github.com/astral-sh/uv/pull/1725))
- Don't preserve timestamp in streaming unzip ([#1749](https://github.com/astral-sh/uv/pull/1749))
- Ensure extras trigger an install ([#1727](https://github.com/astral-sh/uv/pull/1727))
- Only preserve the executable bit ([#1743](https://github.com/astral-sh/uv/pull/1743))
- Preserve trailing slash for `--find-links` URLs
([#1720](https://github.com/astral-sh/uv/pull/1720))
- Respect `--index-url` provided via requirements.txt
([#1719](https://github.com/astral-sh/uv/pull/1719))
- Set index URLs for seeding venv ([#1755](https://github.com/astral-sh/uv/pull/1755))
- Support dotted function paths for script entrypoints
([#1622](https://github.com/astral-sh/uv/pull/1622))
- Support recursive extras for URL dependencies ([#1729](https://github.com/astral-sh/uv/pull/1729))
- Better error message for missing space before semicolon in requirements
([#1746](https://github.com/astral-sh/uv/pull/1746))
- Add warning when dependencies are empty with Poetry metadata
([#1650](https://github.com/astral-sh/uv/pull/1650))
- Ignore invalid extras from PyPI ([#1731](https://github.com/astral-sh/uv/pull/1731))
- Improve Poetry warning ([#1730](https://github.com/astral-sh/uv/pull/1730))
- Remove uv version from uv pip compile header ([#1716](https://github.com/astral-sh/uv/pull/1716))
- Fix handling of range requests on servers that return "Method not allowed"
([#1713](https://github.com/astral-sh/uv/pull/1713))
- re-introduce cache healing when we see an invalid cache entry
([#1707](https://github.com/astral-sh/uv/pull/1707))
### Documentation
- Clarify Windows install command in README.md ([#1751](https://github.com/astral-sh/uv/pull/1751))
- Add instructions for installing on Arch Linux ([#1765](https://github.com/astral-sh/uv/pull/1765))
### Rust API
- Allow passing in a custom reqwest Client ([#1745](https://github.com/astral-sh/uv/pull/1745))
## 0.1.7
### Enhancements
- Stream zip archive when fetching non-range-request metadata
([#1792](https://github.com/astral-sh/uv/pull/1792))
- Support setting request timeout with `UV_HTTP_TIMEOUT` and `HTTP_TIMEOUT`
([#1780](https://github.com/astral-sh/uv/pull/1780))
- Improve error message when git ref cannot be fetched
([#1826](https://github.com/astral-sh/uv/pull/1826))
### Configuration
- Implement `--annotation-style` parameter for `uv pip compile`
([#1679](https://github.com/astral-sh/uv/pull/1679))
### Bug fixes
- Add fixup for `prefect<1.0.0` ([#1825](https://github.com/astral-sh/uv/pull/1825))
- Add support for `>dev` specifier ([#1776](https://github.com/astral-sh/uv/pull/1776))
- Avoid enforcing URL correctness for installed distributions
([#1793](https://github.com/astral-sh/uv/pull/1793))
- Don't expect pinned packages for editables with non-existent extras
([#1847](https://github.com/astral-sh/uv/pull/1847))
- Linker copies files as a fallback when ref-linking fails
([#1773](https://github.com/astral-sh/uv/pull/1773))
- Move conflicting dependencies into PubGrub ([#1796](https://github.com/astral-sh/uv/pull/1796))
- Normalize `VIRTUAL_ENV` path in activation scripts
([#1817](https://github.com/astral-sh/uv/pull/1817))
- Preserve executable bit when untarring archives
([#1790](https://github.com/astral-sh/uv/pull/1790))
- Retain passwords in Git URLs ([#1717](https://github.com/astral-sh/uv/pull/1717))
- Sort output when installing seed packages ([#1822](https://github.com/astral-sh/uv/pull/1822))
- Treat ARM wheels as higher-priority than universal
([#1843](https://github.com/astral-sh/uv/pull/1843))
- Use `git` command to fetch repositories instead of `libgit2` for robust SSH support
([#1781](https://github.com/astral-sh/uv/pull/1781))
- Use redirected URL as base for relative paths ([#1816](https://github.com/astral-sh/uv/pull/1816))
- Use the right marker for the `implementation` field of `pyvenv.cfg`
([#1785](https://github.com/astral-sh/uv/pull/1785))
- Wait for distribution metadata with `--no-deps`
([#1812](https://github.com/astral-sh/uv/pull/1812))
- platform-host: check /bin/sh, then /bin/dash and then /bin/ls
([#1818](https://github.com/astral-sh/uv/pull/1818))
- Ensure that builds within the cache aren't considered Git repositories
([#1782](https://github.com/astral-sh/uv/pull/1782))
- Strip trailing `+` from version number of local Python builds
([#1771](https://github.com/astral-sh/uv/pull/1771))
### Documentation
- Add docs for git authentication ([#1844](https://github.com/astral-sh/uv/pull/1844))
- Update venv activation for windows ([#1836](https://github.com/astral-sh/uv/pull/1836))
- Update README.md to include extras example ([#1806](https://github.com/astral-sh/uv/pull/1806))
## 0.1.8
### Bug fixes
- Allow duplicate URLs that resolve to the same canonical URL
([#1877](https://github.com/astral-sh/uv/pull/1877))
- Retain authentication attached to URLs when making requests to the same host
([#1874](https://github.com/astral-sh/uv/pull/1874))
- Win Trampoline: Use Python executable path encoded in binary
([#1803](https://github.com/astral-sh/uv/pull/1803))
- Expose types to implement custom `ResolverProvider`
([#1862](https://github.com/astral-sh/uv/pull/1862))
- Search `PATH` when `python` can't be found with `py`
([#1711](https://github.com/astral-sh/uv/pull/1711))
- Avoid displaying "root" package when formatting terms
([#1871](https://github.com/astral-sh/uv/pull/1871))
### Documentation
- Use more universal windows install instructions
([#1811](https://github.com/astral-sh/uv/pull/1811))
### Rust API
- Expose types to implement custom ResolverProvider
([#1862](https://github.com/astral-sh/uv/pull/1862))
## 0.1.9
### Enhancements
- Add support for `config_settings` in PEP 517 hooks
([#1833](https://github.com/astral-sh/uv/pull/1833))
- feat: allow passing extra config k,v pairs for pyvenv.cfg when creating a venv
([#1852](https://github.com/astral-sh/uv/pull/1852))
### Bug fixes
- Ensure authentication is passed from the index url to distribution files
([#1886](https://github.com/astral-sh/uv/pull/1886))
- Use `rustls-tls-native-roots` in `uv` crate ([#1888](https://github.com/astral-sh/uv/pull/1888))
- pep440: fix version ordering ([#1883](https://github.com/astral-sh/uv/pull/1883))
- Hide index URLs from header if not emitted ([#1835](https://github.com/astral-sh/uv/pull/1835))
### Documentation
- Add changelog ([#1881](https://github.com/astral-sh/uv/pull/1881))
## 0.1.10
### Enhancements
- Omit `--find-links` from annotation header unless requested
([#1898](https://github.com/astral-sh/uv/pull/1898))
- Write to stdout when `--output-file` is present
([#1892](https://github.com/astral-sh/uv/pull/1892))
### Bug fixes
- Retain authentication when making range requests
([#1902](https://github.com/astral-sh/uv/pull/1902))
- Fix uv-created venv detection ([#1908](https://github.com/astral-sh/uv/pull/1908))
- Fix Windows `py` failure from spurious stderr ([#1885](https://github.com/astral-sh/uv/pull/1885))
- Ignore Python 2 installations when querying for interpreters
([#1905](https://github.com/astral-sh/uv/pull/1905))
## 0.1.11
### Enhancements
- Add support for pip-compile's `--unsafe-package` flag
([#1889](https://github.com/astral-sh/uv/pull/1889))
- Improve interpreter discovery logging ([#1909](https://github.com/astral-sh/uv/pull/1909))
- Implement `uv pip list` ([#1662](https://github.com/astral-sh/uv/pull/1662))
- Allow round-trip via `freeze` command ([#1936](https://github.com/astral-sh/uv/pull/1936))
- Don't write pip compile output to stdout with `-q`
([#1962](https://github.com/astral-sh/uv/pull/1962))
- Add long-form version output ([#1930](https://github.com/astral-sh/uv/pull/1930))
### Compatibility
- Accept single string for `backend-path` ([#1969](https://github.com/astral-sh/uv/pull/1969))
- Add compatibility for deprecated `python_implementation` marker
([#1933](https://github.com/astral-sh/uv/pull/1933))
- Generate versioned `pip` launchers ([#1918](https://github.com/astral-sh/uv/pull/1918))
### Bug fixes
- Avoid erroring for source distributions with symlinks in archive
([#1944](https://github.com/astral-sh/uv/pull/1944))
- Expand scope of archive timestamping ([#1960](https://github.com/astral-sh/uv/pull/1960))
- Gracefully handle virtual environments with conflicting packages
([#1893](https://github.com/astral-sh/uv/pull/1893))
- Invalidate dependencies when editables are updated
([#1955](https://github.com/astral-sh/uv/pull/1955))
- Make < exclusive for non-pre-release markers ([#1878](https://github.com/astral-sh/uv/pull/1878))
- Properly apply constraints in venv audit ([#1956](https://github.com/astral-sh/uv/pull/1956))
- Re-sync editables on-change ([#1959](https://github.com/astral-sh/uv/pull/1959))
- Remove current directory from PATH in PEP 517 hooks
([#1975](https://github.com/astral-sh/uv/pull/1975))
- Remove `--upgrade` and `--quiet` flags from generated output files
([#1873](https://github.com/astral-sh/uv/pull/1873))
- Use full python version in `pyvenv.cfg` ([#1979](https://github.com/astral-sh/uv/pull/1979))
### Performance
- fix `uv pip install` handling of gzip'd response and PEP 691
([#1978](https://github.com/astral-sh/uv/pull/1978))
- Remove `spawn_blocking` from version map ([#1966](https://github.com/astral-sh/uv/pull/1966))
### Documentation
- Clarify `lowest` vs. `lowest-direct` resolution strategies
([#1954](https://github.com/astral-sh/uv/pull/1954))
- Improve error message for network timeouts ([#1961](https://github.com/astral-sh/uv/pull/1961))
## 0.1.12
### CLI
- Add a `--python` flag to allow installation into arbitrary Python interpreters
([#2000](https://github.com/astral-sh/uv/pull/2000))
- Add a `--system` flag for opt-in non-virtualenv installs
([#2046](https://github.com/astral-sh/uv/pull/2046))
### Enhancements
- Add a `--pre` alias for `--prerelease=allow` ([#2049](https://github.com/astral-sh/uv/pull/2049))
- Enable `freeze` and `list` to introspect non-virtualenv Pythons
([#2033](https://github.com/astral-sh/uv/pull/2033))
- Support environment variables in index URLs in requirements files
([#2036](https://github.com/astral-sh/uv/pull/2036))
- Add `--exclude-editable` and `--exclude` args to `uv pip list`
([#1985](https://github.com/astral-sh/uv/pull/1985))
- Always remove color codes from output file ([#2018](https://github.com/astral-sh/uv/pull/2018))
- Support recursive extras in direct `pyproject.toml` files
([#1990](https://github.com/astral-sh/uv/pull/1990))
- Un-cache editable requirements with dynamic metadata
([#2029](https://github.com/astral-sh/uv/pull/2029))
- Use a non-local lockfile for locking system interpreters
([#2045](https://github.com/astral-sh/uv/pull/2045))
- Surface the `EXTERNALLY-MANAGED` message to users
([#2032](https://github.com/astral-sh/uv/pull/2032))
## 0.1.13
### Bug fixes
- Prioritize `PATH` over `py --list-paths` in Windows selection
([#2057](https://github.com/astral-sh/uv/pull/2057)). This fixes an issue in which the `--system`
flag would not work correctly on Windows in GitHub Actions.
- Avoid canonicalizing user-provided interpreters
([#2072](https://github.com/astral-sh/uv/pull/2072)). This fixes an issue in which the `--python`
flag would not work correctly with pyenv and other interpreters.
- Allow pre-releases for requirements in constraints files
([#2069](https://github.com/astral-sh/uv/pull/2069))
- Avoid truncating EXTERNALLY-MANAGED error message
([#2073](https://github.com/astral-sh/uv/pull/2073))
- Extend activation highlighting to entire `venv` command
([#2070](https://github.com/astral-sh/uv/pull/2070))
- Reverse the order of `--index-url` and `--extra-index-url` priority
([#2083](https://github.com/astral-sh/uv/pull/2083))
- Avoid assuming `RECORD` file is in `platlib` ([#2091](https://github.com/astral-sh/uv/pull/2091))
## 0.1.14
### Enhancements
- Add support for `--system-site-packages` in `uv venv`
([#2101](https://github.com/astral-sh/uv/pull/2101))
- Add support for Python installed from Windows Store
([#2122](https://github.com/astral-sh/uv/pull/2122))
- Expand environment variables in `-r` and `-c` subfile paths
([#2143](https://github.com/astral-sh/uv/pull/2143))
- Treat empty index URL strings as null instead of erroring
([#2137](https://github.com/astral-sh/uv/pull/2137))
- Use space as delimiter for `UV_EXTRA_INDEX_URL`
([#2140](https://github.com/astral-sh/uv/pull/2140))
- Report line and column numbers in `requirements.txt` parser errors
([#2100](https://github.com/astral-sh/uv/pull/2100))
- Improve error messages when `uv` is offline ([#2110](https://github.com/astral-sh/uv/pull/2110))
### Bug fixes
- Future-proof the `pip` entrypoints special-case
([#1982](https://github.com/astral-sh/uv/pull/1982))
- Allow empty extras in `pep508-rs` and add more corner case to tests
([#2128](https://github.com/astral-sh/uv/pull/2128))
- Adjust base Python lookup logic for Windows to respect Windows Store
([#2121](https://github.com/astral-sh/uv/pull/2121))
- Consider editable dependencies to be 'direct' for `--resolution`
([#2114](https://github.com/astral-sh/uv/pull/2114))
- Preserve environment variables in resolved Git dependencies
([#2125](https://github.com/astral-sh/uv/pull/2125))
- Use `prefix` instead of `base_prefix` for environment root
([#2117](https://github.com/astral-sh/uv/pull/2117))
- Wrap unsafe script shebangs in `/bin/sh` ([#2097](https://github.com/astral-sh/uv/pull/2097))
- Make WHEEL parsing error line numbers one indexed
([#2151](https://github.com/astral-sh/uv/pull/2151))
- Determine `site-packages` path based on implementation name
([#2094](https://github.com/astral-sh/uv/pull/2094))
### Documentation
- Add caveats on `--system` support to the README
([#2131](https://github.com/astral-sh/uv/pull/2131))
- Add instructions for `SSL_CERT_FILE` env var ([#2124](https://github.com/astral-sh/uv/pull/2124))
## 0.1.15
### Enhancements
- Add a `--compile` option to `install` to enable bytecode compilation
([#2086](https://github.com/astral-sh/uv/pull/2086))
- Expose the `--exclude-newer` flag to limit candidate packages based on date
([#2166](https://github.com/astral-sh/uv/pull/2166))
- Add `uv` version to user agent ([#2136](https://github.com/astral-sh/uv/pull/2136))
### Bug fixes
- Set `.metadata` suffix on URL path ([#2123](https://github.com/astral-sh/uv/pull/2123))
- Fallback to non-range requests when HEAD returns 404
([#2186](https://github.com/astral-sh/uv/pull/2186))
- Allow direct URLs in optional dependencies in editables
([#2206](https://github.com/astral-sh/uv/pull/2206))
- Allow empty values in WHEEL files ([#2170](https://github.com/astral-sh/uv/pull/2170))
- Avoid Windows Store shims in `--python python3`-like invocations
([#2212](https://github.com/astral-sh/uv/pull/2212))
- Expand Windows shim detection to include `python3.12.exe`
([#2209](https://github.com/astral-sh/uv/pull/2209))
- HTML-decode URLs in HTML indexes ([#2215](https://github.com/astral-sh/uv/pull/2215))
- Make direct dependency detection respect markers
([#2207](https://github.com/astral-sh/uv/pull/2207))
- Respect `py --list-paths` fallback in `--python python3` invocations on Windows
([#2214](https://github.com/astral-sh/uv/pull/2214))
- Respect local freshness when auditing installed environment
([#2169](https://github.com/astral-sh/uv/pull/2169))
- Respect markers on URL dependencies in editables
([#2176](https://github.com/astral-sh/uv/pull/2176))
- Respect nested editable requirements in parser
([#2204](https://github.com/astral-sh/uv/pull/2204))
- Run Windows against Python 3.13 ([#2171](https://github.com/astral-sh/uv/pull/2171))
- Error when editables don't match `Requires-Python`
([#2194](https://github.com/astral-sh/uv/pull/2194))
## 0.1.16
### Enhancements
- Add support for `--no-build-isolation` ([#2258](https://github.com/astral-sh/uv/pull/2258))
- Add support for `--break-system-packages` ([#2249](https://github.com/astral-sh/uv/pull/2249))
- Add support for `.netrc` authentication ([#2241](https://github.com/astral-sh/uv/pull/2241))
- Add support for `--format=freeze` and `--format=json` in `uv pip list`
([#1998](https://github.com/astral-sh/uv/pull/1998))
- Add support for remote `https://` requirements files (#1332)
([#2081](https://github.com/astral-sh/uv/pull/2081))
- Implement `uv pip show` ([#2115](https://github.com/astral-sh/uv/pull/2115))
- Allow `UV_PRERELEASE` to be set via environment variable
([#2240](https://github.com/astral-sh/uv/pull/2240))
- Include exit code for build failures ([#2108](https://github.com/astral-sh/uv/pull/2108))
- Query interpreter to determine correct `virtualenv` paths, enabling `uv venv` with PyPy and others
([#2188](https://github.com/astral-sh/uv/pull/2188))
- Respect non-`sysconfig`-based system Pythons, enabling `--system` installs on Debian and others
([#2193](https://github.com/astral-sh/uv/pull/2193))
### Bug fixes
- Fallback to fresh request on non-validating 304
([#2218](https://github.com/astral-sh/uv/pull/2218))
- Add `.stdout()` and `.stderr()` outputs to `Printer`
([#2227](https://github.com/astral-sh/uv/pull/2227))
- Close `RECORD` after reading entries during uninstall
([#2259](https://github.com/astral-sh/uv/pull/2259))
- Fix Conda Python detection on Windows ([#2279](https://github.com/astral-sh/uv/pull/2279))
- Fix parsing requirement where a variable follows an operator without a space
([#2273](https://github.com/astral-sh/uv/pull/2273))
- Prefer more recent minor versions in wheel tags
([#2263](https://github.com/astral-sh/uv/pull/2263))
- Retry on Python interpreter launch failures during `--compile`
([#2278](https://github.com/astral-sh/uv/pull/2278))
- Show appropriate activation command based on shell detection
([#2221](https://github.com/astral-sh/uv/pull/2221))
- Escape Windows paths with spaces in `venv` activation command
([#2223](https://github.com/astral-sh/uv/pull/2223))
- Add specialized activation message for `cmd.exe`
([#2226](https://github.com/astral-sh/uv/pull/2226))
- Cache wheel metadata in no-PEP 658 fallback ([#2255](https://github.com/astral-sh/uv/pull/2255))
- Use reparse points to detect Windows installer shims
([#2284](https://github.com/astral-sh/uv/pull/2284))
### Documentation
- Add `PIP_COMPATIBILITY.md` to document known deviations from `pip`
([#2244](https://github.com/astral-sh/uv/pull/2244))
## 0.1.17
### Enhancements
- Allow more-precise Git URLs to override less-precise Git URLs
([#2285](https://github.com/astral-sh/uv/pull/2285))
- Add support for Metadata 2.2 ([#2293](https://github.com/astral-sh/uv/pull/2293))
- Added ability to select bytecode invalidation mode of generated `.pyc` files
([#2297](https://github.com/astral-sh/uv/pull/2297))
- Add `Seek` fallback for zip files with data descriptors
([#2320](https://github.com/astral-sh/uv/pull/2320))
### Bug fixes
- Support reading UTF-16 requirements files ([#2283](https://github.com/astral-sh/uv/pull/2283))
- Trim rows in `pip list` ([#2298](https://github.com/astral-sh/uv/pull/2298))
- Avoid using setuptools shim of distutils ([#2305](https://github.com/astral-sh/uv/pull/2305))
- Communicate PEP 517 hook results via files ([#2314](https://github.com/astral-sh/uv/pull/2314))
- Increase default buffer size for wheel and source downloads
([#2319](https://github.com/astral-sh/uv/pull/2319))
- Add `Accept-Encoding: identity` to remaining stream paths
([#2321](https://github.com/astral-sh/uv/pull/2321))
- Avoid duplicating authorization header with netrc
([#2325](https://github.com/astral-sh/uv/pull/2325))
- Remove duplicate `INSTALLER` in `RECORD` ([#2336](https://github.com/astral-sh/uv/pull/2336))
### Documentation
- Add a custom suggestion to install wheel into the build environment
([#2307](https://github.com/astral-sh/uv/pull/2307))
- Document the environment variables that uv respects
([#2318](https://github.com/astral-sh/uv/pull/2318))
## 0.1.18
### Breaking changes
Users that rely on native root certificates (or the `SSL_CERT_FILE`) environment variable must now
pass the `--native-tls` command-line flag to enable this behavior.
- Enable TLS native root toggling at runtime ([#2362](https://github.com/astral-sh/uv/pull/2362))
### Enhancements
- Add `--dry-run` flag to `uv pip install` ([#1436](https://github.com/astral-sh/uv/pull/1436))
- Implement "Requires" field in `pip show` ([#2347](https://github.com/astral-sh/uv/pull/2347))
- Remove `wheel` from default PEP 517 backend ([#2341](https://github.com/astral-sh/uv/pull/2341))
- Add `UV_SYSTEM_PYTHON` environment variable as alias to `--system`
([#2354](https://github.com/astral-sh/uv/pull/2354))
- Add a `-vv` log level and make `-v` more readable
([#2301](https://github.com/astral-sh/uv/pull/2301))
### Bug fixes
- Expand environment variables prior to detecting scheme
([#2394](https://github.com/astral-sh/uv/pull/2394))
- Fix bug where `--no-binary :all:` prevented build of editable packages
([#2393](https://github.com/astral-sh/uv/pull/2393))
- Ignore inverse dependencies when building graph
([#2360](https://github.com/astral-sh/uv/pull/2360))
- Skip prefetching when `--no-deps` is specified
([#2373](https://github.com/astral-sh/uv/pull/2373))
- Trim injected `python_version` marker to (major, minor)
([#2395](https://github.com/astral-sh/uv/pull/2395))
- Wait for request stream to flush before returning resolution
([#2374](https://github.com/astral-sh/uv/pull/2374))
- Write relative paths for scripts in data directory
([#2348](https://github.com/astral-sh/uv/pull/2348))
- Add dedicated error message for direct filesystem paths in requirements
([#2369](https://github.com/astral-sh/uv/pull/2369))
## 0.1.19
### Configuration
- Add `UV_NATIVE_TLS` environment variable ([#2412](https://github.com/astral-sh/uv/pull/2412))
- Allow `SSL_CERT_FILE` without requiring `--native-tls`
([#2401](https://github.com/astral-sh/uv/pull/2401))
- Add support for retrieving credentials from `keyring`
([#2254](https://github.com/astral-sh/uv/pull/2254))
### Bug fixes
- Add backoff for transient Windows failures ([#2419](https://github.com/astral-sh/uv/pull/2419))
- Move architecture and operating system probing to Python
([#2381](https://github.com/astral-sh/uv/pull/2381))
- Respect `--native-tls` in `venv` ([#2433](https://github.com/astral-sh/uv/pull/2433))
- Treat non-existent site-packages as empty ([#2413](https://github.com/astral-sh/uv/pull/2413))
### Documentation
- Document HTTP authentication ([#2425](https://github.com/astral-sh/uv/pull/2425))
### Performance
- Improve performance of version range operations
([#2421](https://github.com/astral-sh/uv/pull/2421))
## 0.1.20
### Bug fixes
- Add in-URL credentials to store prior to creating requests
([#2446](https://github.com/astral-sh/uv/pull/2446))
- Error when direct URL requirements don't match `Requires-Python`
([#2196](https://github.com/astral-sh/uv/pull/2196))
## 0.1.21
### Enhancements
- Loosen `.dist-info` validation to accept arbitrary versions
([#2441](https://github.com/astral-sh/uv/pull/2441))
### Bug fixes
- Fix macOS architecture detection on i386 machines
([#2454](https://github.com/astral-sh/uv/pull/2454))
## 0.1.22
### Enhancements
- Add support for PyTorch-style local version semantics
([#2430](https://github.com/astral-sh/uv/pull/2430))
- Add support for Hatch's `{root:uri}` paths in editable installs
([#2492](https://github.com/astral-sh/uv/pull/2492))
- Implement `uv pip check` ([#2397](https://github.com/astral-sh/uv/pull/2397))
- Add pip-like linehaul information to user agent
([#2493](https://github.com/astral-sh/uv/pull/2493))
- Add additional ARM targets to release ([#2417](https://github.com/astral-sh/uv/pull/2417))
### Bug fixes
- Allow direct file path requirements to include fragments
([#2502](https://github.com/astral-sh/uv/pull/2502))
- Avoid panicking on cannot-be-a-base URLs ([#2461](https://github.com/astral-sh/uv/pull/2461))
- Drop `macosx_10_0` from compatible wheel tags on `aarch64`
([#2496](https://github.com/astral-sh/uv/pull/2496))
- Fix operating system detection on \*BSD ([#2505](https://github.com/astral-sh/uv/pull/2505))
- Fix priority of ABI tags ([#2489](https://github.com/astral-sh/uv/pull/2489))
- Fix priority of platform tags for manylinux ([#2483](https://github.com/astral-sh/uv/pull/2483))
- Make > operator exclude post and local releases
([#2471](https://github.com/astral-sh/uv/pull/2471))
- Re-add support for pyenv shims ([#2503](https://github.com/astral-sh/uv/pull/2503))
- Validate required package names against wheel package names
([#2516](https://github.com/astral-sh/uv/pull/2516))
## 0.1.23
### Enhancements
- Implement `--no-strip-extras` to preserve extras in compilation
([#2555](https://github.com/astral-sh/uv/pull/2555))
- Preserve hashes for pinned packages when compiling without `--upgrade`
([#2532](https://github.com/astral-sh/uv/pull/2532))
- Add a `uv self update` command ([#2228](https://github.com/astral-sh/uv/pull/2228))
- Use relative paths for user-facing messages ([#2559](https://github.com/astral-sh/uv/pull/2559))
- Add `CUSTOM_COMPILE_COMMAND` support to `uv pip compile`
([#2554](https://github.com/astral-sh/uv/pull/2554))
- Add SHA384 and SHA512 hash algorithms ([#2534](https://github.com/astral-sh/uv/pull/2534))
- Treat uninstallable packages as warnings, rather than errors
([#2557](https://github.com/astral-sh/uv/pull/2557))
### Bug fixes
- Allow `VIRTUAL_ENV` to take precedence over `CONDA_PREFIX`
([#2574](https://github.com/astral-sh/uv/pull/2574))
- Ensure mtime of site packages is updated during wheel installation
([#2545](https://github.com/astral-sh/uv/pull/2545))
- Re-test validity after every lenient parsing change
([#2550](https://github.com/astral-sh/uv/pull/2550))
- Run interpreter discovery under `-I` mode ([#2552](https://github.com/astral-sh/uv/pull/2552))
- Search in both `purelib` and `platlib` for site-packages population
([#2537](https://github.com/astral-sh/uv/pull/2537))
- Fix wheel builds and uploads for musl ARM ([#2518](https://github.com/astral-sh/uv/pull/2518))
### Documentation
- Add `--link-mode` defaults to CLI ([#2549](https://github.com/astral-sh/uv/pull/2549))
- Add an example workflow for compiling the current environment's packages
([#1968](https://github.com/astral-sh/uv/pull/1968))
- Add `uv pip check diagnostics` to `PIP_COMPATIBILITY.md`
([#2544](https://github.com/astral-sh/uv/pull/2544))
## 0.1.24
### Breaking changes
- `uv pip uninstall` no longer supports specifying targets with the `-e` / `--editable` flag
([#2577](https://github.com/astral-sh/uv/pull/2577))
### Enhancements
- Add a garbage collection mechanism to the CLI ([#1217](https://github.com/astral-sh/uv/pull/1217))
- Add progress reporting for named requirement resolution
([#2605](https://github.com/astral-sh/uv/pull/2605))
- Add support for parsing unnamed URL requirements
([#2567](https://github.com/astral-sh/uv/pull/2567))
- Add support for unnamed local directory requirements
([#2571](https://github.com/astral-sh/uv/pull/2571))
- Enable PEP 517 builds for unnamed requirements
([#2600](https://github.com/astral-sh/uv/pull/2600))
- Enable install audits without resolving named requirements
([#2575](https://github.com/astral-sh/uv/pull/2575))
- Enable unnamed requirements for direct URLs ([#2569](https://github.com/astral-sh/uv/pull/2569))
- Respect HTTP client options when reading remote requirements files
([#2434](https://github.com/astral-sh/uv/pull/2434))
- Use PEP 517 build hooks to resolve unnamed requirements
([#2604](https://github.com/astral-sh/uv/pull/2604))
- Use c-string literals and update trampolines ([#2590](https://github.com/astral-sh/uv/pull/2590))
- Support unnamed requirements directly in `uv pip uninstall`
([#2577](https://github.com/astral-sh/uv/pull/2577))
- Add support for unnamed Git and HTTP requirements
([#2578](https://github.com/astral-sh/uv/pull/2578))
- Make self-update an opt-in Cargo feature ([#2606](https://github.com/astral-sh/uv/pull/2606))
- Update minimum rust version (cargo) to 1.76 ([#2618](https://github.com/astral-sh/uv/pull/2618))
### Bug fixes
- Fix self-updates on Windows ([#2598](https://github.com/astral-sh/uv/pull/2598))
- Fix authentication with usernames that contain `@` characters
([#2592](https://github.com/astral-sh/uv/pull/2592))
- Do not error when there are warnings on Python interpreter stderr
([#2599](https://github.com/astral-sh/uv/pull/2599))
- Prevent discovery of cache gitignore when building distributions
([#2615](https://github.com/astral-sh/uv/pull/2615))
### Rust API
- Make `InstallDist.direct_url` public ([#2584](https://github.com/astral-sh/uv/pull/2584))
- Make `AllowedYanks` public ([#2608](https://github.com/astral-sh/uv/pull/2608))
### Documentation
- Fix badge to current CI status ([#2612](https://github.com/astral-sh/uv/pull/2612))
## 0.1.25
### Breaking changes
- Limit overrides and constraints to `requirements.txt` format
([#2632](https://github.com/astral-sh/uv/pull/2632))
### Enhancements
- Accept `setup.py` and `setup.cfg` files in compile
([#2634](https://github.com/astral-sh/uv/pull/2634))
- Add `--no-binary` and `--only-binary` support to `requirements.txt`
([#2680](https://github.com/astral-sh/uv/pull/2680))
- Allow pre-releases, locals, and URLs in non-editable path requirements
([#2671](https://github.com/astral-sh/uv/pull/2671))
- Use PEP 517 to extract dynamic `pyproject.toml` metadata
([#2633](https://github.com/astral-sh/uv/pull/2633))
- Add `Editable project location` and `Required-by` to `pip show`
([#2589](https://github.com/astral-sh/uv/pull/2589))
- Avoid `prepare_metadata_for_build_wheel` calls for Hatch packages with dynamic dependencies
([#2645](https://github.com/astral-sh/uv/pull/2645))
- Fall back to PEP 517 hooks for non-compliant PEP 621 metadata
([#2662](https://github.com/astral-sh/uv/pull/2662))
- Support `file://localhost/` schemes ([#2657](https://github.com/astral-sh/uv/pull/2657))
- Use normal resolver in `pip sync` ([#2696](https://github.com/astral-sh/uv/pull/2696))
### CLI
- Disallow `pyproject.toml` from `pip uninstall -r`
([#2663](https://github.com/astral-sh/uv/pull/2663))
- Unhide `--emit-index-url` and `--emit-find-links`
([#2691](https://github.com/astral-sh/uv/pull/2691))
- Use dense formatting for requirement version specifiers in diagnostics
([#2601](https://github.com/astral-sh/uv/pull/2601))
### Performance
- Add an in-memory cache for Git references ([#2682](https://github.com/astral-sh/uv/pull/2682))
- Do not force-recompile `.pyc` files ([#2642](https://github.com/astral-sh/uv/pull/2642))
- Read package metadata from `pyproject.toml` when it is statically defined
([#2676](https://github.com/astral-sh/uv/pull/2676))
### Bug fixes
- Don't error on multiple matching index URLs ([#2627](https://github.com/astral-sh/uv/pull/2627))
- Extract local versions from direct URL requirements
([#2624](https://github.com/astral-sh/uv/pull/2624))
- Respect `--no-index` with `--find-links` in `pip sync`
([#2692](https://github.com/astral-sh/uv/pull/2692))
- Use `Scripts` folder for virtualenv activation prompt
([#2690](https://github.com/astral-sh/uv/pull/2690))
## 0.1.26
### Bug fixes
- Bump simple cache version ([#2712](https://github.com/astral-sh/uv/pull/2712))
## 0.1.27
### Enhancements
- Add `--exclude-editable` support to `pip-freeze`
([#2740](https://github.com/astral-sh/uv/pull/2740))
- Add `pyproject.toml` et al to list of prompted packages
([#2746](https://github.com/astral-sh/uv/pull/2746))
- Consider installed packages during resolution ([#2596](https://github.com/astral-sh/uv/pull/2596))
- Recursively allow URL requirements for local dependencies
([#2702](https://github.com/astral-sh/uv/pull/2702))
### Configuration
- Add `UV_RESOLUTION` environment variable for `--resolution`
([#2720](https://github.com/astral-sh/uv/pull/2720))
### Bug fixes
- Respect overrides in all direct-dependency iterators
([#2742](https://github.com/astral-sh/uv/pull/2742))
- Respect subdirectories when reading static metadata
([#2728](https://github.com/astral-sh/uv/pull/2728))
## 0.1.28
### Enhancements
- Recursively resolve direct URL references upfront
([#2684](https://github.com/astral-sh/uv/pull/2684))
### Performance
- Populate the in-memory index when resolving lookahead URLs
([#2761](https://github.com/astral-sh/uv/pull/2761))
### Bug fixes
- Detect Fish via `FISH_VERSION` ([#2781](https://github.com/astral-sh/uv/pull/2781))
- Exclude installed distributions with multiple versions from consideration in the resolver
([#2779](https://github.com/astral-sh/uv/pull/2779))
- Resolve non-deterministic behavior in preferences due to site-packages ordering
([#2780](https://github.com/astral-sh/uv/pull/2780))
- Use canonical URL to key redirect map ([#2764](https://github.com/astral-sh/uv/pull/2764))
- Use distribution database and index for all pre-resolution phases
([#2766](https://github.com/astral-sh/uv/pull/2766))
- Fix `uv self update` on Linux ([#2783](https://github.com/astral-sh/uv/pull/2783))
## 0.1.29
### Enhancements
- Allow conflicting Git URLs that refer to the same commit SHA
([#2769](https://github.com/astral-sh/uv/pull/2769))
- Allow package lookups across multiple indexes via explicit opt-in
(`--index-strategy unsafe-any-match`) ([#2815](https://github.com/astral-sh/uv/pull/2815))
- Allow no-op `--no-compile` flag on CLI ([#2816](https://github.com/astral-sh/uv/pull/2816))
- Upgrade `rs-async-zip` to support data descriptors
([#2809](https://github.com/astral-sh/uv/pull/2809))
### Bug fixes
- Avoid unused extras check in `pip install` for source trees
([#2811](https://github.com/astral-sh/uv/pull/2811))
- Deduplicate editables during install commands ([#2820](https://github.com/astral-sh/uv/pull/2820))
- Fix windows lock race: lock exclusive after all try lock errors
([#2800](https://github.com/astral-sh/uv/pull/2800))
- Preserve `.git` suffixes and casing in Git dependencies
([#2789](https://github.com/astral-sh/uv/pull/2789))
- Respect Git tags and branches that look like short commits
([#2795](https://github.com/astral-sh/uv/pull/2795))
- Enable virtualenv creation on Windows with cpython-x86
([#2707](https://github.com/astral-sh/uv/pull/2707))
### Documentation
- Document that uv is safe to run concurrently ([#2818](https://github.com/astral-sh/uv/pull/2818))
## 0.1.30
### Enhancements
- Show resolution diagnostics after `pip install`
([#2829](https://github.com/astral-sh/uv/pull/2829))
### Performance
- Speed up cold-cache `urllib3`-`boto3`-`botocore` performance with batched prefetching
([#2452](https://github.com/astral-sh/uv/pull/2452))
### Bug fixes
- Backtrack on distributions with invalid metadata
([#2834](https://github.com/astral-sh/uv/pull/2834))
- Include LICENSE files in source distribution ([#2855](https://github.com/astral-sh/uv/pull/2855))
- Respect `--no-build` and `--no-binary` in `--find-links`
([#2826](https://github.com/astral-sh/uv/pull/2826))
- Respect cached local `--find-links` in install plan
([#2907](https://github.com/astral-sh/uv/pull/2907))
- Avoid panic with multiple confirmation handlers
([#2903](https://github.com/astral-sh/uv/pull/2903))
- Use scheme parsing to determine absolute vs. relative URLs
([#2904](https://github.com/astral-sh/uv/pull/2904))
- Remove additional 'because' in resolution failure messages
([#2849](https://github.com/astral-sh/uv/pull/2849))
- Use `miette` when printing `pip sync` resolution failures
([#2848](https://github.com/astral-sh/uv/pull/2848))
## 0.1.31
### Bug fixes
- Ignore direct URL distributions in prefetcher ([#2943](https://github.com/astral-sh/uv/pull/2943))
## 0.1.32
### Enhancements
- Add a `--require-hashes` command-line setting ([#2824](https://github.com/astral-sh/uv/pull/2824))
- Add hash-checking support to `install` and `sync`
([#2945](https://github.com/astral-sh/uv/pull/2945))
- Add support for URL requirements in `--generate-hashes`
([#2952](https://github.com/astral-sh/uv/pull/2952))
- Allow unnamed requirements for overrides ([#2999](https://github.com/astral-sh/uv/pull/2999))
- Enforce and backtrack on invalid versions in source metadata
([#2954](https://github.com/astral-sh/uv/pull/2954))
- Fall back to distributions without hashes in resolver
([#2949](https://github.com/astral-sh/uv/pull/2949))
- Implement `--emit-index-annotation` to annotate source index for each package
([#2926](https://github.com/astral-sh/uv/pull/2926))
- Log hard-link failures ([#3015](https://github.com/astral-sh/uv/pull/3015))
- Support free-threaded Python ([#2805](https://github.com/astral-sh/uv/pull/2805))
- Support unnamed requirements in `--require-hashes`
([#2993](https://github.com/astral-sh/uv/pull/2993))
- Respect link mode for builds, in `uv pip compile` and for `uv venv` seed packages
([#3016](https://github.com/astral-sh/uv/pull/3016))
- Force color for build error messages ([#3032](https://github.com/astral-sh/uv/pull/3032))
- Surface invalid metadata as hints in error reports
([#2850](https://github.com/astral-sh/uv/pull/2850))
### Configuration
- Add `UV_BREAK_SYSTEM_PACKAGES` environment variable
([#2995](https://github.com/astral-sh/uv/pull/2995))
### CLI
- Remove some restrictions in argument groups ([#3001](https://github.com/astral-sh/uv/pull/3001))
### Bug fixes
- Add `--find-links` source distributions to the registry cache
([#2986](https://github.com/astral-sh/uv/pull/2986))
- Allow comments after all `requirements.txt` entries
([#3018](https://github.com/astral-sh/uv/pull/3018))
- Avoid cache invalidation on credentials renewal
([#3010](https://github.com/astral-sh/uv/pull/3010))
- Avoid calling `normalize_path` with relative paths that extend beyond the current directory
([#3013](https://github.com/astral-sh/uv/pull/3013))
- Deduplicate symbolic links between `purelib` and `platlib`
([#3002](https://github.com/astral-sh/uv/pull/3002))
- Remove unused `--output-file` from `pip install`
([#2975](https://github.com/astral-sh/uv/pull/2975))
- Strip query string when parsing filename from HTML index
([#2961](https://github.com/astral-sh/uv/pull/2961))
- Update hashes without `--upgrade` if not present
([#2966](https://github.com/astral-sh/uv/pull/2966))
## 0.1.33
### Breaking changes
Using the keyring requires a username to be provided on index URLs now. Previously, the username
`oauth2accesstoken` was assumed. This will affect Google Artifact Registry users using
`--keyring-provider subprocess` and an index URL without a username. The suggested fix is to add the
required username to index URLs, e.g., `https://oauth2accesstoken@<url>`.
See [#2976](https://github.com/astral-sh/uv/pull/2976#discussion_r1566521453) for details.
### Enhancements
- Allow passing a virtual environment path to `uv pip --python`
([#3064](https://github.com/astral-sh/uv/pull/3064))
- Add compatibility argument for `pip list --outdated`
([#3055](https://github.com/astral-sh/uv/pull/3055))
### CLI
- Enable auto-wrapping of `--help` output ([#3058](https://github.com/astral-sh/uv/pull/3058))
- Show `--require-hashes` CLI argument in help ([#3093](https://github.com/astral-sh/uv/pull/3093))
### Performance
- Incorporate heuristics to improve package prioritization
([#3087](https://github.com/astral-sh/uv/pull/3087))
### Bug fixes
- Fix HTTP authentication when the password includes percent encoded characters (e.g., with Google
Artifact Registry) ([#2822](https://github.com/astral-sh/uv/issues/2822))
- Use usernames from URLs when looking for credentials in netrc files and the keyring
[#2563](https://github.com/astral-sh/uv/issues/2563))
- Skip `HEAD` requests for indexes that return 403 (e.g., PyPICloud)
([#3070](https://github.com/astral-sh/uv/pull/3070))
- Use kebab-case consistently ([#3080](https://github.com/astral-sh/uv/pull/3080))
- Show package name in no version for direct dependency error
([#3056](https://github.com/astral-sh/uv/pull/3056))
- Avoid erroring when encountering `.tar.bz2` source distributions
([#3069](https://github.com/astral-sh/uv/pull/3069))
## 0.1.34
### CLI
- Allow `--python` and `--system` on `pip compile`
([#3115](https://github.com/astral-sh/uv/pull/3115))
- Remove `Option<bool>` for `--no-cache` ([#3129](https://github.com/astral-sh/uv/pull/3129))
- Rename `--compile` to `--compile-bytecode` ([#3102](https://github.com/astral-sh/uv/pull/3102))
- Accept `0`, `1`, and similar values for Boolean environment variables
([#3113](https://github.com/astral-sh/uv/pull/3113))
### Configuration
- Add `UV_REQUIRE_HASHES` environment variable ([#3125](https://github.com/astral-sh/uv/pull/3125))
- Add negation flags to the CLI ([#3050](https://github.com/astral-sh/uv/pull/3050))
### Bug fixes
- Avoid fetching unnecessary extra versions during resolution
([#3100](https://github.com/astral-sh/uv/pull/3100))
- Avoid deprioritizing recursive editables ([#3133](https://github.com/astral-sh/uv/pull/3133))
- Avoid treating localhost URLs as local file paths
([#3132](https://github.com/astral-sh/uv/pull/3132))
- Hide password in the index printed via `--emit-index-annotation`
([#3112](https://github.com/astral-sh/uv/pull/3112))
- Restore seeding of authentication cache from index URLs
([#3124](https://github.com/astral-sh/uv/pull/3124))
## 0.1.35
### Enhancements
- Add a `--python-platform` argument to enable resolving against a target platform
([#3111](https://github.com/astral-sh/uv/pull/3111))
- Enforce HTTP timeouts on a per-read (rather than per-request) basis
([#3144](https://github.com/astral-sh/uv/pull/3144))
### Bug fixes
- Avoid preferring constrained over unconstrained packages
([#3148](https://github.com/astral-sh/uv/pull/3148))
- Allow `UV_SYSTEM_PYTHON=1` in addition to `UV_SYSTEM_PYTHON=true`
([#3136](https://github.com/astral-sh/uv/pull/3136))
## 0.1.36
### Enhancements
- Add support for embedded Python on Windows ([#3161](https://github.com/astral-sh/uv/pull/3161))
- Add Docker image publishing to release pipeline
([#3155](https://github.com/astral-sh/uv/pull/3155))
### Configuration
- Add `UV_CONSTRAINT` environment variable to provide value for `--constraint`
([#3162](https://github.com/astral-sh/uv/pull/3162))
### Bug fixes
- Avoid waiting for metadata for `--no-deps` editables
([#3188](https://github.com/astral-sh/uv/pull/3188))
- Fix `venvlauncher.exe` reference in venv creation
([#3160](https://github.com/astral-sh/uv/pull/3160))
- Fix authentication for URLs with a shared realm
([#3130](https://github.com/astral-sh/uv/pull/3130))
- Restrict observed requirements to direct when `--no-deps` is specified
([#3191](https://github.com/astral-sh/uv/pull/3191))
### Documentation
- Add a versioning policy to the README ([#3151](https://github.com/astral-sh/uv/pull/3151))
## 0.1.37
### Enhancements
- Change default HTTP read timeout to 30s ([#3182](https://github.com/astral-sh/uv/pull/3182))
- Add `--python-platform` to `sync` and `install` commands
([#3154](https://github.com/astral-sh/uv/pull/3154))
- Add ticks around error messages more consistently
([#3004](https://github.com/astral-sh/uv/pull/3004))
- Fix Docker publish permissions in release pipeline
([#3195](https://github.com/astral-sh/uv/pull/3195))
- Improve tracing for keyring provider ([#3207](https://github.com/astral-sh/uv/pull/3207))
### Performance
- Update keyring provider to be async ([#3089](https://github.com/astral-sh/uv/pull/3089))
### Bug fixes
- Fix fetch of credentials when cache is seeded with username
([#3206](https://github.com/astral-sh/uv/pull/3206))
### Documentation
- Improve `--python-platform` documentation ([#3202](https://github.com/astral-sh/uv/pull/3202))
## 0.1.38
### Enhancements
- Add alternate manylinux targets to `--python-platform`
([#3229](https://github.com/astral-sh/uv/pull/3229))
- An enum and backticks for lookahead error ([#3216](https://github.com/astral-sh/uv/pull/3216))
- Upgrade macOS target to `12.0` ([#3228](https://github.com/astral-sh/uv/pull/3228))
- Add keyring logs for URL and host fetches ([#3212](https://github.com/astral-sh/uv/pull/3212))
- Combine unresolvable error dependency clauses with the same root
([#3225](https://github.com/astral-sh/uv/pull/3225))
### CLI
- Gave a better name to the `--color` placeholder
([#3226](https://github.com/astral-sh/uv/pull/3226))
- Warn when an unsupported Python version is encountered
([#3250](https://github.com/astral-sh/uv/pull/3250))
### Configuration
- Use directory instead of file when searching for `uv.toml` file
([#3203](https://github.com/astral-sh/uv/pull/3203))
### Performance
- Only perform fetches of credentials for a realm and username combination once
([#3237](https://github.com/astral-sh/uv/pull/3237))
- Unroll self-dependencies via extras ([#3230](https://github.com/astral-sh/uv/pull/3230))
- Use read-write locks instead of mutexes in authentication handling
([#3210](https://github.com/astral-sh/uv/pull/3210))
### Bug fixes
- Avoid removing quotes from requirements markers
([#3214](https://github.com/astral-sh/uv/pull/3214))
- Avoid adding extras when expanding constraints
([#3232](https://github.com/astral-sh/uv/pull/3232))
- Reinstall package when editable label is removed
([#3219](https://github.com/astral-sh/uv/pull/3219))
### Documentation
- Add `RAYON_NUM_THREADS` to environment variable docs
([#3223](https://github.com/astral-sh/uv/pull/3223))
- Document support for HTTP proxy variables ([#3247](https://github.com/astral-sh/uv/pull/3247))
- Fix documentation for `--python-platform` ([#3220](https://github.com/astral-sh/uv/pull/3220))
## 0.1.39
### Enhancements
- Add `--target` support to `sync` and `install`
([#3257](https://github.com/astral-sh/uv/pull/3257))
- Implement `--index-strategy unsafe-best-match`
([#3138](https://github.com/astral-sh/uv/pull/3138))
### Bug fixes
- Fix `platform_machine` tag for `--python-platform` on macOS ARM
([#3267](https://github.com/astral-sh/uv/pull/3267))
### Release
- Build a separate ARM wheel for macOS ([#3268](https://github.com/astral-sh/uv/pull/3268))
- Use `macos-12` to build release wheels ([#3264](https://github.com/astral-sh/uv/pull/3264))
## 0.1.40
### Enhancements
- Add `--allow-existing` to overwrite existing virtualenv
([#2548](https://github.com/astral-sh/uv/pull/2548))
- Respect and enable uninstalls of legacy editables (`.egg-link`)
([#3415](https://github.com/astral-sh/uv/pull/3415))
- Respect and enable uninstalls of existing `.egg-info` packages
([#3380](https://github.com/astral-sh/uv/pull/3380))
### CLI
- Accept `--no-upgrade`, `--no-refresh`, etc. on the CLI
([#3328](https://github.com/astral-sh/uv/pull/3328))
### Configuration
- Expose `UV_NO_BUILD_ISOLATION` as environment variable
([#3318](https://github.com/astral-sh/uv/pull/3318))
- Expose `UV_PYTHON` as an environment variable ([#3284](https://github.com/astral-sh/uv/pull/3284))
- Expose `UV_LINK_MODE` as environment variable ([#3315](https://github.com/astral-sh/uv/pull/3315))
- Add `UV_CUSTOM_COMPILE_COMMAND` to environment variable docs
([#3382](https://github.com/astral-sh/uv/pull/3382))
### Bug fixes
- Ignore 401 HTTP responses with multiple indexes
([#3292](https://github.com/astral-sh/uv/pull/3292))
- Avoid panic for file URLs ([#3306](https://github.com/astral-sh/uv/pull/3306))
- Quote version parse errors consistently ([#3325](https://github.com/astral-sh/uv/pull/3325))
- Detect current environment when `uv` is invoked from within a virtualenv
([#3379](https://github.com/astral-sh/uv/pull/3379))
- Unset target when creating virtual environments
([#3362](https://github.com/astral-sh/uv/pull/3362))
- Update activation scripts from virtualenv ([#3376](https://github.com/astral-sh/uv/pull/3376))
- Use canonical URLs in satisfaction check ([#3373](https://github.com/astral-sh/uv/pull/3373))
### Preview features
- Add basic `tool.uv.sources` support ([#3263](https://github.com/astral-sh/uv/pull/3263))
- Improve non-git error message ([#3403](https://github.com/astral-sh/uv/pull/3403))
- Preserve given for `tool.uv.sources` paths ([#3412](https://github.com/astral-sh/uv/pull/3412))
- Restore verbatim in error message ([#3402](https://github.com/astral-sh/uv/pull/3402))
- Use preview mode for tool.uv.sources ([#3277](https://github.com/astral-sh/uv/pull/3277))
- Use top-level `--isolated` for `uv run` ([#3431](https://github.com/astral-sh/uv/pull/3431))
- add basic "install from lock file" operation ([#3340](https://github.com/astral-sh/uv/pull/3340))
- uv-resolver: add initial version of universal lock file format
([#3314](https://github.com/astral-sh/uv/pull/3314))
## 0.1.41
### Bug fixes
- Remove unconstrained version error from requirements
([#3443](https://github.com/astral-sh/uv/pull/3443))
## 0.1.42
This release includes stabilized support for persistent configuration in uv.
uv will now read project configuration from a `pyproject.toml` or `uv.toml` file in the current
directory or any parent directory, along with user configuration at `~/.config/uv/uv.toml` (or
`$XDG_CONFIG_HOME/uv/uv.toml`) on macOS and Linux, and `%APPDATA%\uv\uv.toml` on Windows.
See:
[Persistent Configuration](https://github.com/astral-sh/uv?tab=readme-ov-file#persistent-configuration)
for more.
### Enhancements
- Respect `MACOSX_DEPLOYMENT_TARGET` in `--python-platform`
([#3470](https://github.com/astral-sh/uv/pull/3470))
### Configuration
- Add documentation for persistent configuration
([#3467](https://github.com/astral-sh/uv/pull/3467))
- Add JSON Schema export to SchemaStore ([#3461](https://github.com/astral-sh/uv/pull/3461))
- Merge user and workspace settings ([#3462](https://github.com/astral-sh/uv/pull/3462))
### Bug fixes
- Use Metadata10 to parse PKG-INFO of legacy editable
([#3450](https://github.com/astral-sh/uv/pull/3450))
- Apply normcase to line from easy-install.pth ([#3451](https://github.com/astral-sh/uv/pull/3451))
- Upgrade `async_http_range_reader` to v0.8.0 to respect redirects in range requests
([#3460](https://github.com/astral-sh/uv/pull/3460))
- Use last non-EOL version for `--python-platform` macOS
([#3469](https://github.com/astral-sh/uv/pull/3469))
### Preview features
- Use environment layering for `uv run --with` ([#3447](https://github.com/astral-sh/uv/pull/3447))
- Warn when missing minimal bounds when using `tool.uv.sources`
([#3452](https://github.com/astral-sh/uv/pull/3452))
## 0.1.43
### Enhancements
- Annotate sources of requirements in `pip compile` output
([#3269](https://github.com/astral-sh/uv/pull/3269))
- Track origin for `setup.py` files and friends ([#3481](https://github.com/astral-sh/uv/pull/3481))
### Configuration
- Consolidate concurrency limits and expose as environment variables
([#3493](https://github.com/astral-sh/uv/pull/3493))
### Release
- Use manylinux: auto to enable `musllinux_1_2` aarch64 builds
([#3444](https://github.com/astral-sh/uv/pull/3444))
- Enable musllinux_1_1 wheels ([#3523](https://github.com/astral-sh/uv/pull/3523))
### Bug fixes
- Avoid keyword arguments for PEP 517 build hooks
([#3517](https://github.com/astral-sh/uv/pull/3517))
- Apply advisory locks when building source distributions
([#3525](https://github.com/astral-sh/uv/pull/3525))
- Avoid attempting to build editables when fetching metadata
([#3563](https://github.com/astral-sh/uv/pull/3563))
- Clone individual files on windows ReFS ([#3551](https://github.com/astral-sh/uv/pull/3551))
- Filter irrelevant requirements from source annotations
([#3479](https://github.com/astral-sh/uv/pull/3479))
- Make cache clearing robust to directories without read permissions
([#3524](https://github.com/astral-sh/uv/pull/3524))
- Respect constraints on editable dependencies ([#3554](https://github.com/astral-sh/uv/pull/3554))
- Skip Python 2 versions when locating Python ([#3476](https://github.com/astral-sh/uv/pull/3476))
- Make `--isolated` a global argument ([#3558](https://github.com/astral-sh/uv/pull/3558))
- Allow unknown `pyproject.toml` fields ([#3511](https://github.com/astral-sh/uv/pull/3511))
- Change error value detection for glibc ([#3487](https://github.com/astral-sh/uv/pull/3487))
### Preview features
- Create virtualenv if it doesn't exist in project API
([#3499](https://github.com/astral-sh/uv/pull/3499))
- Discover `uv run` projects hierarchically ([#3494](https://github.com/astral-sh/uv/pull/3494))
- Read and write `uv.lock` based on project root
([#3497](https://github.com/astral-sh/uv/pull/3497))
- Read package name from `pyproject.toml` in `uv run`
([#3496](https://github.com/astral-sh/uv/pull/3496))
- Rebrand workspace API as project API ([#3489](https://github.com/astral-sh/uv/pull/3489))
## 0.1.44
### Release
Reverts "Use manylinux: auto to enable `musllinux_1_2` aarch64 builds
([#3444](https://github.com/astral-sh/uv/pull/3444))"
The manylinux change appeared to introduce SSL errors when building aarch64 Docker images, e.g.,
> invalid peer certificate: BadSignature
The v0.1.42 behavior for aarch64 manylinux builds is restored in this release.
See [#3576](https://github.com/astral-sh/uv/pull/3576)
## 0.1.45
### Enhancements
- Parse and store extras on editable requirements
([#3629](https://github.com/astral-sh/uv/pull/3629))
- Allow local versions in wheel filenames ([#3596](https://github.com/astral-sh/uv/pull/3596))
- Create lib64 symlink for 64-bit, non-macOS, POSIX environments
([#3584](https://github.com/astral-sh/uv/pull/3584))
### Configuration
- Add `UV_CONCURRENT_INSTALLS` variable in favor of `RAYON_NUM_THREADS`
([#3646](https://github.com/astral-sh/uv/pull/3646))
- Add serialization and deserialization for `--find-links`
([#3619](https://github.com/astral-sh/uv/pull/3619))
- Apply combination logic to merge CLI and persistent configuration
([#3618](https://github.com/astral-sh/uv/pull/3618))
### Performance
- Parallelize resolver ([#3627](https://github.com/astral-sh/uv/pull/3627))
### Bug fixes
- Reduce sensitivity of unknown option error to discard Python 2 interpreters
([#3580](https://github.com/astral-sh/uv/pull/3580))
- Respect installed packages in `uv run` ([#3603](https://github.com/astral-sh/uv/pull/3603))
- Separate cache construction from initialization
([#3607](https://github.com/astral-sh/uv/pull/3607))
- Add missing `"directory"` branch in source match
([#3608](https://github.com/astral-sh/uv/pull/3608))
- Fix source annotation in pip compile `annotation-style=line` output
([#3637](https://github.com/astral-sh/uv/pull/3637))
- Run cargo update to pull in h2 ([#3638](https://github.com/astral-sh/uv/pull/3638))
- URL-decode hashes in HTML fragments ([#3655](https://github.com/astral-sh/uv/pull/3655))
- Always print JSON output with `--format` json ([#3671](https://github.com/astral-sh/uv/pull/3671))
### Documentation
- Add `UV_CONFIG_FILE` environment variable to documentation
([#3653](https://github.com/astral-sh/uv/pull/3653))
- Explicitly mention `--user` in compatibility guide
([#3666](https://github.com/astral-sh/uv/pull/3666))
### Release
- Add musl ppc64le support ([#3537](https://github.com/astral-sh/uv/pull/3537))
- Retag musl aarch64 for manylinux2014 ([#3624](https://github.com/astral-sh/uv/pull/3624))
### Preview features
- Add direct URL conversion to lockfile ([#3633](https://github.com/astral-sh/uv/pull/3633))
- Add hashes and versions to all distributions ([#3589](https://github.com/astral-sh/uv/pull/3589))
- Add local path conversions from lockfile ([#3609](https://github.com/astral-sh/uv/pull/3609))
- Add missing `"directory"` branch in source match
([#3608](https://github.com/astral-sh/uv/pull/3608))
- Add registry file size to lockfile ([#3652](https://github.com/astral-sh/uv/pull/3652))
- Add registry source distribution support to lockfile
([#3649](https://github.com/astral-sh/uv/pull/3649))
- Refactor editables for supporting them in bluejay commands
([#3639](https://github.com/astral-sh/uv/pull/3639))
- Rename `sourcedist` to `sdist` in lockfile ([#3590](https://github.com/astral-sh/uv/pull/3590))
- Respect installed packages in `uv run` ([#3603](https://github.com/astral-sh/uv/pull/3603))
- Support lossless serialization for Git dependencies in lockfile
([#3630](https://github.com/astral-sh/uv/pull/3630))