-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Update the version of musl used on *-linux-musl
targets to 1.2.3
#107129
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
@bors try |
⌛ Trying commit 97795b0aa4815fd51e46b1702da9fa34e84863fa with merge a40ec913238f4f188d97c41aa605cb486451acf2... |
☀️ Try build successful - checks-actions |
97795b0
to
cb93f92
Compare
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
@craterbot run mode=build-and-test name=musl_1_2_upgrade_i686_unknown_linux_musl start=try#d5830e3d3b571fe52cdf4b7b34be99be74dc65ea+target=i686-unknown-linux-musl end=try#a40ec913238f4f188d97c41aa605cb486451acf2+target=i686-unknown-linux-musl |
👌 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
🚧 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
🎉 Experiment
|
Crater reports 76 root regressions:
I believe the crater results show that updating our musl targets from musl 1.1.24 to musl 1.2.3 will not cause ecosystem breakage which is consistent with the release notes from upstream. |
I also think it's @rustbot label: +perf-regression-triaged |
This is perhaps a dumb question, but does this mean that, starting with rustc 1.71, binaries compiled by rustc will no longer work on musl 1.1 targets? |
AFAIK musl is statically linked anyway, so it probably won't matter |
That's the default, but what about |
It's rare for people to link to musl libc dynamically, and Alpine just release a new version, upgrading musl libc to 1.2.4 so I guess this is ok. It's not like there are many other distros there using musl libc and AFAIK Alpine is mostly used for container where upgrading to new version is relatively easy. |
iirc the only actual ABI difference is the new functions in 1.2.3, like qsort_r. since musl also internally moved to all other libc function use comes from the |
the system libc being *newer* is always fine, since there is forward compatibility. it being "rare" or not, or where dynamic musl is used or not, however, does not answer the actual question. |
@nekopsykose that's helpful, thanks. (For fullness of context, my interest is that the Python ecosystem currently has a pre-built build env for binaries that target musl 1.1, but not for 1.2 yet. It seems like this may work for a little bit, until |
yep. currently, libc is also on 1.1.X. see rust-lang/libc#3068 for work towards 1.2 there- it will come as a new major version (0.3) when it happens. |
My understanding matches that of @nekopsykose's and I don't think this change by itself would cause rustc to generate calls to new symbols introduced in musl 1.2.x so dynamically linking with musl 1.1 should continue to work. That being said, @alex if it's possible for you to test in that musl 1.1 build env with Rust nightly, it would be good to confirm this. |
@wesleywiser Thanks. I can confirm (pyca/cryptography#8902) that we're able to still build and then pass our minimal smoke test on musl 1.1, using rustc nightly (dated 5/9) -- see the |
Thanks for testing @alex! Glad to hear it's working 🎉 |
…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`
…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``
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``
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
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
Update bundled musl to 1.2.5 [Releases page](https://musl.libc.org/releases.html) Prior update: rust-lang#107129 r? `@wesleywiser` try-job: dist-x86_64-musl try-job: dist-i586-gnu-i586-i686-musl
Update bundled musl to 1.2.5 Update the bundled musl library from 1.2.3 to the 1.2.5 release from February 29, 2024. [Releases page](https://musl.libc.org/releases.html) Prior update: rust-lang#107129 `r? wesleywiser` try-job: dist-x86_64-musl try-job: dist-i586-gnu-i586-i686-musl
Update bundled musl to 1.2.5 Update the bundled musl library from 1.2.3 to the 1.2.5 release from February 29, 2024. [Releases page](https://musl.libc.org/releases.html) Prior update: rust-lang#107129 `r? wesleywiser` try-job: dist-x86_64-musl try-job: dist-i586-gnu-i586-i686-musl try-job: dist-x86_64-linux
Update bundled musl to 1.2.5 Update the bundled musl library from 1.2.3 to the 1.2.5 release from February 29, 2024. [Releases page](https://musl.libc.org/releases.html) Prior update: rust-lang#107129 `r? wesleywiser` try-job: dist-x86_64-musl try-job: dist-i586-gnu-i586-i686-musl try-job: dist-x86_64-linux
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. 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 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, matching the default musl 1.2 APIs exactly.Fixes #91178