mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-04-25 14:12:13 +00:00
Support has landed in rust-lang/rust for full support for LLVM 9's interpretation of WebAssembly threads. This commit updates our thread transformation pass to take all this into account, namely: * The threadign pass now runs by default and is keyed on whether memory is shared, not off an env var. * TLS is initialized in addition to memory on each thread. * Stack pointer finding is tweaked to account for the TLS base also being a mutable global. * The build of the parallel raytrace example was updated to use today's nightly.
25 lines
928 B
Bash
Executable File
25 lines
928 B
Bash
Executable File
#!/bin/sh
|
|
|
|
set -ex
|
|
|
|
# Two critical steps are required here to get this working:
|
|
#
|
|
# * First, the Rust standard library needs to be compiled. The default version
|
|
# is not compatible with atomics so we need to compile a version, with xargo,
|
|
# that is compatible.
|
|
#
|
|
# * Next we need to compile everything with the `atomics` feature enabled,
|
|
# ensuring that LLVM will generate atomic instructions and such.
|
|
RUSTFLAGS='-C target-feature=+atomics,+bulk-memory' \
|
|
xargo build --target wasm32-unknown-unknown --release
|
|
|
|
# Note the usage of `--no-modules` here which is used to create an output which
|
|
# is usable from Web Workers. We notably can't use `--target bundler` since
|
|
# Webpack doesn't have support for atomics yet.
|
|
cargo run --manifest-path ../../crates/cli/Cargo.toml \
|
|
--bin wasm-bindgen -- \
|
|
../../target/wasm32-unknown-unknown/release/raytrace_parallel.wasm --out-dir . \
|
|
--no-modules
|
|
|
|
python3 -m http.server
|