fix(web): keep wasm target_features section so wasm-opt accepts bulk-memory

The release profile's strip = true (added in #324) strips the wasm
target_features custom section. Without it, wasm-opt can't tell that
bulk-memory is enabled and rejects the module's memory.fill/copy ops
("operations require bulk memory"), failing the release web build — the
newer Rust toolchain now emits those ops by default. Override strip only
for the wasm target with -Cstrip=none, so native release binaries stay
stripped while the wasm keeps its feature section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-07-10 09:36:43 +03:00
commit 88450f0cd1

View file

@ -2,5 +2,11 @@
# browser backend on wasm32-unknown-unknown, alongside its `wasm_js` feature
# (enabled in Cargo.toml for the wasm target). Without it the web build fails
# with "wasm32-unknown-unknown targets are not supported by default".
#
# `-Cstrip=none` overrides the release profile's `strip = true` for the wasm
# target only: stripping removes the `target_features` custom section, so
# `wasm-opt` can no longer see that `bulk-memory` is enabled and rejects the
# module's memory.fill/copy ops ("require bulk memory"). Native release binaries
# stay stripped; only the wasm keeps its feature section.
[target.wasm32-unknown-unknown]
rustflags = ['--cfg', 'getrandom_backend="wasm_js"']
rustflags = ['--cfg', 'getrandom_backend="wasm_js"', '-Cstrip=none']