wasm-bindgen Facilitating high-level interactions between Wasm modules and JavaScript. Guide (main branch) | API Docs | Contributing | Chat Built with 🦀🕸 by The Rust and WebAssembly Working Group Install…
wasm-bindgen
Facilitating high-level interactions between Wasm modules and JavaScript.
Guide (main branch)
|
API Docs
|
Contributing
|
Chat
Built with 🦀🕸 by The Rust and WebAssembly Working Group
Install wasm-bindgen-cli
You can install it using cargo install:
cargo install wasm-bindgen-cli
Or, you can download it from the
release page.
If you have cargo-binstall installed,
then you can install the pre-built artifacts by running:
cargo binstall wasm-bindgen-cli
Example
Import JavaScript things into Rust and export Rust things to JavaScript.
rust
use wasm_bindgen::prelude::*;
// Import the `window.alert` function from the Web.
#[wasm_bindgen]
extern "C" {
fn alert(s: &str);
}
// Export a `greet` function from Rust to JavaScript, that alerts a
// hello message.
#[wasm_bindgen]
pub fn greet(name: &str) {
alert(&format!("Hello, {}!", name));
}
Use exported Rust things from JavaScript with ECMAScript modules!
js
import { greet } from "./hello_world";
greet("World!");
Features
- Lightweight. Only pay for what you use.
wasm-bindgenonly generates
document.querySelector method doesn't cause Node.prototype.appendChild or
window.alert to be included in the bindings as well.
- ECMAScript modules. Just import WebAssembly modules the same way you would
- Designed with the ["Web IDL bindings" proposal][webidl-bindings] in mind.
[wasm-es-modules]: https://github.com/WebAssembly/esm-integration
[webidl-bindings]: https://github.com/WebAssembly/proposals/issues/8
Guide
📚 Read the wasm-bindgen guide here! 📚
API Docs
MSRV Policy
- Libraries that are released on crates.io have a MSRV of v1.77.
- CLI tools and their corresponding support libraries have a MSRV of v1.86.
MSRV History
| Version | Library MSRV | CLI MSRV | Date |
|---------|--------------|----------|------------|
| 0.2.118 | 1.77 | 1.86 | 2026-04-10 |
| 0.2.106 | 1.71 | 1.82 | 2025-11-27 |
| 0.2.103 | 1.57 | 1.82 | 2025-09-17 |
| 0.2.93 | 1.57 | 1.76 | 2024-08-13 |
License
This project is licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
http://opensource.org/licenses/MIT)
at your option.
Contribution
[See the "Contributing" section of the guide for information on hacking on wasm-bindgen!][contributing]
Unless you explicitly state otherwise, any contribution intentionally submitted
for 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.
[contributing]: https://wasm-bindgen.github.io/wasm-bindgen/contributing/index.html
Members
-
wasm-bindgen
Facilitating high-level interactions between Wasm modules and JavaScript
Rust ★ 9.0k 1d agoExplain → -
wasm-pack
📦✨ your favorite rust -> wasm workflow tool!
Rust ★ 7.2k 8d agoExplain → -
walrus
Walrus is a WebAssembly transformation library 🌊🐘
Rust ★ 516 24d agoExplain → -
weedle
A WebIDL Parser
WebIDL ★ 54 3mo agoExplain → -
ts-gen
Automated TypeScript Bindgen
Rust ★ 11 29d agoExplain → -
js-bindgen
No description.
Rust ★ 10 2d agoExplain →
No repos match these filters.