Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork1.1k
Facilitating high-level interactions between Wasm modules and JavaScript
License
Apache-2.0, MIT licenses found
Licenses found
rustwasm/wasm-bindgen
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Facilitating high-level interactions between Wasm modules and JavaScript.
Built with 🦀🕸 byThe Rust and WebAssembly Working Group
You can install it usingcargo install
:
cargo install wasm-bindgen-cli
Or, you can download it from therelease page.
If you havecargo-binstall
installed,then you can install the pre-built artifacts by running:
cargo binstall wasm-bindgen-cli
Import JavaScript things into Rust and export Rust things to JavaScript.
use wasm_bindgen::prelude::*;// Import the `window.alert` function from the Web.#[wasm_bindgen]extern"C"{fnalert(s:&str);}// Export a `greet` function from Rust to JavaScript, that alerts a// hello message.#[wasm_bindgen]pubfngreet(name:&str){alert(&format!("Hello, {}!", name));}
Use exported Rust things from JavaScript with ECMAScript modules!
import{greet}from"./hello_world";greet("World!");
Lightweight. Only pay for what you use.
wasm-bindgen
only generatesbindings and glue for the JavaScript imports you actually use and Rustfunctionality that you export. For example, importing and using thedocument.querySelector
method doesn't causeNode.prototype.appendChild
orwindow.alert
to be included in the bindings as well.ECMAScript modules. Just import WebAssembly modules the same way you wouldimport JavaScript modules. Future compatible withWebAssembly modules andECMAScript modules integration.
Designed with the"Web IDL bindings" proposal in mind.Eventually, there won't be any JavaScript shims between Rust-generated wasmfunctions and native DOM methods. Because the Wasm functions are staticallytype checked, some of those native methods' dynamic type checks should becomeunnecessary, promising to unlock even-faster-than-JavaScript DOM access.
📚 Read thewasm-bindgen
guide here! 📚
You can find general documentation about using Rust and WebAssembly togetherhere.
Libraries that are released oncrates.io have a MSRV of v1.57. Changes to the MSRV will be accompanied by a minor version bump.
CLI tools and their corresponding support libraries have a MSRV of v1.76. Changes to the MSRV will be accompanied by a patch version bump.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
at your option.
See the "Contributing" section of the guide for information onhacking onwasm-bindgen
!
Unless you explicitly state otherwise, any contribution intentionally submittedfor inclusion in this project by you, as defined in the Apache-2.0 license,shall be dual licensed as above, without any additional terms or conditions.
About
Facilitating high-level interactions between Wasm modules and JavaScript
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.