mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-24 18:21:33 +00:00
.cargo
crates
examples
add
canvas
src
.gitignore
Cargo.toml
README.md
build.sh
index.html
index.js
package.json
webpack.config.js
char
closures
console_log
dom
duck-typed-interfaces
fetch
guide-supported-types-examples
hello_world
import_js
julia_set
no_modules
paint
performance
raytrace-parallel
request-animation-frame
todomvc
wasm-in-wasm
wasm2js
webaudio
webgl
README.md
guide
releases
src
tests
.appveyor.yml
.gitattributes
.gitignore
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
build.rs
package.json
publish.rs
This commit adds a new attribute to `#[wasm_bindgen]`: `start`. The `start` attribute can be used to indicate that a function should be executed when the module is loaded, configuring the `start` function of the wasm executable. While this doesn't necessarily literally configure the `start` section, it does its best! Only one crate in a crate graph may indicate `#[wasm_bindgen(start)]`, so it's not recommended to be used in libraries but only end-user applications. Currently this still must be used with the `crate-type = ["cdylib"]` annotation in `Cargo.toml`. The implementation here is somewhat tricky because of the circular dependency between our generated JS and the wasm file that we emit. This circular dependency makes running initialization routines (like the `start` shim) particularly fraught with complications because one may need to run before the other but bundlers may not necessarily respect it. Workarounds have been implemented for various emission strategies, for example calling the start function directly after exports are wired up with `--no-modules` and otherwise working around what appears to be a Webpack bug with initializers running in a different order than we'd like. In any case, this in theory doesn't show up to the end user! Closes #74
5 lines
133 B
JavaScript
5 lines
133 B
JavaScript
// For more comments about what's going on here, check out the `hello_world`
|
|
// example.
|
|
import('./canvas')
|
|
.catch(console.error);
|