Crates You Should Know
This is a curated list of awesome crates you should know about for doing Rust and WebAssembly development.
wasm-bindgen | crates.io | repository
wasm-bindgen facilitates high-level interactions between Rust and
wasm-bindgen-futures | crates.io | repository
wasm-bindgen-futures is a bridge connecting JavaSript
Promises and Rust
Futures. It can convert in both directions and is useful when working with
asynchronous tasks in Rust, and allows interacting with DOM events and I/O
js-sys | crates.io | repository
eval, etc. These APIs are portable across all
standard ECMAScript environments, not just the Web, such as Node.js.
web-sys | crates.io | repository
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 a
panic hook that forwards panic messages to
console_log | crates.io | repository
This crate provides a backend for the
crate that routes logged messages to the devtools
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 than
Parsing and Generating
parity-wasm | crates.io | repository
Low-level WebAssembly format library for serializing, deserializing, and
.wasm binaries. Good support for well-known custom sections, such as
the "names" section and "reloc.WHATEVER" sections.
wasmparser | crates.io | repository
A simple, event-driven library for parsing WebAssembly binary files. Provides the byte offsets of each parsed thing, which is necessary when interpreting relocs, 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.