Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade *-linux-musl targets to musl 1.2 #572

Closed
1 of 3 tasks
wesleywiser opened this issue Dec 13, 2022 · 3 comments
Closed
1 of 3 tasks

Upgrade *-linux-musl targets to musl 1.2 #572

wesleywiser opened this issue Dec 13, 2022 · 3 comments
Labels
major-change A proposal to make a major change to rustc major-change-accepted A major change proposal that was accepted T-compiler Add this label so rfcbot knows to poll the compiler team

Comments

@wesleywiser
Copy link
Member

wesleywiser commented Dec 13, 2022

Proposal

I propose to update all currently supported musl targets to use musl 1.2.3 instead of musl 1.1.24. musl 1.1.24 was released on October 13th, 2019 and is the last release in the end-of-life 1.1 series. The musl 1.2 series does not impose new requirements on Linux kernel version and is essentially a drop-in upgrade except for one thing: time64.

time64

musl 1.2.0 changes the definition of time_t, and thereby the definitions of all derived types, to be 64-bit across all archs. This and related changes are collectively referred to as "time64", and are necessary so that data types and functions dealing with time can represent time past early 2038, where the existing 32-bit type on 32-bit archs would overflow.

- musl time64 Release Notes

As a result, the libc crate is being updated with the corresponding time64 changes for the affected 32-bit targets. This change is API-breaking but work is ongoing to mitigate the ecosystem impact.

Affected Targets

This proposal covers the following targets:

Target Support Tier Has time64 API Changes
aarch64-unknown-linux-musl Tier 2 with Host Tools No
x86_64-unknown-linux-musl Tier 2 with Host Tools No
arm-unknown-linux-musleabi Tier 2 Yes
arm-unknown-linux-musleabihf Tier 2 Yes
armv5te-unknown-linux-musleabi Tier 2 Yes
armv7-unknown-linux-musleabi Tier 2 Yes
armv7-unknown-linux-musleabihf Tier 2 Yes
i586-unknown-linux-musl Tier 2 Yes
i686-unknown-linux-musl Tier 2 Yes
mips-unknown-linux-musl Tier 2 Yes
mips64-unknown-linux-muslabi64 Tier 2 No
mips64el-unknown-linux-muslabi64 Tier 2 No
mipsel-unknown-linux-musl Tier 2 No
hexagon-unknown-linux-musl Tier 3 No
mips64-openwrt-linux-musl Tier 3 No
powerpc-unknown-linux-musl Tier 3 Yes
powerpc64-unknown-linux-musl Tier 3 No
powerpc64le-unknown-linux-musl Tier 3 No
riscv32gc-unknown-linux-musl Tier 3 No
riscv64gc-unknown-linux-musl Tier 3 No
s390x-unknown-linux-musl Tier 3 No
thumbv7neon-unknown-linux-musleabihf Tier 3 No

Next Steps

Per the Target Tier Policy, this MCP expresses the intent of the compiler team to ship these changes but is not the only signoff required to do so. The PR which implements these changes to the targets will be FCP'd by T-compiler, T-infra and T-release while the libc changes will be FCP'd by T-libs. A blog post explaining the change, the rationale and the expected fallout will be written and published on the Rust blog coinciding with the merge of the implementation PR.

Mentors or Reviewers

This change does not require mentorship, just reviews from the usual teams.

Process

The main points of the Major Change Process are as follows:

  • File an issue describing the proposal.
  • A compiler team member or contributor who is knowledgeable in the area can second by writing @rustbot second.
    • Finding a "second" suffices for internal changes. If however, you are proposing a new public-facing feature, such as a -C flag, then full team check-off is required.
    • Compiler team members can initiate a check-off via @rfcbot fcp merge on either the MCP or the PR.
  • Once an MCP is seconded, the Final Comment Period begins. If no objections are raised after 10 days, the MCP is considered approved.

You can read more about Major Change Proposals on forge.

Comments

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

@wesleywiser wesleywiser added T-compiler Add this label so rfcbot knows to poll the compiler team major-change A proposal to make a major change to rustc labels Dec 13, 2022
@rustbot
Copy link
Collaborator

rustbot commented Dec 13, 2022

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

cc @rust-lang/compiler @rust-lang/compiler-contributors

@rustbot rustbot added the to-announce Announce this issue on triage meeting label Dec 13, 2022
@apiraino apiraino removed the to-announce Announce this issue on triage meeting label Dec 22, 2022
@cuviper
Copy link
Member

cuviper commented Jan 9, 2023

Pending FCP on the actual change, I think we should definitely do this.

@rustbot second

@rustbot rustbot added the final-comment-period The FCP has started, most (if not all) team members are in agreement label Jan 9, 2023
@apiraino
Copy link
Contributor

@rustbot label -final-comment-period +major-change-accepted

@rustbot rustbot added major-change-accepted A major change proposal that was accepted to-announce Announce this issue on triage meeting and removed final-comment-period The FCP has started, most (if not all) team members are in agreement labels Jan 24, 2023
@apiraino apiraino removed the to-announce Announce this issue on triage meeting label Feb 3, 2023
bors added a commit to rust-lang-ci/rust that referenced this issue May 6, 2023
…ochenkov

Update the version of musl used on `*-linux-musl` targets to 1.2.3

Update the version of musl used on our Linux musl targets from 1.1.24 to 1.2.3 as proposed in rust-lang/compiler-team#572. musl 1.2.3 is the latest version of musl and supports the same range of Linux kernels as the 1.1 series. As such, it does not affect the minimum supported version of Linux for any of the musl targets.

One of the major musl 1.2 features is support for [time64](https://musl.libc.org/time64.html). This support is both source and ABI compatible with programs built against musl 1.1 and so updating the musl version for these targets should not cause Rust programs to fail to run or compile (a [crater run](rust-lang#107129 (comment)) has been completed which demonstrates this for the `i686-unknown-linux-musl` target).

Once this change reaches stable, the `libc` crate will then be able to [update their definitions to support 64-bit time](rust-lang/libc#3068), matching the default musl 1.2 APIs exactly.

Fixes rust-lang#91178
RalfJung pushed a commit to RalfJung/miri that referenced this issue May 7, 2023
Update the version of musl used on `*-linux-musl` targets to 1.2.3

Update the version of musl used on our Linux musl targets from 1.1.24 to 1.2.3 as proposed in rust-lang/compiler-team#572. musl 1.2.3 is the latest version of musl and supports the same range of Linux kernels as the 1.1 series. As such, it does not affect the minimum supported version of Linux for any of the musl targets.

One of the major musl 1.2 features is support for [time64](https://musl.libc.org/time64.html). This support is both source and ABI compatible with programs built against musl 1.1 and so updating the musl version for these targets should not cause Rust programs to fail to run or compile (a [crater run](rust-lang/rust#107129 (comment)) has been completed which demonstrates this for the `i686-unknown-linux-musl` target).

Once this change reaches stable, the `libc` crate will then be able to [update their definitions to support 64-bit time](rust-lang/libc#3068), matching the default musl 1.2 APIs exactly.

Fixes #91178
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Mar 4, 2024
…cs, r=ehuss

Update platform-support.md with supported musl version

This just reflects the current status quo, there is no actual change here since the update to musl 1.2.3 occurred in rust-lang#107129 and was approved in rust-lang/compiler-team#572.

I also normalized all mentions of musl libc to "musl" (non-capitalized per the project's site and Wikipedia page).

r? `@ehuss`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Mar 4, 2024
…cs, r=ehuss

Update platform-support.md with supported musl version

This just reflects the current status quo, there is no actual change here since the update to musl 1.2.3 occurred in rust-lang#107129 and was approved in rust-lang/compiler-team#572.

I also normalized all mentions of musl libc to "musl" (non-capitalized per the project's site and Wikipedia page).

r? ``@ehuss``
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Mar 5, 2024
Rollup merge of rust-lang#121994 - wesleywiser:update_musl_version_docs, r=ehuss

Update platform-support.md with supported musl version

This just reflects the current status quo, there is no actual change here since the update to musl 1.2.3 occurred in rust-lang#107129 and was approved in rust-lang/compiler-team#572.

I also normalized all mentions of musl libc to "musl" (non-capitalized per the project's site and Wikipedia page).

r? ``@ehuss``
RalfJung pushed a commit to RalfJung/rust-analyzer that referenced this issue Apr 20, 2024
Update the version of musl used on `*-linux-musl` targets to 1.2.3

Update the version of musl used on our Linux musl targets from 1.1.24 to 1.2.3 as proposed in rust-lang/compiler-team#572. musl 1.2.3 is the latest version of musl and supports the same range of Linux kernels as the 1.1 series. As such, it does not affect the minimum supported version of Linux for any of the musl targets.

One of the major musl 1.2 features is support for [time64](https://musl.libc.org/time64.html). This support is both source and ABI compatible with programs built against musl 1.1 and so updating the musl version for these targets should not cause Rust programs to fail to run or compile (a [crater run](rust-lang/rust#107129 (comment)) has been completed which demonstrates this for the `i686-unknown-linux-musl` target).

Once this change reaches stable, the `libc` crate will then be able to [update their definitions to support 64-bit time](rust-lang/libc#3068), matching the default musl 1.2 APIs exactly.

Fixes #91178
RalfJung pushed a commit to RalfJung/rust-analyzer that referenced this issue Apr 27, 2024
Update the version of musl used on `*-linux-musl` targets to 1.2.3

Update the version of musl used on our Linux musl targets from 1.1.24 to 1.2.3 as proposed in rust-lang/compiler-team#572. musl 1.2.3 is the latest version of musl and supports the same range of Linux kernels as the 1.1 series. As such, it does not affect the minimum supported version of Linux for any of the musl targets.

One of the major musl 1.2 features is support for [time64](https://musl.libc.org/time64.html). This support is both source and ABI compatible with programs built against musl 1.1 and so updating the musl version for these targets should not cause Rust programs to fail to run or compile (a [crater run](rust-lang/rust#107129 (comment)) has been completed which demonstrates this for the `i686-unknown-linux-musl` target).

Once this change reaches stable, the `libc` crate will then be able to [update their definitions to support 64-bit time](rust-lang/libc#3068), matching the default musl 1.2 APIs exactly.

Fixes #91178
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
major-change A proposal to make a major change to rustc major-change-accepted A major change proposal that was accepted T-compiler Add this label so rfcbot knows to poll the compiler team
Projects
None yet
Development

No branches or pull requests

4 participants