-
Notifications
You must be signed in to change notification settings - Fork 13.2k
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
Make the wasm_c_abi future compat warning a hard error #133951
Conversation
given #129534 r? @workingjubilee @alexcrichton does this need a compiler FCP? |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should note that the changes in #129534 did not actually start showing an error to users, it was still a warning by default.
See #129534 (comment)
0ed0661
to
e1f75dd
Compare
Technically we are breaking like ~85 versions of a foundation ecosystem crate, so yeah, an FCP might be warranted, but also technically we're just fixing a bug. If we do this, we should make sure we only do one FCP between this and #133952 though since they're the same decision: "We're killing this dead, yeah?" |
e1f75dd
to
10a3850
Compare
Nominating for T-compiler: We already accepted the MCP to phase out this behavior, but this is the "hard break" edge. If an FCP is desired before proceeding, now is the time to decide. We are technically breaking a crate on future versions of Rust. However it is the crate and target's maintainer wish that we do so, and this is the solution to a 4 year old issue: We have heard no strong objection and this has been discussed for 4 years at this point, so any box-ticking formality is exactly that: a formality. @rustbot label: +I-compiler-nominated Also cc @daxpedda |
To summarize even more summarily for T-lang:
Things have settled and it has become clear that Rust should align the ABI of Thanks to @alexcrichton and @daxpedda we have implemented a relatively-smooth migration path for wasm-bindgen. There should be no meaningful concerns going forward, and this will make code that wasn't compatible with C code be compatible again, according to the conventional understanding of |
10a3850
to
fde2b1b
Compare
If I understand correctly, people who want to use the new interoperable ABI between C and Rust on WebAssembly will need to either use some flavor of wasi target or use some hypothetical new Or is the migration plan here to wait some amount of time with this as a hard error and then change it to the new ABI? |
I might be misunderstanding something here, but I would have expected a change in |
We discussed in today's lang team meeting and were confused what exactly we are rubber stamping here. Specifically, we wanted to know: Does this break any use of Also echoing @scottmcm's point that a test change would be ideal. |
That is the precise opposite of the situation. |
@workingjubilee came to the @rust-lang/lang meeting and explained the situation in great detail. It sounds like this hard error will happen for people using old wasm-bindgen, and people using new wasm-bindgen will have things Just Work. |
Thanks to @workingjubilee for joining the call and clarifying the situation for us. The current situation is that Since there would otherwise be subtle breakage for people using old versions of On that basis... @rfcbot fcp merge |
The final comment period, with a disposition to merge, as per the review above, is now complete. As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed. This will be merged soon. |
@rustbot labels -S-waiting-on-team With FCP complete, this is OK to go forward as far as lang is concerned. |
e84078a
to
b030685
Compare
@rustbot ready |
This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown.
Co-Authored-By: Alex Crichton <[email protected]>
b030685
to
49c3aaa
Compare
Thank you everyone! @bors r+ |
Rollup of 7 pull requests Successful merges: - rust-lang#130808 (Fix linking for symbols starting with ? on i686-pc-windows-msvc) - rust-lang#133138 (Target modifiers (special marked options) are recorded in metainfo) - rust-lang#133154 (Reword resolve errors caused by likely missing crate in dep tree) - rust-lang#135707 (Shorten linker output even more when `--verbose` is not present) - rust-lang#135764 (Fix tests on LLVM 20) - rust-lang#135785 (use `PassMode::Direct` for vector types on `s390x`) - rust-lang#135818 (tests: Port `translation` to rmake.rs) Failed merges: - rust-lang#133951 (Make the wasm_c_abi future compat warning a hard error) r? `@ghost` `@rustbot` modify labels: rollup try-job: aarch64-apple try-job: i686-mingw try-job: x86_64-gnu-llvm-19-3
… r=workingjubilee Make the wasm_c_abi future compat warning a hard error This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown. The lint was made deny-by-default in rust-lang#129534 3 months ago. This still keeps the `-Zwasm-c-abi` flag set to `legacy` by default. It will be flipped in a future PR. cc rust-lang#122532
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#133631 (Support QNX 7.1 with `io-sock`+libstd and QNX 8.0 (`no_std` only)) - rust-lang#133951 (Make the wasm_c_abi future compat warning a hard error) - rust-lang#134283 (fix(libtest): Deprecate '--logfile') - rust-lang#134679 (Windows: remove readonly files) - rust-lang#135635 (Move `std::io::pipe` code into its own file) - rust-lang#135842 (TRPL: more backward-compatible Edition changes) - rust-lang#135953 (ci.py: check the return code in `run-local`) - rust-lang#136031 (Expand polonius MIR dump) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#133631 (Support QNX 7.1 with `io-sock`+libstd and QNX 8.0 (`no_std` only)) - rust-lang#133951 (Make the wasm_c_abi future compat warning a hard error) - rust-lang#134283 (fix(libtest): Deprecate '--logfile') - rust-lang#134679 (Windows: remove readonly files) - rust-lang#135635 (Move `std::io::pipe` code into its own file) - rust-lang#135842 (TRPL: more backward-compatible Edition changes) - rust-lang#135953 (ci.py: check the return code in `run-local`) - rust-lang#136031 (Expand polonius MIR dump) r? `@ghost` `@rustbot` modify labels: rollup
… r=workingjubilee Make the wasm_c_abi future compat warning a hard error This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown. The lint was made deny-by-default in rust-lang#129534 3 months ago. This still keeps the `-Zwasm-c-abi` flag set to `legacy` by default. It will be flipped in a future PR. cc rust-lang#122532
Rollup of 7 pull requests Successful merges: - rust-lang#133951 (Make the wasm_c_abi future compat warning a hard error) - rust-lang#134283 (fix(libtest): Deprecate '--logfile') - rust-lang#135785 (use `PassMode::Direct` for vector types on `s390x`) - rust-lang#135948 (Update emscripten std tests) - rust-lang#135951 (Use `fmt::from_fn` in more places in the compiler) - rust-lang#136031 (Expand polonius MIR dump) - rust-lang#136032 (Account for mutable borrow in argument suggestion) Failed merges: - rust-lang#135635 (Move `std::io::pipe` code into its own file) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#133951 - bjorn3:wasm_c_abi_lint_hard_error, r=workingjubilee Make the wasm_c_abi future compat warning a hard error This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown. The lint was made deny-by-default in rust-lang#129534 3 months ago. This still keeps the `-Zwasm-c-abi` flag set to `legacy` by default. It will be flipped in a future PR. cc rust-lang#122532
This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown.
The lint was made deny-by-default in #129534 3 months ago. This still keeps the
-Zwasm-c-abi
flag set tolegacy
by default. It will be flipped in a future PR.cc #122532