Description
This is a tracking issue for the MCP "perma-unstable wasm-c-abi
flag" (rust-lang/compiler-team#703).
For background, see rust-lang/compiler-team#703. The short summary is that the ABI rustc uses for extern "C"
on wasm32-unknown-unknown is not spec-compliant and exposes various unstable implementation details of rustc and LLVM. We plan to transition to the official "C" ABI for this target. This will change how non-scalar arguments are passed across this ABI boundary, so if you have code running that is built for wasm32-unknown-unknown and called directly by JavaScript, it may have to be adjusted to follow the new ABI rules. Options for how to manage the transition are still being considered; see #138762 for further guidance.
The -Zwasm-c-abi
flag lets you test your code with the new ABI.
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Steps
- Implement the MCP (cc @rust-lang/compiler -- can anyone write up mentoring
instructions?) - Adjust documentation (see instructions on rustc-dev-guide)
Formatting for new syntax has been added to the Style Guide (nightly-style-procedure)Stabilization PR (see instructions on rustc-dev-guide)
Implementation history
- Introduce perma-unstable
wasm-c-abi
flag #117919 - Add
wasm_c_abi
future-incompat
lint #117918 - Make the wasm_c_abi future compat warning a hard error #133951
- add FCW to warn about wasm ABI transition #138601