-
-
Notifications
You must be signed in to change notification settings - Fork 8.9k
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
WebAssembly with Reference Types cannot be parsed #15566
Comments
I think parser does not support them.. ( |
Why webpack try to parse it? can we just use file-loader? |
There are some exports optimization.. so webpack parsing wasm.
yes, sure. also in webpack@5 there is |
This issue had no activity for at least three months. It's subject to automatic issue closing if there is no activity in the next 15 days. |
ping |
Issue was closed because of inactivity. If you think this is still a valid issue, please file a new issue with additional information. |
Last time you at least gave a warning, and it's marked as completed?? This has to be the worst bot ever. |
Ok dude |
@xtuc Friendly ping |
I just updated to 1.82 and now this problem started happening, what is the recommended solution? for now I downgraded to Rust 1.81, hopefully somebody can fix this properly |
This is btw not just a Rust issue, as it should affect C, C++, Zig and co. the same way as it got changed in LLVM to be turned on by default. |
Stripping solves the problem: [profile.release]
strip = true This isn't great for debug builds however, as you usually want the debug symbols. I believe the reason why stripping works isn't because it does any stripping, but because it likely optimizes the overlong immediates encoding back to how it was before LLVM 19. Running |
@CryZe What problem did you solve by stripping?
EDIT; stripping seems to work, but not in combination with the suggested module/rules fix by @alexander-akait above. Stripping has some other issues, but it's better than nothing! |
Without the babel-loader workaround that you tried. |
Sorry, yeah, I just tried that and it worked (edited my reply) |
Just as a FYI, it's still not possible to actually use reference types (as far as I can tell). Stripping, gets me as far as "my old binary without reference types works". To get reference types to even pass compile/wasm-pack/wasm-opt I needed to:
But then webpack says
I don't need reference types, I just wanted to see how far I would get. |
I can confirm this, as switching back to WebAssembly MVP features with:
does not solve the problem. I did not find a way to use wasm-opt to change the immediate encoding back to something supported by webpack. |
Note that in big projects with a workspace having multiple crates, the current webpack limitation is really annoying, because due to a cargo limitation, the strip option must be specified at the workspace level, so that would affect all crates including the ones not compiled for WASM targets. As @CryZe mentioned, that is really a problem for debugging. |
On the weekend I tracked down the issue back into |
@bes can you make a reproducible example so that I can examine it?
This is not our limitation because we simply cannot run the parser, it crashes with an error, this should be fixed in |
@bes Yeah, I see the problem, need wait - rustwasm/wasm-bindgen#4211, but anyway, it will not solve - xtuc/webassemblyjs#1146, we need someone to send a pr and solve this issue, unfortunately my knowledge in you is not deep enough to complete this task. I would say more that this problem is more a question of the node ecosystem, not just webpack |
Version 1.13.1 has been published with reference types support. We need to update in webpack. |
@xtuc I tried |
The same - #18940 |
Thanks for checking @alexander-akait . I'm having a look. |
I published 1.14.1. Could you please try again @alexander-akait ? Sorry I had some issues with my publish setup. |
@xtuc Works for me!
https://github.com/mateuszJS/rust-webpack-v5-template/tree/webpack-v5-migration |
@xtuc works for me as well! Thank you very much! |
Reopened #13559
Bug report
WebAssembly modules with enabled Reference Types cannot be loaded. The webpack version I tested this with is 5.38.1
For a minimal reproduction I created this repository: https://github.com/Tarnadas/webpack-5-wasm-reftypes
The error message is the following:
I used Rust with wasm-bindgen, which provides a cli option to enable reference types. Instead of directly using wasm-bindgen, I’ve been using wasm-pack, but since it’s unmaintained, you will need my fork to pass the cli option down to wasm-bindgen. You can see my PR for wasm-pack here: rustwasm/wasm-pack#888
By looking at the error message, it seems to be a problem with the wasm parser library. I checked its repository and couldn’t find any mentions about reference types unfortunately, so I’m not sure how to proceed with this.
The text was updated successfully, but these errors were encountered: