Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

Gelbpunkt
Copy link
Contributor

Since we don't build std for these and don't provide any support for them, these can trivially be changed to link dynamically by default.

Since we don't build std for these and don't provide any support for
them, these can trivially be changed to link dynamically by default.

Signed-off-by: Jens Reidel <[email protected]>
@rustbot
Copy link
Collaborator

rustbot commented Jul 24, 2025

r? @SparrowLii

rustbot has assigned @SparrowLii.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 24, 2025
@rustbot
Copy link
Collaborator

rustbot commented Jul 24, 2025

These commits modify compiler targets.
(See the Target Tier Policy.)

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jul 24, 2025
@jieyouxu
Copy link
Member

Pinging target maintainers as a heads-up:

  • mips64-unknown-linux-muslabi64: @Gelbpunkt
  • hexagon-unknown-linux-musl: @androm3da
  • powerpc64-unknown-linux-musl: @Gelbpunkt @famfo @neuschaefer
  • powerpc-unknown-linux-musl: no platform support page / no listed target maintainer
  • powerpc-unknown-linux-muslspe: @BKPepe
  • riscv32gc-unknown-linux-musl: no platform support page / no listed target maintainer
  • s390x-unknown-linux-musl: @uweigand
  • thumbv7neon-unknown-linux-musleabihf: no platform support page / no listed target maintainer

@Gelbpunkt
Copy link
Contributor Author

Just FYI, the hexagon target already links dynamically by default, I just removed the explicit line there since the default musl target already links dynamically. So hexagon doesn't change behavior here :)

@androm3da
Copy link
Contributor

Just FYI, the hexagon target already links dynamically by default, I just removed the explicit line there since the default musl target already links dynamically. So hexagon doesn't change behavior here :)

Thanks - LGTM.

@petrochenkov
Copy link
Contributor

IIRC, there was an official decision to switch all musl targets to dynamically-linked-by-default, which didn't turn into an actual implementation.
It would be good to find it and link it from here.

@Gelbpunkt
Copy link
Contributor Author

Gelbpunkt commented Jul 25, 2025

which didn't turn into an actual implementation.

It (partially) did, the base linux_musl target is dynamically linked now, so any new targets will be dynamically linked. Noone has taken onto the existing ones yet.

I'm working on implementing the lint that was proposed in the MCP as a step towards changing the tier 2 targets to be dynamically linked, but that lint isn't necessary to change the tier 3 targets like done in this PR.

The original MCP is rust-lang/compiler-team#422

@Gelbpunkt
Copy link
Contributor Author

@jieyouxu hi there, it's been a week so I was wondering whether this could be merged?
Out of the affected targets, only 4 of them have maintainers listed, and all of them except powerpc-unknown-linux-muslspe have shown their agreement with this PR. The powerpc-unknown-linux-muslspe target currently is broken anyways (#138960), so I think there's nothing stopping this.

@jieyouxu
Copy link
Member

jieyouxu commented Aug 1, 2025

IIRC, there was an official decision to switch all musl targets to dynamically-linked-by-default, which didn't turn into an actual implementation. It would be good to find it and link it from here.

I believe this was rust-lang/compiler-team#422.

Copy link
Member

@jieyouxu jieyouxu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Judging from the thumb ups and explicit approvals, there is consensus in favor of this change from all pinged target maintainers. Since these targets are all Tier 3 and do not have pre-compiled std, we can make this change without too much hassle.

@jieyouxu
Copy link
Member

jieyouxu commented Aug 1, 2025

Thanks! I'll tag this with relnotes just so users of these targets might have a chance to be aware of this change.
r? jieyouxu @bors r+ rollup

@bors
Copy link
Collaborator

bors commented Aug 1, 2025

📌 Commit effcd54 has been approved by jieyouxu

It is now in the queue for this repository.

@rustbot rustbot assigned jieyouxu and unassigned SparrowLii Aug 1, 2025
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 1, 2025
@jieyouxu jieyouxu added the relnotes Marks issues that should be documented in the release notes of the next release. label Aug 1, 2025
RalfJung added a commit to RalfJung/rust that referenced this pull request Aug 1, 2025
…eyouxu

Make tier 3 musl targets link dynamically by default

Since we don't build std for these and don't provide any support for them, these can trivially be changed to link dynamically by default.
bors added a commit that referenced this pull request Aug 1, 2025
Rollup of 6 pull requests

Successful merges:

 - #144397 (`tests/ui/issues/`: The Issues Strike Back [2/N])
 - #144410 (Make tier 3 musl targets link dynamically by default)
 - #144708 (Add tracing to step.rs and friends)
 - #144730 (Create a typed wrapper for codegen backends in bootstrap)
 - #144771 (Remove some noisy triagebot pings for myself)
 - #144772 (add unsupported_calling_conventions to lint list)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit fce6771 into rust-lang:master Aug 1, 2025
10 checks passed
@rustbot rustbot added this to the 1.90.0 milestone Aug 1, 2025
rust-timer added a commit that referenced this pull request Aug 1, 2025
Rollup merge of #144410 - Gelbpunkt:musl-tier3-dynamic, r=jieyouxu

Make tier 3 musl targets link dynamically by default

Since we don't build std for these and don't provide any support for them, these can trivially be changed to link dynamically by default.
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 16, 2025
…t, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also rust-lang#144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 16, 2025
…t, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also rust-lang#144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
jhpratt added a commit to jhpratt/rust that referenced this pull request Sep 17, 2025
…t, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also rust-lang#144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 17, 2025
…t, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also rust-lang#144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
Zalathar added a commit to Zalathar/rust that referenced this pull request Sep 17, 2025
…t, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also rust-lang#144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
rust-timer added a commit that referenced this pull request Sep 17, 2025
Rollup merge of #146588 - Gelbpunkt:musl-default-linking-test, r=jieyouxu

tests/run-make: Update list of statically linked musl targets

All of the tier 3 targets in the list now link dynamically by default (except `mips64el-unknown-linux-muslabi64`, I apparently overlooked that one in my PR that changed this).

Adjust the list of targets expected to link statically accordingly.

See also #144410, which changed these targets.

Target by target:
- `mips64-unknown-linux-musl`: this target does not exist AFAICT
- `mips64-unknown-linux-muslabi64`: updated in the linked PR
- `powerpc-unknown-linux-musl`: updated in the linked PR
- `powerpc-unknown-linux-muslspe`: updated in the linked PR
- `powerpc64-unknown-linux-musl`: updated in the linked PR
- `riscv32gc-unknown-linux-musl`: updated in the linked PR
- `s390x-unknown-linux-musl`: updated in the linked PR
- `thumbv7neon-unknown-linux-musleabihf`: updated in the linked PR
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Sep 20, 2025
Pkgsrc changes:
 * Adjust patches to adapt to upstream changes and new versions.
 * assosicated checksums

Upstream changes relative to 1.89.0:

Version 1.90 (2025-09-18)
==========================

Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
  (rust-lang/rust#140717). This lint has
  been split up into four finer-grained lints, with
  `unknown_or_malformed_diagnostic_attributes` now being the lint
  group that contains these lints:
    1. `unknown_diagnostic_attributes`: unknown to the current compiler
    2. `misplaced_diagnostic_attributes`: placed on the wrong item
    3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
    4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
  memory, but reject such constants as patterns]
  (rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
  (rust-lang/rust#141260)

Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
  (rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
  (rust-lang/rust#144410). Affected targets:
    - `mips64-unknown-linux-muslabi64`
    - `powerpc64-unknown-linux-musl`
    - `powerpc-unknown-linux-musl`
    - `powerpc-unknown-linux-muslspe`
    - `riscv32gc-unknown-linux-musl`
    - `s390x-unknown-linux-musl`
    - `thumbv7neon-unknown-linux-musleabihf`

Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
  (rust-lang/rust#145252)

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

Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
  (rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
  (rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
  (rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
  (rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
  (rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
  least 8 bytes of alignment]
  (rust-lang/rust#143859)

Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
  (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
  (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
  (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
  (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
  (https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
  (https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
  (https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
  (https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
  (https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
  (https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)

These previously stable APIs are now stable in const contexts:

- [`<[T]>::reverse`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)

Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
  (rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
  (rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
  (rust-lang/cargo#15636)

Rustdoc
-----
- [Add ways to collapse all impl blocks]
  (rust-lang/rust#141663). Previously the
  "Summary" button and "-" keyboard shortcut would never collapse
  `impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
  (rust-lang/rust#143662)

Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
  (rust-lang/rust#140525).
  See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
  internally as promised in the docs instead of always being empty]
  (rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
  (rust-lang/rust#140005) This may change
  program behavior but results in the same behavior as other
  primitives (e.g., stdout, network sockets).  Programs relying on
  signals to terminate them should update handling of sockets to
  handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
  environment variable is empty]
  (rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
  positions] (rust-lang/rust#142134). This
  primarily affects the use of implementing traits on an `extern
  "{abi}"` function pointer, like `extern "stdcall" fn()`, on a
  platform that doesn't support that, like aarch64-unknown-linux-gnu.
  Direct usage of these unsupported ABI strings by declaring or
  defining functions was already rejected, so this is only a change
  for consistency.
- [const-eval: error when initializing a static writes to that static]
  (rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
  when applied to the crate root]
  (rust-lang/rust#143607)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants