-
StackOverflowExcept1on authored
# Description Resolves #5777 Previously `wasm-builder` used hacks such as `-Zbuild-std` (required `rust-src` component) and `RUSTC_BOOTSTRAP=1` to build WASM runtime without WASM features: `sign-ext`, `multivalue` and `reference-types`, but since Rust 1.84 (will be stable on 9 January, 2025) the situation has improved as there is new [`wasm32v1-none`](https://doc.rust-lang.org/beta/rustc/platform-support/wasm32v1-none.html) target that disables all "post-MVP" WASM features except `mutable-globals`. Previously, your `rust-toolchain.toml` looked like this: ```toml [toolchain] channel = "stable" components = ["rust-src"] targets = ["wasm32-unknown-unknown"] profile = "default" ``` It should now be updated to something like this: ```toml [toolchain] channel = "stable" targets = ["wasm32v1-none"] profile = "default" ``` To build the runtime: ```bash cargo build --package minimal-template-runtime --release ``` ## Integration If you are using Rust 1.84 and above, then install the `wasm32v1-none` target instead of `wasm32-unknown-unknown` as shown above. You can also remove the unnecessary `rust-src` component. Also note the slight differences in conditional compilation: - `wasm32-unknown-unknown`: `#[cfg(all(target_family = "wasm", target_os = "unknown"))]` - `wasm32v1-none`: `#[cfg(all(target_family = "wasm", target_os = "none"))]` Avoid using `target_os = "unknown"` in `#[cfg(...)]` or `#[cfg_attr(...)]` and instead use `target_family = "wasm"` or `target_arch = "wasm32"` in the runtime code. ## Review Notes Wasm builder requires the following prerequisites for building the WASM binary: - Rust >= 1.68 and Rust < 1.84: - `wasm32-unknown-unknown` target - `rust-src` component - Rust >= 1.84: - `wasm32v1-none` target - no more `-Zbuild-std` and `RUSTC_BOOTSTRAP=1` hacks and `rust-src` component requirements! --------- Co-authored-by:
Bastian Köcher <git@kchr.de> Co-authored-by:
Bastian Köcher <info@kchr.de>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.