Crates You Should Know
This is a curated list of awesome crates you should know about for doing Rustand WebAssembly development.
You can also browse all the crates published to crates.io in the WebAssemblycategory.
Interacting with JavaScript and the DOM
wasm-bindgen | crates.io | repository
wasm-bindgen
facilitates high-level interactions between Rust andJavaScript. It allows one to import JavaScript things into Rust and export Rustthings to JavaScript.
wasm-bindgen-futures | crates.io | repository
wasm-bindgen-futures
is a bridge connecting JavaSript Promise
s and RustFuture
s. It can convert in both directions and is useful when working withasynchronous tasks in Rust, and allows interacting with DOM events and I/Ooperations.
js-sys | crates.io | repository
Raw wasm-bindgen
imports for all the JavaScript global types and methods, suchas Object
, Function
, eval
, etc. These APIs are portable across allstandard ECMAScript environments, not just the Web, such as Node.js.
web-sys | crates.io | repository
Raw wasm-bindgen
imports for all the Web's APIs, such as DOM manipulation,setTimeout
, Web GL, Web Audio, etc.
Error Reporting and Logging
console_error_panic_hook | crates.io | repository
This crate lets you debug panics on wasm32-unknown-unknown
by providing apanic hook that forwards panic messages to console.error
.
console_log | crates.io | repository
This crate provides a backend for the log
crate that routes logged messages to the devtoolsconsole.
Dynamic Allocation
wee_alloc | crates.io | repository
The Wasm-Enabled, Elfin Allocator. A small (~1K uncompressed.wasm
) allocator implementation for when code size is a greater concern thanallocation performance.
Parsing and Generating .wasm Binaries
parity-wasm | crates.io | repository
Low-level WebAssembly format library for serializing, deserializing, andbuilding .wasm
binaries. Good support for well-known custom sections, such asthe "names" section and "reloc.WHATEVER" sections.
wasmparser | crates.io | repository
A simple, event-driven library for parsing WebAssembly binary files. Providesthe byte offsets of each parsed thing, which is necessary when interpretingrelocs, for example.
Interpreting and Compiling WebAssembly
wasmi | crates.io | repository
An embeddable WebAssembly interpreter from Parity.
cranelift-wasm | crates.io | repository
Compile WebAssembly to the native host's machine code. Part of the Cranelift (néCretonne) code generator project.