Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features by alexcrichton · Pull Request #131080 · rust-lang/rust

@rustbot rustbot added S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

T-compiler

Relevant to the compiler team, which will review and decide on the PR/issue.

labels

Oct 1, 2024

jieyouxu

@alexcrichton alexcrichton changed the title Stabilize WebAssembly multivalue and reference-types target features Stabilize WebAssembly multivalue, reference-types, and tail-call target features

Oct 1, 2024

@alexcrichton alexcrichton changed the title Stabilize WebAssembly multivalue, reference-types, and tail-call target features Stabilize WebAssembly multivalue, reference-types, and tail-call target features

Oct 1, 2024

@alexcrichton

…` target features

For the `multivalue` and `reference-types` features this commit is
similar to rust-lang#117457 in that it's stabilizing target features specific to
WebAssembly targets. The previous PR left out these two features because
they weren't expected to change much about compiled code so it was
unclear what the rationale was. It has [since been discovered][blog]
that `reference-types` can be useful as it changes the binary format of
the `call_indirect` instruction. Additionally [on Zulip][zulip] there's
a use case of detecting these features at compile time and generating a
compile error to better warn users about features not supported on
engines.

This PR then additionally adds the `tail-call` feature which corresponds
to the [tail-call] proposal to WebAssembly. This feature advanced to
"phase 4" in the WebAssembly CG awhile back and has been supported in
LLVM for quite some time now. Engines are finishing up implementations
or have already shipped implementations, so while this is a bit of a
late addition to Rust itself it reflects the current status of
WebAssembly's state of the feature.

A test has been added here not only for these features but other
WebAssembly features as well to showcase that they're usable without
feature gates in stable Rust.

[blog]: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/wasm32.20reference-types.20.2F.20multivalue.20in.201.2E82-beta.20not.20enabled/near/473893987
[tail-call]: https://github.com/webassembly/tail-call

bors added a commit to rust-lang-ci/rust that referenced this pull request

Nov 11, 2024
Rollup of 3 pull requests

Successful merges:

 - rust-lang#131080 (Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features)
 - rust-lang#132871 (add regression test for rust-lang#85763)
 - rust-lang#132878 (triagebot: Assign rustdoc tests to T-rustdoc.)

r? `@ghost`
`@rustbot` modify labels: rollup

rust-timer added a commit to rust-lang-ci/rust that referenced this pull request

Nov 11, 2024
Rollup merge of rust-lang#131080 - alexcrichton:stabilize-more-wasm-target-features, r=petrochenkov

Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features

For the `multivalue` and `reference-types` features this commit is
similar to rust-lang#117457 in that it's stabilizing target features specific to
WebAssembly targets. The previous PR left out these two features because
they weren't expected to change much about compiled code so it was
unclear what the rationale was. It has [since been discovered][blog]
that `reference-types` can be useful as it changes the binary format of
the `call_indirect` instruction. Additionally [on Zulip][zulip] there's
a use case of detecting these features at compile time and generating a
compile error to better warn users about features not supported on
engines.

This PR then additionally adds the `tail-call` feature which corresponds
to the [tail-call] proposal to WebAssembly. This feature advanced to
"phase 4" in the WebAssembly CG awhile back and has been supported in
LLVM for quite some time now. Engines are finishing up implementations
or have already shipped implementations, so while this is a bit of a
late addition to Rust itself it reflects the current status of
WebAssembly's state of the feature.

A test has been added here not only for these features but other
WebAssembly features as well to showcase that they're usable without
feature gates in stable Rust.

[blog]: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/wasm32.20reference-types.20.2F.20multivalue.20in.201.2E82-beta.20not.20enabled/near/473893987
[tail-call]: https://github.com/webassembly/tail-call

github-merge-queue bot pushed a commit to rust-lang/reference that referenced this pull request

Nov 11, 2024
This is intended to be a sibling PR to rust-lang/rust#131080 to update
the reference documentation for wasm supporting two more features.

mati865 pushed a commit to mati865/rust that referenced this pull request

Nov 12, 2024
…arget-features, r=petrochenkov

Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features

For the `multivalue` and `reference-types` features this commit is
similar to rust-lang#117457 in that it's stabilizing target features specific to
WebAssembly targets. The previous PR left out these two features because
they weren't expected to change much about compiled code so it was
unclear what the rationale was. It has [since been discovered][blog]
that `reference-types` can be useful as it changes the binary format of
the `call_indirect` instruction. Additionally [on Zulip][zulip] there's
a use case of detecting these features at compile time and generating a
compile error to better warn users about features not supported on
engines.

This PR then additionally adds the `tail-call` feature which corresponds
to the [tail-call] proposal to WebAssembly. This feature advanced to
"phase 4" in the WebAssembly CG awhile back and has been supported in
LLVM for quite some time now. Engines are finishing up implementations
or have already shipped implementations, so while this is a bit of a
late addition to Rust itself it reflects the current status of
WebAssembly's state of the feature.

A test has been added here not only for these features but other
WebAssembly features as well to showcase that they're usable without
feature gates in stable Rust.

[blog]: https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/wasm32.20reference-types.20.2F.20multivalue.20in.201.2E82-beta.20not.20enabled/near/473893987
[tail-call]: https://github.com/webassembly/tail-call

mati865 pushed a commit to mati865/rust that referenced this pull request

Nov 12, 2024
Rollup of 3 pull requests

Successful merges:

 - rust-lang#131080 (Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features)
 - rust-lang#132871 (add regression test for rust-lang#85763)
 - rust-lang#132878 (triagebot: Assign rustdoc tests to T-rustdoc.)

r? `@ghost`
`@rustbot` modify labels: rollup

cameraMeasurementTech added a commit to cameraMeasurementTech/rust-lang that referenced this pull request

Dec 11, 2024
This is intended to be a sibling PR to rust-lang/rust#131080 to update
the reference documentation for wasm supporting two more features.

tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request

Jan 22, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.83.0` -> `1.84.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>rust-lang/rust (rust)</summary>

### [`v1.84.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1840-2025-01-09)

[Compare Source](rust-lang/rust@1.83.0...1.84.0)

\==========================

<a id="
Language"></a>

## Language

-   [Allow `#[deny]` inside `#[forbid]` as a no-op](rust-lang/rust#121560)
-   [Show a warning when `-Ctarget-feature` is used to toggle features that can lead to unsoundness due to ABI mismatches](rust-lang/rust#129884)
-   [Use the next-generation trait solver in coherence](rust-lang/rust#130654)
-   [Allow coercions to drop the principal of trait objects](rust-lang/rust#131857)
-   [Support `/` as the path separator for `include!()` in all cases on Windows](rust-lang/rust#125205)
-   [Taking a raw ref (`raw (const|mut)`) of a deref of a pointer (`*ptr`) is now safe](rust-lang/rust#129248)
-   [Stabilize s390x inline assembly](rust-lang/rust#131258)
-   [Stabilize Arm64EC inline assembly](rust-lang/rust#131781)
-   [Lint against creating pointers to immediately dropped temporaries](rust-lang/rust#128985)
-   [Execute drop glue when unwinding in an `extern "C"` function](rust-lang/rust#129582)

<a id="1.84.0-Compiler"></a>

## Compiler

-   [Add `--print host-tuple` flag to print the host target tuple and affirm the "target tuple" terminology over "target triple"](rust-lang/rust#125579)
-   [Declaring functions with a calling convention not supported on the current target now triggers a hard error](rust-lang/rust#129935)
-   [Set up indirect access to external data for `loongarch64-unknown-linux-{musl,ohos}`](rust-lang/rust#131583)
-   [Enable XRay instrumentation for LoongArch Linux targets](rust-lang/rust#131818)
-   [Extend the `unexpected_cfgs` lint to also warn in external macros](rust-lang/rust#132577)
-   [Stabilize WebAssembly `multivalue`, `reference-types`, and `tail-call` target features](rust-lang/rust#131080)
-   [Added Tier 2 support for the `wasm32v1-none` target](rust-lang/rust#131487)

<a id="1.84.0-Libraries"></a>

## Libraries

-   [Implement `From<&mut {slice}>` for `Box/Rc/Arc<{slice}>`](rust-lang/rust#129329)
-   [Move `<float>::copysign`, `<float>::abs`, `<float>::signum` to `core`](rust-lang/rust#131304)
-   [Add `LowerExp` and `UpperExp` implementations to `NonZero`](rust-lang/rust#131377)
-   [Implement `FromStr` for `CString` and `TryFrom<CString>` for `String`](rust-lang/rust#130608)
-   [`std::os::darwin` has been made public](rust-lang/rust#123723)

<a id="1.84.0-Stabilized-APIs"></a>

## Stabilized APIs

-   [`Ipv6Addr::is_unique_local`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unique_local)
-   [`Ipv6Addr::is_unicast_link_local`](https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unicast_link_local)
-   [`core::ptr::with_exposed_provenance`](https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance.html)
-   [`core::ptr::with_exposed_provenance_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance_mut.html)
-   [`<ptr>::addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.addr)
-   [`<ptr>::expose_provenance`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.expose_provenance)
-   [`<ptr>::with_addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.with_addr)
-   [`<ptr>::map_addr`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.map_addr)
-   [`<int>::isqrt`](https://doc.rust-lang.org/stable/core/primitive.i32.html#method.isqrt)
-   [`<int>::checked_isqrt`](https://doc.rust-lang.org/stable/core/primitive.i32.html#method.checked_isqrt)
-   [`<uint>::isqrt`](https://doc.rust-lang.org/stable/core/primitive.u32.html#method.isqrt)
-   [`NonZero::isqrt`](https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#impl-NonZero%3Cu128%3E/method.isqrt)
-   [`core::ptr::without_provenance`](https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance.html)
-   [`core::ptr::without_provenance_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance_mut.html)
-   [`core::ptr::dangling`](https://doc.rust-lang.org/stable/core/ptr/fn.dangling.html)
-   [`core::ptr::dangling_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.dangling_mut.html)
-   [`Pin::as_deref_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.as_deref_mut)

These APIs are now stable in const contexts

-   [`AtomicBool::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.from_ptr)
-   [`AtomicPtr::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicPtr.html#method.from_ptr)
-   [`AtomicU8::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU8.html#method.from_ptr)
-   [`AtomicU16::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU16.html#method.from_ptr)
-   [`AtomicU32::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU32.html#method.from_ptr)
-   [`AtomicU64::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU64.html#method.from_ptr)
-   [`AtomicUsize::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.from_ptr)
-   [`AtomicI8::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI8.html#method.from_ptr)
-   [`AtomicI16::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI16.html#method.from_ptr)
-   [`AtomicI32::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI32.html#method.from_ptr)
-   [`AtomicI64::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI64.html#method.from_ptr)
-   [`AtomicIsize::from_ptr`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicIsize.html#method.from_ptr)
-   [`<ptr>::is_null`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_null-1)
-   [`<ptr>::as_ref`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_ref-1)
-   [`<ptr>::as_mut`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_mut)
-   [`Pin::new`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new)
-   [`Pin::new_unchecked`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new_unchecked)
-   [`Pin::get_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_ref)
-   [`Pin::into_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.into_ref)
-   [`Pin::get_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_mut)
-   [`Pin::get_unchecked_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_unchecked_mut)
-   [`Pin::static_ref`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_ref)
-   [`Pin::static_mut`](https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_mut)

<a id="1.84.0-Cargo"></a>

## Cargo

-   [Stabilize MSRV-aware resolver config](rust-lang/cargo#14639)
-   [Stabilize resolver v3](rust-lang/cargo#14754)

<a id="1.84-Rustdoc"></a>

## Rustdoc

-   [rustdoc-search: improve type-driven search](rust-lang/rust#127589)

<a id="1.84.0-Compatibility-Notes"></a>

## Compatibility Notes

-   [Enable by default the `LSX` target feature for LoongArch Linux targets](rust-lang/rust#132140)
-   [The unstable `-Zprofile` flag (“gcov-style” coverage instrumentation) has been removed.](rust-lang/rust#131829) This does not affect the stable flags for coverage instrumentation (`-Cinstrument-coverage`) and profile-guided optimization (`-Cprofile-generate`, `-Cprofile-use`), which are unrelated and remain available.
-   Support for the target named `wasm32-wasi` has been removed as the target is now named `wasm32-wasip1`. This completes the [transition](rust-lang/compiler-team#607) [plan](rust-lang/compiler-team#695) for this target following [the introduction of `wasm32-wasip1`](rust-lang/rust#120468) in Rust 1.78. Compiler warnings on [use of `wasm32-wasi`](rust-lang/rust#126662) introduced in Rust 1.81 are now gone as well as the target is removed.
-   [The syntax `&pin (mut|const) T` is now parsed as a type which in theory could affect macro expansion results in some edge cases](rust-lang/rust#130635 (comment))
-   [Legacy syntax for calling `std::arch` functions is no longer permitted to declare items or bodies (such as closures, inline consts, or async blocks).](rust-lang/rust#130443 (comment))
-   [Declaring functions with a calling convention not supported on the current target now triggers a hard error](rust-lang/rust#129935)
-   [The next-generation trait solver is now enabled for coherence, fixing multiple soundness issues](rust-lang/rust#130654)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45Ny4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTAwLjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbIlJlbm92YXRlIEJvdCJdfQ==-->

wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request

Feb 2, 2025
Pkgsrc changes:
 * Adapt patches, one of the patched files were restructured upstream.
 * Checksum changes.

Upstream changes:

Version 1.84.1 (2025-01-30)
==========================

- [Fix ICE 132920 in duplicate-crate diagnostics.]
  (rust-lang/rust#133304)
- [Fix errors for overlapping impls in incremental rebuilds.]
  (rust-lang/rust#133828)
- [Fix slow compilation related to the next-generation trait solver.]
  (rust-lang/rust#135618)
- [Fix debuginfo when LLVM's location discriminator value limit is exceeded.]
  (rust-lang/rust#135643)
- Fixes for building Rust from source:
  - [Only try to distribute `llvm-objcopy` if llvm tools are enabled.]
    (rust-lang/rust#134240)
  - [Add Profile Override for Non-Git Sources.]
    (rust-lang/rust#135433)
  - [Resolve symlinks of LLVM tool binaries before copying them.]
    (rust-lang/rust#135585)
  - [Make it possible to use ci-rustc on tarball sources.]
    (rust-lang/rust#135722)

Version 1.84.0 (2025-01-09)
==========================

Language
--------
- [Allow `#[deny]` inside `#[forbid]` as a no-op]
  (rust-lang/rust#121560)
- [Show a warning when `-Ctarget-feature` is used to toggle features
  that can lead to unsoundness due to ABI mismatches]
  (rust-lang/rust#129884)
- [Use the next-generation trait solver in coherence]
  (rust-lang/rust#130654)
- [Allow coercions to drop the principal of trait objects]
  (rust-lang/rust#131857)
- [Support `/` as the path separator for `include!()` in all cases on Windows]
  (rust-lang/rust#125205)
- [Taking a raw ref (`raw (const|mut)`) of a deref of a pointer
  (`*ptr`) is now safe]
  (rust-lang/rust#129248)
- [Stabilize s390x inline assembly]
  (rust-lang/rust#131258)
- [Stabilize Arm64EC inline assembly]
  (rust-lang/rust#131781)
- [Lint against creating pointers to immediately dropped temporaries]
  (rust-lang/rust#128985)
- [Execute drop glue when unwinding in an `extern "C"` function]
  (rust-lang/rust#129582)

Compiler
--------
- [Add `--print host-tuple` flag to print the host target tuple
  and affirm the "target tuple" terminology over "target triple"]
  (rust-lang/rust#125579)
- [Declaring functions with a calling convention not supported on
  the current target now triggers a hard error]
  (rust-lang/rust#129935)
- [Set up indirect access to external data for
  `loongarch64-unknown-linux-{musl,ohos}`]
  (rust-lang/rust#131583)
- [Enable XRay instrumentation for LoongArch Linux targets]
  (rust-lang/rust#131818)
- [Extend the `unexpected_cfgs` lint to also warn in external macros]
  (rust-lang/rust#132577)
- [Stabilize WebAssembly `multivalue`, `reference-types`, and
  `tail-call` target features]
  (rust-lang/rust#131080)
- [Added Tier 2 support for the `wasm32v1-none` target]
  (rust-lang/rust#131487)

Libraries
---------
- [Implement `From<&mut {slice}>` for `Box/Rc/Arc<{slice}>`]
  (rust-lang/rust#129329)
- [Move `<float>::copysign`, `<float>::abs`, `<float>::signum` to `core`]
  (rust-lang/rust#131304)
- [Add `LowerExp` and `UpperExp` implementations to `NonZero`]
  (rust-lang/rust#131377)
- [Implement `FromStr` for `CString` and `TryFrom<CString>` for `String`]
  (rust-lang/rust#130608)
- [`std::os::darwin` has been made public]
  (rust-lang/rust#130635)

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

- [`Ipv6Addr::is_unique_local`]
  (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unique_local)
- [`Ipv6Addr::is_unicast_link_local`]
  (https://doc.rust-lang.org/stable/core/net/struct.Ipv6Addr.html#method.is_unicast_link_local)
- [`core::ptr::with_exposed_provenance`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance.html)
- [`core::ptr::with_exposed_provenance_mut`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.with_exposed_provenance_mut.html)
- [`<ptr>::addr`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.addr)
- [`<ptr>::expose_provenance`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.expose_provenance)
- [`<ptr>::with_addr`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.with_addr)
- [`<ptr>::map_addr`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.map_addr)
- [`<int>::isqrt`]
  (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.isqrt)
- [`<int>::checked_isqrt`]
  (https://doc.rust-lang.org/stable/core/primitive.i32.html#method.checked_isqrt)
- [`<uint>::isqrt`]
  (https://doc.rust-lang.org/stable/core/primitive.u32.html#method.isqrt)
- [`NonZero::isqrt`]
  (https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#impl-NonZero%3Cu128%3E/method.isqrt)
- [`core::ptr::without_provenance`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance.html)
- [`core::ptr::without_provenance_mut`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.without_provenance_mut.html)
- [`core::ptr::dangling`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.dangling.html)
- [`core::ptr::dangling_mut`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.dangling_mut.html)

These APIs are now stable in const contexts

- [`AtomicBool::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.from_ptr)
- [`AtomicPtr::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicPtr.html#method.from_ptr)
- [`AtomicU8::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU8.html#method.from_ptr)
- [`AtomicU16::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU16.html#method.from_ptr)
- [`AtomicU32::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU32.html#method.from_ptr)
- [`AtomicU64::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicU64.html#method.from_ptr)
- [`AtomicUsize::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicUsize.html#method.from_ptr)
- [`AtomicI8::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI8.html#method.from_ptr)
- [`AtomicI16::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI16.html#method.from_ptr)
- [`AtomicI32::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI32.html#method.from_ptr)
- [`AtomicI64::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicI64.html#method.from_ptr)
- [`AtomicIsize::from_ptr`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicIsize.html#method.from_ptr)
- [`<ptr>::is_null`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.is_null-1)
- [`<ptr>::as_ref`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_ref-1)
- [`<ptr>::as_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.as_mut)
- [`Pin::new`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new)
- [`Pin::new_unchecked`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.new_unchecked)
- [`Pin::get_ref`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_ref)
- [`Pin::into_ref`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.into_ref)
- [`Pin::get_mut`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_mut)
- [`Pin::get_unchecked_mut`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.get_unchecked_mut)
- [`Pin::static_ref`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_ref)
- [`Pin::static_mut`]
  (https://doc.rust-lang.org/stable/core/pin/struct.Pin.html#method.static_mut)

Cargo
-----
- [Stabilize MSRV-aware resolver config]
  (rust-lang/cargo#14639)
- [Stabilize resolver v3]
  (rust-lang/cargo#14754)

Rustdoc
-------
- [rustdoc-search: improve type-driven search]
  (rust-lang/rust#127589)

Compatibility Notes
-------------------
- [Enable by default the `LSX` target feature for LoongArch Linux targets]
  (rust-lang/rust#132140)
- [The unstable `-Zprofile` flag ("gcov-style" coverage instrumentation)
  has been removed.](rust-lang/rust#131829)
  This does not affect the stable flags for coverage instrumentation
  (`-Cinstrument-coverage`) and profile-guided optimization
  (`-Cprofile-generate`, `-Cprofile-use`), which are unrelated and
  remain available.
- Support for the target named `wasm32-wasi` has been removed as
  the target is now named `wasm32-wasip1`. This completes the [transition]
  (rust-lang/compiler-team#607)
  [plan](rust-lang/compiler-team#695) for
  this target following [the introduction of `wasm32-wasip1`]
  (rust-lang/rust#120468) in Rust 1.78.
  Compiler warnings on [use of `wasm32-wasi`]
  (rust-lang/rust#126662)
  introduced in Rust 1.81 are now gone as well as the target is
  removed.
- [The syntax `&pin (mut|const) T` is now parsed as a type which
  in theory could affect macro expansion results in some edge cases]
  (rust-lang/rust#130635 (comment))
- [Legacy syntax for calling `std::arch` functions is no longer
  permitted to declare items or bodies (such as closures, inline
  consts, or async blocks).]
  (rust-lang/rust#130443 (comment))
- The `wasm32-unknown-emscripten` target's binary release of the
  standard library is now [built with the latest emsdk 3.1.68]
  (rust-lang/rust#131533), which fixes an
  ABI-incompatibility with Emscripten >= 3.1.42. If you are locally
  using a version of emsdk with an incompatible ABI (e.g. before
  3.1.42 or a future one), you should build your code with `-Zbuild-std`
  to ensure that `std` uses the correct ABI.
- [Declaring functions with a calling convention not supported on
  the current target now triggers a hard error]
  (rust-lang/rust#129935)
- [The next-generation trait solver is now enabled for coherence,
  fixing multiple soundness issues]
  (rust-lang/rust#130654)