Execute código de alto desempenho diretamente no navegador
WebAssembly (WASM) é um formato binário de baixo nível que permite executar código de alto desempenho no navegador web. Ele foi projetado como um complemento ao JavaScript, não como um substituto.
WASM usa um formato binário compacto (.wasm) que é mais eficiente que texto:
(module
(func $add (param $a i32) (param $b i32) (result i32)
local.get $a
local.get $b
i32.add)
(export "add" (func $add)))
Por que usar WebAssembly em seus projetos?
Executa código em velocidade próxima ao nativo, ideal para aplicações intensivas como jogos, edição de vídeo e processamento de dados.
Suporta múltiplas linguagens de programação além de JavaScript, incluindo Rust, C/C++, Go, e mais.
Executa em um ambiente sandboxed com acesso controlado à memória e recursos do sistema.
Criando seu primeiro módulo WASM com Rust
rustup target add wasm32-unknown-unknown
cargo install wasm-pack
cargo new --lib wasm-example
cd wasm-example
[package]
name = "wasm-example"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn fibonacci(n: u32) -> u32 {
match n {
0 => 0,
1 => 1,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}
wasm-pack build --target web
import init, { fibonacci } from './pkg/wasm_example.js';
async function run() {
await init();
console.log(fibonacci(10)); // 55
}
run();
Documentação oficial e ferramentas úteis