Skip to content

Commit 0b1a882

Browse files
Update charmcraft.yaml build tools (#240)
This PR contains the following updates: | Package | Change | Age | Confidence | Update | |---|---|---|---|---| | [pip](https://redirect.github.com/pypa/pip) ([changelog](https://pip.pypa.io/en/stable/news/)) | `25.0.1` -> `25.1.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pip/25.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pip/25.0.1/25.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | minor | | [poetry](https://redirect.github.com/python-poetry/poetry) ([changelog](https://python-poetry.org/history/)) | `2.1.1` -> `2.1.3` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/poetry/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/poetry/2.1.1/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | patch | | [rust-lang/rust](https://redirect.github.com/rust-lang/rust) | `1.85.1` -> `1.88.0` | [![age](https://developer.mend.io/api/mc/badges/age/github-releases/rust-lang%2frust/1.88.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/rust-lang%2frust/1.85.1/1.88.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | minor | | [uv](https://pypi.org/project/uv/) ([source](https://redirect.github.com/astral-sh/uv), [changelog](https://redirect.github.com/astral-sh/uv/blob/main/CHANGELOG.md)) | `0.6.9` -> `0.8.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/uv/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/uv/0.6.9/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | minor | --- ### Release Notes <details> <summary>pypa/pip (pip)</summary> ### [`v25.1.1`](https://redirect.github.com/pypa/pip/compare/25.1...25.1.1) [Compare Source](https://redirect.github.com/pypa/pip/compare/25.1...25.1.1) ### [`v25.1`](https://redirect.github.com/pypa/pip/compare/25.0.1...25.1) [Compare Source](https://redirect.github.com/pypa/pip/compare/25.0.1...25.1) </details> <details> <summary>python-poetry/poetry (poetry)</summary> ### [`v2.1.3`](https://redirect.github.com/python-poetry/poetry/blob/HEAD/CHANGELOG.md#213---2025-05-04) [Compare Source](https://redirect.github.com/python-poetry/poetry/compare/2.1.2...2.1.3) ##### Changed - Require `importlib-metadata<8.7` for Python 3.9 because of a breaking change in importlib-metadata 8.7 ([#&#8203;10374](https://redirect.github.com/python-poetry/poetry/pull/10374)). ##### Fixed - Fix an issue where re-locking failed for incomplete multiple-constraints dependencies with explicit sources ([#&#8203;10324](https://redirect.github.com/python-poetry/poetry/pull/10324)). - Fix an issue where the `--directory` option did not work if a plugin, which accesses the poetry instance during its activation, was installed ([#&#8203;10352](https://redirect.github.com/python-poetry/poetry/pull/10352)). - Fix an issue where `poetry env activate -v` printed additional information to stdout instead of stderr so that the output could not be used as designed ([#&#8203;10353](https://redirect.github.com/python-poetry/poetry/pull/10353)). - Fix an issue where the original error was not printed if building a git dependency failed ([#&#8203;10366](https://redirect.github.com/python-poetry/poetry/pull/10366)). - Fix an issue where wheels for the wrong platform were installed in rare cases. ([#&#8203;10361](https://redirect.github.com/python-poetry/poetry/pull/10361)). ##### poetry-core ([`2.1.3`](https://redirect.github.com/python-poetry/poetry-core/releases/tag/2.1.3)) - Fix an issue where the union of specific inverse or partially inverse markers was not simplified ([#&#8203;858](https://redirect.github.com/python-poetry/poetry-core/pull/858)). - Fix an issue where optional dependencies defined in the `project` section were treated as non-optional when a source was defined for them in the `tool.poetry` section ([#&#8203;857](https://redirect.github.com/python-poetry/poetry-core/pull/857)). - Fix an issue where markers with `===` were not parsed correctly ([#&#8203;860](https://redirect.github.com/python-poetry/poetry-core/pull/860)). - Fix an issue where local versions with upper case letters caused an error ([#&#8203;859](https://redirect.github.com/python-poetry/poetry-core/pull/859)). - Fix an issue where `extra` markers with a value starting with "in" were not validated correctly ([#&#8203;862](https://redirect.github.com/python-poetry/poetry-core/pull/862)). ### [`v2.1.2`](https://redirect.github.com/python-poetry/poetry/blob/HEAD/CHANGELOG.md#212---2025-03-29) [Compare Source](https://redirect.github.com/python-poetry/poetry/compare/2.1.1...2.1.2) ##### Changed - Improve performance of locking dependencies ([#&#8203;10275](https://redirect.github.com/python-poetry/poetry/pull/10275)). ##### Fixed - Fix an issue where markers were not locked correctly ([#&#8203;10240](https://redirect.github.com/python-poetry/poetry/pull/10240)). - Fix an issue where the result of `poetry lock` was not deterministic ([#&#8203;10276](https://redirect.github.com/python-poetry/poetry/pull/10276)). - Fix an issue where `poetry env activate` returned the wrong command for `tcsh` ([#&#8203;10243](https://redirect.github.com/python-poetry/poetry/pull/10243)). - Fix an issue where `poetry env activate` returned the wrong command for `pwsh` on Linux ([#&#8203;10256](https://redirect.github.com/python-poetry/poetry/pull/10256)). ##### Docs - Update basic usage section to reflect new default layout ([#&#8203;10203](https://redirect.github.com/python-poetry/poetry/pull/10203)). ##### poetry-core ([`2.1.2`](https://redirect.github.com/python-poetry/poetry-core/releases/tag/2.1.2)) - Improve performance of marker operations ([#&#8203;851](https://redirect.github.com/python-poetry/poetry-core/pull/851)). - Fix an issue where incorrect markers were calculated when removing parts covered by the project's Python constraint ([#&#8203;841](https://redirect.github.com/python-poetry/poetry-core/pull/841), [#&#8203;846](https://redirect.github.com/python-poetry/poetry-core/pull/846)). - Fix an issue where `extra` markers were not simplified ([#&#8203;842](https://redirect.github.com/python-poetry/poetry-core/pull/842), [#&#8203;845](https://redirect.github.com/python-poetry/poetry-core/pull/845), [#&#8203;847](https://redirect.github.com/python-poetry/poetry-core/pull/847)). - Fix an issue where the intersection and union of markers was not deterministic ([#&#8203;843](https://redirect.github.com/python-poetry/poetry-core/pull/843)). - Fix an issue where the intersection of `python_version` markers was not recognized as empty ([#&#8203;849](https://redirect.github.com/python-poetry/poetry-core/pull/849)). - Fix an issue where `python_version` markers were not simplified ([#&#8203;848](https://redirect.github.com/python-poetry/poetry-core/pull/848), [#&#8203;851](https://redirect.github.com/python-poetry/poetry-core/pull/851)). - Fix an issue where Python constraints on a package were converted into invalid markers ([#&#8203;853](https://redirect.github.com/python-poetry/poetry-core/pull/853)). </details> <details> <summary>rust-lang/rust (rust-lang/rust)</summary> ### [`v1.88.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1880-2025-06-26) [Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.87.0...1.88.0) \========================== <a id="1.88.0-Language"></a> ## Language - [Stabilize `#![feature(let_chains)]` in the 2024 edition.](https://redirect.github.com/rust-lang/rust/pull/132833) This feature allows `&&`-chaining `let` statements inside `if` and `while`, allowing intermixture with boolean expressions. The patterns inside the `let` sub-expressions can be irrefutable or refutable. - [Stabilize `#![feature(naked_functions)]`.](https://redirect.github.com/rust-lang/rust/pull/134213) Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function. - [Stabilize `#![feature(cfg_boolean_literals)]`.](https://redirect.github.com/rust-lang/rust/pull/138632) This allows using boolean literals as `cfg` predicates, e.g. `#[cfg(true)]` and `#[cfg(false)]`. - [Fully de-stabilize the `#[bench]` attribute](https://redirect.github.com/rust-lang/rust/pull/134273). Usage of `#[bench]` without `#![feature(custom_test_frameworks)]` already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error. - [Add warn-by-default `dangerous_implicit_autorefs` lint against implicit autoref of raw pointer dereference.](https://redirect.github.com/rust-lang/rust/pull/123239) The lint [will be bumped to deny-by-default](https://redirect.github.com/rust-lang/rust/pull/141661) in the next version of Rust. - [Add `invalid_null_arguments` lint to prevent invalid usage of null pointers.](https://redirect.github.com/rust-lang/rust/pull/119220) This lint is uplifted from `clippy::invalid_null_ptr_usage`. - [Change trait impl candidate preference for builtin impls and trivial where-clauses.](https://redirect.github.com/rust-lang/rust/pull/138176) - [Check types of generic const parameter defaults](https://redirect.github.com/rust-lang/rust/pull/139646) <a id="1.88.0-Compiler"></a> ## Compiler - [Stabilize `-Cdwarf-version` for selecting the version of DWARF debug information to generate.](https://redirect.github.com/rust-lang/rust/pull/136926) <a id="1.88.0-Platform-Support"></a> ## Platform Support - [Demote `i686-pc-windows-gnu` to Tier 2.](https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.88.0-Libraries"></a> ## Libraries - [Remove backticks from `#[should_panic]` test failure message.](https://redirect.github.com/rust-lang/rust/pull/136160) - [Guarantee that `[T; N]::from_fn` is generated in order of increasing indices.](https://redirect.github.com/rust-lang/rust/pull/139099), for those passing it a stateful closure. - [The libtest flag `--nocapture` is deprecated in favor of the more consistent `--no-capture` flag.](https://redirect.github.com/rust-lang/rust/pull/139224) - [Guarantee that `{float}::NAN` is a quiet NaN.](https://redirect.github.com/rust-lang/rust/pull/139483) <a id="1.88.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Cell::update`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update) - [`impl Default for *const T`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#impl-Default-for-*const+T) - [`impl Default for *mut T`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#impl-Default-for-*mut+T) - [`HashMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if) - [`HashSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if) - [`hint::select_unpredictable`](https://doc.rust-lang.org/stable/std/hint/fn.select_unpredictable.html) - [`proc_macro::Span::line`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line) - [`proc_macro::Span::column`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column) - [`proc_macro::Span::start`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start) - [`proc_macro::Span::end`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end) - [`proc_macro::Span::file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file) - [`proc_macro::Span::local_file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file) - [`<[T]>::as_chunks`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks) - [`<[T]>::as_chunks_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_mut) - [`<[T]>::as_chunks_unchecked`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_unchecked) - [`<[T]>::as_chunks_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_unchecked_mut) - [`<[T]>::as_rchunks`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_rchunks) - [`<[T]>::as_rchunks_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_rchunks_mut) - [`mod ffi::c_str`](https://doc.rust-lang.org/stable/std/ffi/c_str/index.html) These previously stable APIs are now stable in const contexts: - [`NonNull<T>::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace) - [`<*mut T>::replace`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace) - [`std::ptr::swap_nonoverlapping`](https://doc.rust-lang.org/stable/std/ptr/fn.swap_nonoverlapping.html) - [`Cell::replace`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.replace) - [`Cell::get`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.get) - [`Cell::get_mut`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.get_mut) - [`Cell::from_mut`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.from_mut) - [`Cell::as_slice_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_slice_of_cells) <a id="1.88.0-Cargo"></a> ## Cargo - [Stabilize automatic garbage collection.](https://redirect.github.com/rust-lang/cargo/pull/14287/) - [use `zlib-rs` for gzip compression in rust code](https://redirect.github.com/rust-lang/cargo/pull/15417/) <a id="1.88.0-Rustdoc"></a> ## Rustdoc - [Doctests can be ignored based on target names using `ignore-*` attributes.](https://redirect.github.com/rust-lang/rust/pull/137096) - [Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options to specify a program (like qemu) and its arguments to run a doctest.](https://redirect.github.com/rust-lang/rust/pull/137096) <a id="1.88.0-Compatibility-Notes"></a> ## Compatibility Notes - [Finish changing the internal representation of pasted tokens](https://redirect.github.com/rust-lang/rust/pull/124141). Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a `tt` fragment specifier can often fix these macros. - [Fully de-stabilize the `#[bench]` attribute](https://redirect.github.com/rust-lang/rust/pull/134273). Usage of `#[bench]` without `#![feature(custom_test_frameworks)]` already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error. - [Fix borrow checking some always-true patterns.](https://redirect.github.com/rust-lang/rust/pull/139042) The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled. - [Update the minimum external LLVM to 19.](https://redirect.github.com/rust-lang/rust/pull/139275) - [Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.](https://redirect.github.com/rust-lang/rust/pull/139309) ### [`v1.87.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1870-2025-05-15) [Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.86.0...1.87.0) \========================== <a id="1.87.0-Language"></a> ## Language - [Stabilize `asm_goto` feature](https://redirect.github.com/rust-lang/rust/pull/133870) - [Allow parsing open beginning ranges (`..EXPR`) after unary operators `!`, `-`, and `*`](https://redirect.github.com/rust-lang/rust/pull/134900). - [Don't require method impls for methods with `Self: Sized` bounds in `impl`s for unsized types](https://redirect.github.com/rust-lang/rust/pull/135480) - [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>` bounds on return position `impl Trait` in `trait`s](https://redirect.github.com/rust-lang/rust/pull/138128) <a id="1.87.0-Compiler"></a> ## Compiler - [x86: make SSE2 required for i686 targets and use it to pass SIMD types](https://redirect.github.com/rust-lang/rust/pull/135408) <a id="1.87.0-Platform-Support"></a> ## Platform Support - [Remove `i586-pc-windows-msvc` target](https://redirect.github.com/rust-lang/rust/pull/137957) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.87.0-Libraries"></a> ## Libraries - [Stabilize the anonymous pipe API](https://redirect.github.com/rust-lang/rust/issues/127154) - [Add support for unbounded left/right shift operations](https://redirect.github.com/rust-lang/rust/issues/129375) - [Print pointer metadata in `Debug` impl of raw pointers](https://redirect.github.com/rust-lang/rust/pull/135080) - [`Vec::with_capacity` guarantees it allocates with the amount requested, even if `Vec::capacity` returns a different number.](https://redirect.github.com/rust-lang/rust/pull/135933) - Most `std::arch` intrinsics which don't take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled ([https://github.com/rust-lang/stdarch/pull/1714](https://redirect.github.com/rust-lang/stdarch/pull/1714), [https://github.com/rust-lang/stdarch/pull/1716](https://redirect.github.com/rust-lang/stdarch/pull/1716), [https://github.com/rust-lang/stdarch/pull/1717](https://redirect.github.com/rust-lang/stdarch/pull/1717)) - [Undeprecate `env::home_dir`](https://redirect.github.com/rust-lang/rust/pull/137327) - [Denote `ControlFlow` as `#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449) - [Macros such as `assert_eq!` and `vec!` now support `const {...}` expressions](https://redirect.github.com/rust-lang/rust/pull/138162) <a id="1.87.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Vec::extract_if`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if) - [`vec::ExtractIf`](https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html) - [`LinkedList::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if) - [`linked_list::ExtractIf`](https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html) - [`<[T]>::split_off`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off) - [`<[T]>::split_off_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut) - [`<[T]>::split_off_first`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first) - [`<[T]>::split_off_first_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut) - [`<[T]>::split_off_last`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last) - [`<[T]>::split_off_last_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut) - [`String::extend_from_within`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within) - [`os_str::Display`](https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html) - [`OsString::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display) - [`OsStr::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display) - [`io::pipe`](https://doc.rust-lang.org/stable/std/io/fn.pipe.html) - [`io::PipeReader`](https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html) - [`io::PipeWriter`](https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html) - [`impl From<PipeReader> for OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle) - [`impl From<PipeWriter> for OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle) - [`impl From<PipeReader> for Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html) - [`impl From<PipeWriter> for Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio) - [`impl From<PipeReader> for OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd) - [`impl From<PipeWriter> for OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd) - [`Box<MaybeUninit<T>>::write`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write) - [`impl TryFrom<Vec<u8>> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String) - [`<*const T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned) - [`<*const T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned) - [`<*mut T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1) - [`<*mut T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1) - [`NonNull::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned) - [`NonNull::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned) - [`<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed) - [`NonZero::<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5). - [`<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned). - [`NonZero::<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5). - [`<uN>::is_multiple_of`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of) - [`<uN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl) - [`<uN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr) - [`<iN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl) - [`<iN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr) - [`<iN>::midpoint`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint) - [`<str>::from_utf8`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8) - [`<str>::from_utf8_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_mut) - [`<str>::from_utf8_unchecked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked) - [`<str>::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked_mut) These previously stable APIs are now stable in const contexts: - [`core::str::from_utf8_mut`](https://doc.rust-lang.org/stable/std/str/fn.from_utf8_mut.html) - [`<[T]>::copy_from_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice) - [`SocketAddr::set_ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip) - [`SocketAddr::set_port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port), - [`SocketAddrV4::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip) - [`SocketAddrV4::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port), - [`SocketAddrV6::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip) - [`SocketAddrV6::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port) - [`SocketAddrV6::set_flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo) - [`SocketAddrV6::set_scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id) - [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) - [`char::is_whitespace`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace) - [`<[[T; N]]>::as_flattened`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened) - [`<[[T; N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut) - [`String::into_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes) - [`String::as_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str) - [`String::capacity`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity) - [`String::as_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes) - [`String::len`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len) - [`String::is_empty`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty) - [`String::as_mut_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str) - [`String::as_mut_vec`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec) - [`Vec::as_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr) - [`Vec::as_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice) - [`Vec::capacity`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity) - [`Vec::len`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len) - [`Vec::is_empty`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty) - [`Vec::as_mut_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice) - [`Vec::as_mut_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr) <a id="1.87.0-Cargo"></a> ## Cargo - [Add terminal integration via ANSI OSC 9;4 sequences](https://redirect.github.com/rust-lang/cargo/pull/14615/) - [chore: bump openssl to v3](https://redirect.github.com/rust-lang/cargo/pull/15232/) - [feat(package): add --exclude-lockfile flag](https://redirect.github.com/rust-lang/cargo/pull/15234/) <a id="1.87.0-Compatibility-Notes"></a> ## Compatibility Notes - [Rust now raises an error for macro invocations inside the `#![crate_name]` attribute](https://redirect.github.com/rust-lang/rust/pull/127581) - [Unstable fields are now always considered to be inhabited](https://redirect.github.com/rust-lang/rust/pull/133889) - [Macro arguments of unary operators followed by open beginning ranges may now be matched differently](https://redirect.github.com/rust-lang/rust/pull/134900) - [Make `Debug` impl of raw pointers print metadata if present](https://redirect.github.com/rust-lang/rust/pull/135080) - [Warn against function pointers using unsupported ABI strings in dependencies](https://redirect.github.com/rust-lang/rust/pull/135767) - [Associated types on `dyn` types are no longer deduplicated](https://redirect.github.com/rust-lang/rust/pull/136458) - [Forbid attributes on `..` inside of struct patterns (`let Struct { #[attribute] .. }) =`](https://redirect.github.com/rust-lang/rust/pull/136490) - [Make `ptr_cast_add_auto_to_object` lint into hard error](https://redirect.github.com/rust-lang/rust/pull/136764) - Many `std::arch` intrinsics are now safe to call in some contexts, there may now be new `unused_unsafe` warnings in existing codebases. - [Limit `width` and `precision` formatting options to 16 bits on all targets](https://redirect.github.com/rust-lang/rust/pull/136932) - [Turn order dependent trait objects future incompat warning into a hard error](https://redirect.github.com/rust-lang/rust/pull/136968) - [Denote `ControlFlow` as `#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449) - [Windows: The standard library no longer links `advapi32`, except on win7.](https://redirect.github.com/rust-lang/rust/pull/138233) Code such as C libraries that were relying on this assumption may need to explicitly link advapi32. - [Proc macros can no longer observe expanded `cfg(true)` attributes.](https://redirect.github.com/rust-lang/rust/pull/138844) - [Start changing the internal representation of pasted tokens](https://redirect.github.com/rust-lang/rust/pull/124141). Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a `tt` fragment specifier can often fix these macros. - [Don't allow flattened format\_args in const.](https://redirect.github.com/rust-lang/rust/pull/139624) <a id="1.87.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 20](https://redirect.github.com/rust-lang/rust/pull/135763) ### [`v1.86.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1860-2025-04-03) [Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.85.1...1.86.0) \========================== <a id="1.86.0-Language"></a> ## Language - [Stabilize upcasting trait objects to supertraits.](https://redirect.github.com/rust-lang/rust/pull/134367) - [Allow safe functions to be marked with the `#[target_feature]` attribute.](https://redirect.github.com/rust-lang/rust/pull/134090) - [The `missing_abi` lint now warns-by-default.](https://redirect.github.com/rust-lang/rust/pull/132397) - Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (`--x`) as written in other languages. This was previously a clippy lint, `clippy::double_neg`, and is [now available directly in Rust as `double_negations`.](https://redirect.github.com/rust-lang/rust/pull/126604) - [More pointers are now detected as definitely not-null based on their alignment in const eval.](https://redirect.github.com/rust-lang/rust/pull/133700) - [Empty `repr()` attribute applied to invalid items are now correctly rejected.](https://redirect.github.com/rust-lang/rust/pull/133925) - [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer accepted in more places than intended.](https://redirect.github.com/rust-lang/rust/pull/134276) <a id="1.86.0-Compiler"></a> ## Compiler - [Debug-assert that raw pointers are non-null on access.](https://redirect.github.com/rust-lang/rust/pull/134424) - [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to match Cargo's defaults.](https://redirect.github.com/rust-lang/rust/pull/135439) - [Fix emission of `overflowing_literals` under certain macro environments.](https://redirect.github.com/rust-lang/rust/pull/136393) <a id="1.86.0-Platform-Support"></a> ## Platform Support - [Replace `i686-unknown-redox` target with `i586-unknown-redox`.](https://redirect.github.com/rust-lang/rust/pull/136698) - [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.](https://redirect.github.com/rust-lang/rust/pull/136700) - New tier 3 targets: - [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`](https://redirect.github.com/rust-lang/rust/pull/133631). For supporting Neutrino QNX 7.1 with `io-socket` network stack. - [`{aarch64-unknown,x86_64-pc}-nto-qnx800`](https://redirect.github.com/rust-lang/rust/pull/133631). For supporting Neutrino QNX 8.0 (`no_std`-only). - [`{x86_64,i686}-win7-windows-gnu`](https://redirect.github.com/rust-lang/rust/pull/134609). Intended for backwards compatibility with Windows 7. `{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts that already exist as Tier 3 targets. - [`amdgcn-amd-amdhsa`](https://redirect.github.com/rust-lang/rust/pull/134740). - [`x86_64-pc-cygwin`](https://redirect.github.com/rust-lang/rust/pull/134999). - [`{mips,mipsel}-mti-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135074). Initial bare-metal support. - [`m68k-unknown-none-elf`](https://redirect.github.com/rust-lang/rust/pull/135085). - [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and `thumbv7a-nuttx-{eabi,eabihf}`](https://redirect.github.com/rust-lang/rust/pull/135757). Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. <a id="1.86.0-Libraries"></a> ## Libraries - The type of `FromBytesWithNulError` in `CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError>` was [changed from an opaque struct to an enum](https://redirect.github.com/rust-lang/rust/pull/134143), allowing users to examine why the conversion failed. - [Remove `RustcDecodable` and `RustcEncodable`.](https://redirect.github.com/rust-lang/rust/pull/134272) - [Deprecate libtest's `--logfile` option.](https://redirect.github.com/rust-lang/rust/pull/134283) - [On recent versions of Windows, `std::fs::remove_file` will now remove read-only files.](https://redirect.github.com/rust-lang/rust/pull/134679) <a id="1.86.0-Stabilized-APIs"></a> ## Stabilized APIs - [`{float}::next_down`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down) - [`{float}::next_up`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up) - [`<[_]>::get_disjoint_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut) - [`<[_]>::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut) - [`slice::GetDisjointMutError`](https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html) - [`HashMap::get_disjoint_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut) - [`HashMap::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut) - [`NonZero::count_ones`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones) - [`Vec::pop_if`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if) - [`sync::Once::wait`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait) - [`sync::Once::wait_force`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force) - [`sync::OnceLock::wait`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait) These APIs are now stable in const contexts: - [`hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html) - [`io::Cursor::get_mut`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut) - [`io::Cursor::set_position`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position) - [`str::is_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary) - [`str::split_at`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at) - [`str::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked) - [`str::split_at_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut) - [`str::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked) <a id="1.86.0-Cargo"></a> ## Cargo - [When merging, replace rather than combine configuration keys that refer to a program path and its arguments.](https://redirect.github.com/rust-lang/cargo/pull/15066/) - [Error if both `--package` and `--workspace` are passed but the requested package is missing.](https://redirect.github.com/rust-lang/cargo/pull/15071/) This was previously silently ignored, which was considered a bug since missing packages should be reported. - [Deprecate the token argument in `cargo login` to avoid shell history leaks.](https://redirect.github.com/rust-lang/cargo/pull/15057/) - [Simplify the implementation of `SourceID` comparisons.](https://redirect.github.com/rust-lang/cargo/pull/14980/) This may potentially change behavior if the canonicalized URL compares differently in alternative registries. <a id="1.86.0-Rustdoc"></a> ## Rustdoc - [Add a sans-serif font setting.](https://redirect.github.com/rust-lang/rust/pull/133636) <a id="1.86.0-Compatibility-Notes"></a> ## Compatibility Notes - [The `wasm_c_abi` future compatibility warning is now a hard error.](https://redirect.github.com/rust-lang/rust/pull/133951) Users of `wasm-bindgen` should upgrade to at least version 0.2.89, otherwise compilation will fail. - [Remove long-deprecated no-op attributes `#![no_start]` and `#![crate_id]`.](https://redirect.github.com/rust-lang/rust/pull/134300) - [The future incompatibility lint `cenum_impl_drop_cast` has been made into a hard error.](https://redirect.github.com/rust-lang/rust/pull/135964) This means it is now an error to cast a field-less enum to an integer if the enum implements `Drop`. - [SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually.](https://redirect.github.com/rust-lang/rust/pull/137037) To compile for pre-SSE2 32-bit x86, use a "i586" target instead. <a id="1.86.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Build the rustc on AArch64 Linux with ThinLTO + PGO.](https://redirect.github.com/rust-lang/rust/pull/133807) The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster. </details> <details> <summary>astral-sh/uv (uv)</summary> ### [`v0.8.0`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#080) [Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.22...0.8.0) Since we released uv [0.7.0](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.0) in April, we've accumulated various changes that improve correctness and user experience, but could break some workflows. This release contains those changes; many have been marked as breaking out of an abundance of caution. We expect most users to be able to upgrade without making changes. This release also includes the stabilization of a couple `uv python install` features, which have been available under preview since late last year. ##### Breaking changes - **Install Python executables into a directory on the `PATH` ([#&#8203;14626](https://redirect.github.com/astral-sh/uv/pull/14626))** `uv python install` now installs a versioned Python executable (e.g., `python3.13`) into a directory on the `PATH` (e.g., `~/.local/bin`) by default. This behavior has been available under the `--preview` flag since [Oct 2024](https://redirect.github.com/astral-sh/uv/pull/8458). This change should not be breaking unless it shadows a Python executable elsewhere on the `PATH`. To install unversioned executables, i.e., `python3` and `python`, use the `--default` flag. The `--default` flag has also been in preview, but is not stabilized in this release. Note that these executables point to the base Python installation and only include the standard library. That means they will not include dependencies from your current project (use `uv run python` instead) and you cannot install packages into their environment (use `uvx --with <package> python` instead). As with tool installation, the target directory respects common variables like `XDG_BIN_HOME` and can be overridden with a `UV_PYTHON_BIN_DIR` variable. You can opt out of this behavior with `uv python install --no-bin` or `UV_PYTHON_INSTALL_BIN=0`. See the [documentation on installing Python executables](https://docs.astral.sh/uv/concepts/python-versions/#installing-python-executables) for more details. - **Register Python versions with the Windows Registry ([#&#8203;14625](https://redirect.github.com/astral-sh/uv/pull/14625))** `uv python install` now registers the installed Python version with the Windows Registry as specified by [PEP 514](https://peps.python.org/pep-0514/). This allows using uv installed Python versions via the `py` launcher. This behavior has been available under the `--preview` flag since [Jan 2025](https://redirect.github.com/astral-sh/uv/pull/10634). This change should not be breaking, as using the uv Python versions with `py` requires explicit opt in. You can opt out of this behavior with `uv python install --no-registry` or `UV_PYTHON_INSTALL_REGISTRY=0`. - **Prompt before removing an existing directory in `uv venv` ([#&#8203;14309](https://redirect.github.com/astral-sh/uv/pull/14309))** Previously, `uv venv` would remove an existing virtual environment without confirmation. While this is consistent with the behavior of project commands (e.g., `uv sync`), it's surprising to users that are using imperative workflows (i.e., `uv pip`). Now, `uv venv` will prompt for confirmation before removing an existing virtual environment. **If not in an interactive context, uv will still remove the virtual environment for backwards compatibility. However, this behavior is likely to change in a future release.** The behavior for other commands (e.g., `uv sync`) is unchanged. You can opt out of this behavior by setting `UV_VENV_CLEAR=1` or passing the `--clear` flag. - **Validate that discovered interpreters meet the Python preference ([#&#8203;7934](https://redirect.github.com/astral-sh/uv/pull/7934))** uv allows opting out of its managed Python versions with the `--no-managed-python` and `python-preference` options. Previously, uv would not enforce this option for Python interpreters discovered on the `PATH`. For example, if a symlink to a managed Python interpreter was created, uv would allow it to be used even if `--no-managed-python` was provided. Now, uv ignores Python interpreters that do not match the Python preference *unless* they are in an active virtual environment or are explicitly requested, e.g., with `--python /path/to/python3.13`. Similarly, uv would previously not invalidate existing project environments if they did not match the Python preference. Now, uv will invalidate and recreate project environments when the Python preference changes. You can opt out of this behavior by providing the explicit path to the Python interpreter providing `--managed-python` / `--no-managed-python` matching the interpreter you want. - **Install dependencies without build systems when they are `path` sources ([#&#8203;14413](https://redirect.github.com/astral-sh/uv/pull/14413))** When working on a project, uv uses the [presence of a build system](https://docs.astral.sh/uv/concepts/projects/config/#build-systems) to determine if it should be built and installed into the environment. However, when a project is a dependency of another project, it can be surprising for the dependency to be missing from the environment. Previously, uv would not build and install dependencies with [`path` sources](https://docs.astral.sh/uv/concepts/projects/dependencies/#path) unless they declared a build system or set `tool.uv.package = true`. Now, dependencies with `path` sources are built and installed regardless of the presence of a build system. If a build system is not present, the `setuptools.build_meta:__legacy__ ` backend will be used (per [PEP 517](https://peps.python.org/pep-0517/#source-trees)). You can opt out of this behavior by setting `package = false` in the source declaration, e.g.: ```toml [tool.uv.sources] foo = { path = "./foo", package = false } ``` Or, by setting `tool.uv.package = false` in the dependent `pyproject.toml`. See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies) for details. - **Install dependencies without build systems when they are workspace members ([#&#8203;14663](https://redirect.github.com/astral-sh/uv/pull/14663))** As described above for dependencies with `path` sources, uv previously would not build and install workspace members that did not declare a build system. Now, uv will build and install workspace members that are a dependency of *another* workspace member regardless of the presence of a build system. The behavior is unchanged for workspace members that are not included in the `project.dependencies`, `project.optional-dependencies`, or `dependency-groups` tables of another workspace member. You can opt out of this behavior by setting `tool.uv.package = false` in the workspace member's `pyproject.toml`. See the documentation on [virtual dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/#virtual-dependencies) for details. - **Bump `--python-platform linux` to `manylinux_2_28` ([#&#8203;14300](https://redirect.github.com/astral-sh/uv/pull/14300))** uv allows performing [platform-specific resolution](https://docs.astral.sh/uv/concepts/resolution/#platform-specific-resolution) for explicit targets and provides short aliases, e.g., `linux`, for common targets. Previously, the default target for `--python-platform linux` was `manylinux_2_17`, which is compatible with most Linux distributions from 2014 or newer. We now default to `manylinux_2_28`, which is compatible with most Linux distributions from 2019 or newer. This change follows the lead of other tools, such as `cibuildwheel`, which changed their default to `manylinux_2_28` in [Mar 2025](https://redirect.github.com/pypa/cibuildwheel/pull/2330). This change only affects users requesting a specific target platform. Otherwise, uv detects the `manylinux` target from your local glibc version. You can opt out of this behavior by using `--python-platform x86_64-manylinux_2_17` instead. - **Remove `uv version` fallback ([#&#8203;14161](https://redirect.github.com/astral-sh/uv/pull/14161))** In [Apr 2025](https://redirect.github.com/astral-sh/uv/pull/12349), uv changed the `uv version` command to an interface for viewing and updating the version of the current project. However, when outside a project, `uv version` would continue to display uv's version for backwards compatibility. Now, when used outside of a project, `uv version` will fail. You cannot opt out of this behavior. Use `uv self version` instead. - **Require `--global` for removal of the global Python pin ([#&#8203;14169](https://redirect.github.com/astral-sh/uv/pull/14169))** Previously, `uv python pin --rm` would allow you to remove the global Python pin without opt in. Now, uv requires the `--global` flag to remove the global Python pin. You cannot opt out of this behavior. Use the `--global` flag instead. - **Support conflicting editable settings across groups ([#&#8203;14197](https://redirect.github.com/astral-sh/uv/pull/14197))** Previously, uv would always treat a package as editable if any requirement requested it as editable. However, this prevented users from declaring `path` sources that toggled the `editable` setting across dependency groups. Now, uv allows declaring different `editable` values for conflicting groups. However, if a project includes a path dependency twice, once with `editable = true` and once without any editable annotation, those are now considered conflicting, and uv will exit with an error. You cannot opt out of this behavior. Use consistent `editable` settings or [mark groups as conflicting](https://docs.astral.sh/uv/concepts/projects/config/#conflicting-dependencies). - **Make `uv_build` the default build backend in `uv init` ([#&#8203;14661](https://redirect.github.com/astral-sh/uv/pull/14661))** The uv build backend (`uv_build`) was [stabilized in uv 0.7.19](https://redirect.github.com/astral-sh/uv/releases/tag/0.7.19). Now, it is the default build backend for `uv init --package` and `uv init --lib`. Previously, `hatchling` was the default build backend. A build backend is still not used without opt-in in `uv init`, but we expect to change this in a future release. You can opt out of this behavior with `uv init --build-backend hatchling`. - **Set default `UV_TOOL_BIN_DIR` on Docker images ([#&#8203;13391](https://redirect.github.com/astral-sh/uv/pull/13391))** Previously, `UV_TOOL_BIN_DIR` was not set in Docker images which meant that `uv tool install` did not install tools into a directory on the `PATH` without additional configuration. Now, `UV_TOOL_BIN_DIR` is set to `/usr/local/bin` in all Docker derived images. When the default image user is overridden (e.g. `USER <UID>`) with a less privileged user, this may cause `uv tool install` to fail. You can opt out of this behavior by setting an alternative `UV_TOOL_BIN_DIR`. - **Update `--check` to return an exit code of 1 ([#&#8203;14167](https://redirect.github.com/astral-sh/uv/pull/14167))** uv uses an exit code of 1 to indicate a "successful failure" and an exit code of 2 to indicate an "error". Previously, `uv lock --check` and `uv sync --check` would exit with a code of 2 when the lockfile or environment were outdated. Now, uv will exit with a code of 1. You cannot opt out of this behavior. - **Use an ephemeral environment for `uv run --with` invocations ([#&#8203;14447](https://redirect.github.com/astral-sh/uv/pull/14447))** When using `uv run --with`, uv layers the requirements requested using `--with` into another virtual environment and caches it. Previously, uv would invoke the Python interpreter in this layered environment. However, this allows poisoning the cached environment and introduces race conditions for concurrent invocations. Now, uv will layer *another* empty virtual environment on top of the cached environment and invoke the Python interpreter there. This should only cause breakage in cases where the environment is being inspected at runtime. You cannot opt out of this behavior. - **Restructure the `uv venv` command output and exit codes ([#&#8203;14546](https://redirect.github.com/astral-sh/uv/pull/14546))** Previously, uv used `miette` to format the `uv venv` output. However, this was inconsistent with most of the uv CLI. Now, the output is a little different and the exit code has switched from 1 to 2 for some error cases. You cannot opt out of this behavior. - **Default to `--workspace` when adding subdirectories ([#&#8203;14529](https://redirect.github.com/astral-sh/uv/pull/14529))** When using `uv add` to add a subdirectory in a workspace, uv now defaults to adding the target as a workspace member. You can opt out of this behavior by providing `--no-workspace`. - **Add missing validations for disallowed `uv.toml` fields ([#&#8203;14322](https://redirect.github.com/astral-sh/uv/pull/14322))** uv does not allow some settings in the `uv.toml`. Previously, some settings were silently ignored when present in the `uv.toml`. Now, uv will error. You cannot opt out of this behavior. Use `--no-config` or remove the invalid settings. ##### Configuration - Add support for toggling Python bin and registry install options via env vars ([#&#8203;14662](https://redirect.github.com/astral-sh/uv/pull/14662)) ### [`v0.7.22`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0722) [Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.21...0.7.22) ##### Python - Upgrade GraalPy to 24.2.2 See the [GraalPy release notes](https://redirect.github.com/oracle/graalpython/releases/tag/graal-24.2.2) for more details. ##### Configuration - Add `UV_COMPILE_BYTECODE_TIMEOUT` environment variable ([#&#8203;14369](https://redirect.github.com/astral-sh/uv/pull/14369)) - Allow users to override index `cache-control` headers ([#&#8203;14620](https://redirect.github.com/astral-sh/uv/pull/14620)) - Add `UV_LIBC` to override libc selection in multi-libc environment ([#&#8203;14646](https://redirect.github.com/astral-sh/uv/pull/14646)) ##### Bug fixes - Fix `--all-arches` when paired with `--only-downloads` ([#&#8203;14629](https://redirect.github.com/astral-sh/uv/pull/14629)) - Skip Windows Python interpreters that return a broken MSIX package code ([#&#8203;14636](https://redirect.github.com/astral-sh/uv/pull/14636)) - Warn on invalid `uv.toml` when provided via direct path ([#&#8203;14653](https://redirect.github.com/astral-sh/uv/pull/14653)) - Improve async signal safety in Windows exception handler ([#&#8203;14619](https://redirect.github.com/astral-sh/uv/pull/14619)) ##### Documentation - Mention the `revision` in the lockfile versioning doc ([#&#8203;14634](https://redirect.github.com/astral-sh/uv/pull/14634)) - Move "Conflicting dependencies" to the "Resolution" page ([#&#8203;14633](https://redirect.github.com/astral-sh/uv/pull/14633)) - Rename "Dependency specifiers" section to exclude PEP 508 reference ([#&#8203;14631](https://redirect.github.com/astral-sh/uv/pull/14631)) - Suggest `uv cache clean` prior to `--reinstall` ([#&#8203;14659](https://redirect.github.com/astral-sh/uv/pull/14659)) ##### Preview features - Make preview Python registration on Windows non-fatal ([#&#8203;14614](https://redirect.github.com/astral-sh/uv/pull/14614)) - Update preview installation of Python executables to be non-fatal ([#&#8203;14612](https://redirect.github.com/astral-sh/uv/pull/14612)) - Add `uv python update-shell` ([#&#8203;14627](https://redirect.github.com/astral-sh/uv/pull/14627)) ### [`v0.7.21`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0721) [Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.20...0.7.21) ##### Python - Restore the SQLite `fts4`, `fts5`, `rtree`, and `geopoly` extensions on macOS and Linux See the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250712) for more details. ##### Enhancements - Add `--python-platform` to `uv sync` ([#&#8203;14320](https://redirect.github.com/astral-sh/uv/pull/14320)) - Support pre-releases in `uv version --bump` ([#&#8203;13578](https://redirect.github.com/astral-sh/uv/pull/13578)) - Add `-w` shorthand for `--with` ([#&#8203;14530](https://redirect.github.com/astral-sh/uv/pull/14530)) - Add an exception handler on Windows to display information on crash ([#&#8203;14582](https://redirect.github.com/astral-sh/uv/pull/14582)) - Add hint when Python downloads are disabled ([#&#8203;14522](https://redirect.github.com/astral-sh/uv/pull/14522)) - Add `UV_HTTP_RETRIES` to customize retry counts ([#&#8203;14544](https://redirect.github.com/astral-sh/uv/pull/14544)) - Follow leaf symlinks matched by globs in `cache-key` ([#&#8203;13438](https://redirect.github.com/astral-sh/uv/pull/13438)) - Support parent path components (`..`) in globs in `cache-key` ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469)) - Improve `cache-key` performance ([#&#8203;13469](https://redirect.github.com/astral-sh/uv/pull/13469)) ##### Preview features - Add `uv sync --output-format json` ([#&#8203;13689](https://redirect.github.com/astral-sh/uv/pull/13689)) ##### Bug fixes - Do not re-resolve with a new Python version in `uv tool` if it is incompatible with `--python` ([#&#8203;14606](https://redirect.github.com/astral-sh/uv/pull/14606)) ##### Documentation - Document how to nest dependency groups with `include-group` ([#&#8203;14539](https://redirect.github.com/astral-sh/uv/pull/14539)) - Fix repeated word in Pyodide doc ([#&#8203;14554](https://redirect.github.com/astral-sh/uv/pull/14554)) - Update CONTRIBUTING.md with instructions to format Markdown files via Docker ([#&#8203;14246](https://redirect.github.com/astral-sh/uv/pull/14246)) - Fix version number for `setup-python` ([#&#8203;14533](https://redirect.github.com/astral-sh/uv/pull/14533)) ### [`v0.7.20`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0720) [Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.19...0.7.20) ##### Python - Add Python 3.14.0b4 - Add zstd support to Python 3.14 on Unix (it already was available on Windows) - Add PyPy 7.3.20 (for Python 3.11.13) See the [PyPy](https://pypy.org/posts/2025/07/pypy-v7320-release.html) and [`python-build-standalone`](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250708) release notes for more details. ##### Enhancements - Add `--workspace` flag to `uv add` ([#&#8203;14496](https://redirect.github.com/astral-sh/uv/pull/14496)) - Add auto-detection for Intel GPUs ([#&#8203;14386](https://redirect.github.com/astral-sh/uv/pull/14386)) - Drop trailing arguments when writing shebangs ([#&#8203;14519](https://redirect.github.com/astral-sh/uv/pull/14519)) - Add debug message when skipping Python downloads ([#&#8203;14509](https://redirect.github.com/astral-sh/uv/pull/14509)) - Add support for declaring multiple modules in namespace packages ([#&#8203;14460](https://redirect.github.com/astral-sh/uv/pull/14460)) ##### Bug fixes - Revert normalization of trailing slashes on index URLs ([#&#8203;14511](https://redirect.github.com/astral-sh/uv/pull/14511)) - Fix forced resolution with all extras in `uv version` ([#&#8203;14434](https://redirect.github.com/astral-sh/uv/pull/14434)) - Fix handling of pre-releases in preferences ([#&#8203;14498](https://redirect.github.com/astral-sh/uv/pull/14498)) - Remove transparent variants in `uv-extract` to enable retries ([#&#8203;14450](https://redirect.github.com/astral-sh/uv/pull/14450)) ##### Rust API - Add method to get packages involved in a `NoSolutionError` ([#&#8203;14457](https://redirect.github.com/astral-sh/uv/pull/14457)) - Make `ErrorTree` for `NoSolutionError` public ([#&#8203;14444](https://redirect.github.com/astral-sh/uv/pull/14444)) ##### Documentation - Finish incomplete sentence in pip migration guide ([#&#8203;14432](https://redirect.github.com/astral-sh/uv/pull/14432)) - Remove `cache-dependency-glob` examples for `setup-uv` ([#&#8203;14493](https://redirect.github.com/astral-sh/uv/pull/14493)) - Remove `uv pip sync` suggestion with `pyproject.toml` ([#&#8203;14510](https://redirect.github.com/astral-sh/uv/pull/14510)) - Update documentation for GitHub to use `setup-uv@v6` ([#&#8203;14490](https://redirect.github.com/astral-sh/uv/pull/14490)) ### [`v0.7.19`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0719) [Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.7.18...0.7.19) The **[uv build backend](https://docs.astral.sh/uv/concepts/build-backend/) is now stable**, and considered ready for production use. The uv build backend is a great choice for pure Python projects. It has reasonable defaults, with the goal of requiring zero configuration for most users, but provides flexible configuration to accommodate most Python project structures. It integrates tightly with uv, to improve messaging and user experience. It validates project metadata and structures, preventing common mistakes. And, finally, it's very fast — `uv sync` on a new project (from `uv init`) is 10-30x faster than with other build backends. To use uv as a build backend in an existing project, add `uv_build` to the `[build-system]` section in your `pyproject.toml`: ```toml [build-system] requires = ["uv_build>=0.7.19,<0.8.0"] build-backend = "uv_build" ``` In a future release, it will r Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent 15133b4 commit 0b1a882

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

charmcraft.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,18 @@ parts:
2424
# Use environment variable instead of `--break-system-packages` to avoid failing on older
2525
# versions of pip that do not recognize `--break-system-packages`
2626
# `--user` needed (in addition to `--break-system-packages`) for Ubuntu >=24.04
27-
PIP_BREAK_SYSTEM_PACKAGES=true python3 -m pip install --user --upgrade pip==25.0.1 # renovate: charmcraft-pip-latest
27+
PIP_BREAK_SYSTEM_PACKAGES=true python3 -m pip install --user --upgrade pip==25.1.1 # renovate: charmcraft-pip-latest
2828
2929
# Use uv to install poetry so that a newer version of Python can be installed if needed by poetry
30-
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.6.9/uv-installer.sh | sh # renovate: charmcraft-uv-latest
30+
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.8.0/uv-installer.sh | sh # renovate: charmcraft-uv-latest
3131
# poetry 2.0.0 requires Python >=3.9
3232
if ! "$HOME/.local/bin/uv" python find '>=3.9'
3333
then
3434
# Use first Python version that is >=3.9 and available in an Ubuntu LTS
3535
# (to reduce the number of Python versions we use)
3636
"$HOME/.local/bin/uv" python install 3.10.12 # renovate: charmcraft-python-ubuntu-22.04
3737
fi
38-
"$HOME/.local/bin/uv" tool install --no-python-downloads --python '>=3.9' poetry==2.1.1 --with poetry-plugin-export==1.9.0 # renovate: charmcraft-poetry-latest
38+
"$HOME/.local/bin/uv" tool install --no-python-downloads --python '>=3.9' poetry==2.1.3 --with poetry-plugin-export==1.9.0 # renovate: charmcraft-poetry-latest
3939
4040
ln -sf "$HOME/.local/bin/poetry" /usr/local/bin/poetry
4141
# "charm-poetry" part name is arbitrary; use for consistency
@@ -74,7 +74,7 @@ parts:
7474
# rpds-py (Python package) >=0.19.0 requires rustc >=1.76, which is not available in the
7575
# Ubuntu 22.04 archive. Install rustc and cargo using rustup instead of the Ubuntu archive
7676
rustup set profile minimal
77-
rustup default 1.85.1 # renovate: charmcraft-rust-latest
77+
rustup default 1.88.0 # renovate: charmcraft-rust-latest
7878
7979
craftctl default
8080
# Include requirements.txt in *.charm artifact for easier debugging

0 commit comments

Comments
 (0)