-
Notifications
You must be signed in to change notification settings - Fork 836
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
Consider removing useless -sign-ext
flag in substrate-wasm-builder
#5777
Comments
multi-value
and reference-types
featuresmulti-value
and reference-types
features
Do you have a little bit more context? |
@bkchr Rust 1.82 (stable Oct 17) enables |
According to link you have provided |
Yep, maybe it make sense just leave |
multi-value
and reference-types
features-sign-ext
flag in substrate-wasm-builder
Apparently it did not worked before: paritytech/substrate#13804 (comment) AFAIR we also just disabled this feature because there were issues with our wasm parser and not because we didn't wanted this feature. CC @koute |
@bkchr @koute We could switch to the new target |
Sounds reasonable |
@bkchr @koute I could do PR that would change the target to
I.e. does this mean that the runtime requires std? In which cases does it use std and in which cases does it not? |
No, the piece of code you have linked means that if
This would need to be done in a backwards compatible way, aka only do so if the new target exists. |
# 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>
…ytech#7008) # Description Resolves paritytech#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>
…ytech#7008) Resolves paritytech#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 ``` 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. 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>
Is there an existing issue?
Experiencing problems? Have you tried our Stack Exchange first?
Motivation
https://github.com/rust-lang/blog.rust-lang.org/blob/4a72d620768932213baf39b03c6f1e61c00cd038/posts/2024-08-26-webassembly-targets-change-in-default-target-features.md
Request
Should be removed here
polkadot-sdk/substrate/utils/wasm-builder/src/wasm_project.rs
Lines 836 to 842 in c8d5e5a
Solution
No response
Are you willing to help with this request?
Maybe (please elaborate above)
The text was updated successfully, but these errors were encountered: