Subject: CVS commit: pkgsrc/lang/rust
From: Havard Eidnes
Date: 2024-11-24 17:13:43
Message id: 20241124161343.DF556FC7D@cvs.NetBSD.org

Log Message:
lang/rust: update to version 1.81.0, taken from pkgsrc-wip.

Pkgsrc changes:
 * Adapt patches, apply to new vendored crates where needed.
 * Back-port rust pull request 130110, "make dist vendoring configurable"
 * Disable "dist vendoring", otherwise cargo would try to access
   the network during the build phase.

Upstream changes:

Version 1.81.0 (2024-09-05)
==========================

Language
--------

- [Abort on uncaught panics in `extern "C"` functions.]
  (https://github.com/rust-lang/rust/pull/116088/)
- [Fix ambiguous cases of multiple `&` in elided self lifetimes.]
  (https://github.com/rust-lang/rust/pull/117967/)
- [Stabilize `#[expect]` for lints (RFC 2383),]
  (https://github.com/rust-lang/rust/pull/120924/) like `#[allow]`
  with a warning if the lint is _not_ fulfilled.
- [Change method resolution to constrain hidden types instead of
  rejecting method candidates.]
  (https://github.com/rust-lang/rust/pull/123962/)
- [Bump `elided_lifetimes_in_associated_constant` to deny.]
  (https://github.com/rust-lang/rust/pull/124211/)
- [`offset_from`: always allow pointers to point to the same
  address.] (https://github.com/rust-lang/rust/pull/124921/)
- [Allow constraining opaque types during subtyping in the trait
  system.] (https://github.com/rust-lang/rust/pull/125447/)
- [Allow constraining opaque types during various unsizing casts.]
  (https://github.com/rust-lang/rust/pull/125610/)
- [Deny keyword lifetimes pre-expansion.]
  (https://github.com/rust-lang/rust/pull/126762/)

Compiler
--------

- [Make casts of pointers to trait objects stricter.]
  (https://github.com/rust-lang/rust/pull/120248/)
- [Check alias args for well-formedness even if they have escaping
  bound vars.] (https://github.com/rust-lang/rust/pull/123737/)
- [Deprecate no-op codegen option `-Cinline-threshold=...`.]
  (https://github.com/rust-lang/rust/pull/124712/)
- [Re-implement a type-size based limit.]
  (https://github.com/rust-lang/rust/pull/125507/)
- [Properly account for alignment in `transmute` size checks.]
  (https://github.com/rust-lang/rust/pull/125740/)
- [Remove the `box_pointers` lint.]
  (https://github.com/rust-lang/rust/pull/126018/)
- [Ensure the interpreter checks bool/char for validity when they
  are used in a cast.] (https://github.com/rust-lang/rust/pull/126265/)
- [Improve coverage instrumentation for functions containing nested
  items.] (https://github.com/rust-lang/rust/pull/127199/)
- Target changes:
  - [Add Tier 3 `no_std` Xtensa targets:]
    (https://github.com/rust-lang/rust/pull/125141/) `xtensa-esp32-none-elf`,
    `xtensa-esp32s2-none-elf`, `xtensa-esp32s3-none-elf`
  - [Add Tier 3 `std` Xtensa targets:]
    (https://github.com/rust-lang/rust/pull/126380/) `xtensa-esp32-espidf`,
    `xtensa-esp32s2-espidf`, `xtensa-esp32s3-espidf`
  - [Add Tier 3 i686 Redox OS target:]
    (https://github.com/rust-lang/rust/pull/126192/) `i686-unknown-redox`
  - [Promote `arm64ec-pc-windows-msvc` to Tier 2.]
    (https://github.com/rust-lang/rust/pull/126039/)
  - [Promote `wasm32-wasip2` to Tier 2.]
    (https://github.com/rust-lang/rust/pull/126967/)
  - [Promote `loongarch64-unknown-linux-musl` to Tier 2 with host
    tools.] (https://github.com/rust-lang/rust/pull/126298/)
  - [Enable full tools and profiler for LoongArch Linux targets.]
    (https://github.com/rust-lang/rust/pull/127078/)
  - [Unconditionally warn on usage of `wasm32-wasi`.]
    (https://github.com/rust-lang/rust/pull/126662/) (see compatibility
    note below)
  - Refer to Rust's [platform support page][platform-support-doc]
    for more information on Rust's tiered platform support.

Libraries
---------

- [Split core's `PanicInfo` and std's `PanicInfo`.]
  (https://github.com/rust-lang/rust/pull/115974/) (see compatibility
  note below)
- [Generalize `{Rc,Arc}::make_mut()` to unsized types.]
  (https://github.com/rust-lang/rust/pull/116113/)
- [Replace sort implementations with stable `driftsort` and unstable
  `ipnsort`.] (https://github.com/rust-lang/rust/pull/124032/) All
  `slice::sort*` and `slice::select_nth*` methods are expected to
  see significant performance improvements. See the [research
  project] (https://github.com/Voultapher/sort-research-rs) for
  more details.
- [Document behavior of `create_dir_all` with respect to empty
  paths.] (https://github.com/rust-lang/rust/pull/125112/)
- [Fix interleaved output in the default panic hook when multiple
  threads panic simultaneously.]
  (https://github.com/rust-lang/rust/pull/127397/)
- Fix `Command`'s batch files argument escaping not working when
  file name has trailing whitespace or periods (CVE-2024-43402).

Stabilized APIs
---------------

- [`core::error`] (https://doc.rust-lang.org/stable/core/error/index.html)
- [`hint::assert_unchecked`]
  (https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html)
- [`fs::exists`] (https://doc.rust-lang.org/stable/std/fs/fn.exists.html)
- [`AtomicBool::fetch_not`]
  \ 
(https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not)
- [`Duration::abs_diff`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff)
- [`IoSlice::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance)
- [`IoSlice::advance_slices`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices)
- [`IoSliceMut::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance)
- [`IoSliceMut::advance_slices`]
  \ 
(https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices)
- [`PanicHookInfo`]
  (https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html)
- [`PanicInfo::message`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message)
- [`PanicMessage`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html)

These APIs are now stable in const contexts:

- [`char::from_u32_unchecked`]
  (https://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html)
  (function)
- [`char::from_u32_unchecked`]
  \ 
(https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked)
  (method)
- [`CStr::count_bytes`]
  \ 
(https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)
- [`CStr::from_ptr`]
  (https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr)

Cargo
-----

- [Generated `.cargo_vcs_info.json` is always included, even when
  `--allow-dirty` is passed.]
  (https://github.com/rust-lang/cargo/pull/13960/)
- [Disallow `package.license-file` and `package.readme` pointing
  to non-existent files during packaging.]
  (https://github.com/rust-lang/cargo/pull/13921/)
- [Disallow passing `--release`/`--debug` flag along with the
  `--profile` flag.] (https://github.com/rust-lang/cargo/pull/13971/)
- [Remove `lib.plugin` key support in `Cargo.toml`. Rust plugin
  support has been deprecated for four years and was removed in
  1.75.0.] (https://github.com/rust-lang/cargo/pull/13902/)

Compatibility Notes
-------------------

* Usage of the `wasm32-wasi` target will now issue a compiler
  warning and request users switch to the `wasm32-wasip1` target
  instead. Both targets are the same, `wasm32-wasi` is only being
  renamed, and this [change to the WASI target]
  (https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html)
  is being done to enable removing `wasm32-wasi` in January 2025.

* We have renamed `std::panic::PanicInfo` to `std::panic::PanicHookInfo`.
  The old name will continue to work as an alias, but will result in
  a deprecation warning starting in Rust 1.82.0.

  `core::panic::PanicInfo` will remain unchanged, however, as this
  is now a *different type*.

  The reason is that these types have different roles:
  `std::panic::PanicHookInfo` is the argument to the [panic
  hook](https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html)
  in std context (where panics can have an arbitrary payload),
  while `core::panic::PanicInfo` is the argument to the
  [`#[panic_handler]`](https://doc.rust-lang.org/nomicon/panic-handler.html)
  in no_std context (where panics always carry a formatted *message*).
  Separating these types allows us to add more useful methods to
  these types, such as `std::panic::PanicHookInfo::payload_as_str()`
  and `core::panic::PanicInfo::message()`.

* The new sort implementations may panic if a type's implementation
  of [`Ord`](https://doc.rust-lang.org/std/cmp/trait.Ord.html) (or
  the given comparison function) does not implement a [total
  order](https://en.wikipedia.org/wiki/Total_order) as the trait
  requires. `Ord`'s supertraits (`PartialOrd`, `Eq`, and `PartialEq`)
  must also be consistent. The previous implementations would not
  "notice" any problem, but the new implementations have a good chance
  of detecting inconsistencies, throwing a panic rather than returning
  knowingly unsorted data.
* [In very rare cases, a change in the internal evaluation order of the trait
  solver may result in new fatal overflow errors.]
  (https://github.com/rust-lang/rust/pull/126128)

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.

- [Add a Rust-for Linux `auto` CI job to check kernel builds.]
  (https://github.com/rust-lang/rust/pull/125209/)

Files:
RevisionActionfile
1.321modifypkgsrc/lang/rust/Makefile
1.40modifypkgsrc/lang/rust/cargo.mk
1.12modifypkgsrc/lang/rust/cross.mk
1.176modifypkgsrc/lang/rust/distinfo
1.13modifypkgsrc/lang/rust/do-cross.mk
1.42modifypkgsrc/lang/rust/options.mk
1.11modifypkgsrc/lang/rust/rust.mk
1.18modifypkgsrc/lang/rust/patches/patch-compiler_rustc__codegen__ssa_src_back_linker.rs
1.24modifypkgsrc/lang/rust/patches/patch-src_bootstrap_bootstrap.py
1.3modifypkgsrc/lang/rust/patches/patch-src_bootstrap_src_core_build__steps_compile.rs
1.15modifypkgsrc/lang/rust/patches/patch-src_tools_cargo_tests_testsuite_build.rs
1.1addpkgsrc/lang/rust/patches/patch-config.example.toml
1.1addpkgsrc/lang/rust/patches/patch-src_bootstrap_src_core_build__steps_dist.rs
1.1addpkgsrc/lang/rust/patches/patch-src_bootstrap_src_core_config_config.rs
1.1addpkgsrc/lang/rust/patches/patch-vendor_memchr-2.7.4_src_arch_aarch64_memchr.rs
1.1addpkgsrc/lang/rust/patches/patch-vendor_memchr-2.7.4_src_arch_aarch64_mod.rs
1.1addpkgsrc/lang/rust/patches/patch-vendor_memchr-2.7.4_src_memchr.rs
1.1addpkgsrc/lang/rust/patches/patch-vendor_memchr-2.7.4_src_memmem_searcher.rs
1.1addpkgsrc/lang/rust/patches/patch-vendor_memchr-2.7.4_src_vector.rs
1.1removepkgsrc/lang/rust/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_mips.rs
1.2removepkgsrc/lang/rust/patches/patch-vendor_libc-0.2.148_src_unix_bsd_netbsdlike_netbsd_riscv64.rs
1.1removepkgsrc/lang/rust/patches/patch-vendor_libc-0.2.153_src_unix_solarish_mod.rs
1.1removepkgsrc/lang/rust/patches/patch-vendor_libc-0.2.154_src_unix_solarish_mod.rs