Felipe Moacir

WebAssembly 3.0: O Que Mudou em 2025

WebAssemblyPerformanceWebWASM
WebAssembly 3.0: O Que Mudou em 2025

WebAssembly (Wasm) permite executar código binário de alto desempenho no navegador e além. Em setembro de 2025, a especificação Wasm 3.0 foi concluída, com mudanças relevantes.

Com base no blog do WebAssembly, Platform Uno e web.dev:

1. Suporte nos Browsers

Wasm tem ~96% de adoção global. Principais browsers suportam o core; o Safari costuma ditar quando novos recursos ficam prontos para produção.

2. Novidades do Wasm 3.0 (Set/2025)

  • 64-bit Address Space — Memória de 4GB para até 16 exabytes, importante para apps não-web
  • Multiple Memories — Módulos podem declarar e usar várias memórias; facilita linking estático e cenários de segurança
  • Garbage Collection — Gerenciamento automático de memória mantendo o caráter de baixo nível
  • Typed References — Tipos de referência mais ricos e subtyping

3. Outros Avanços em 2025

  • Exception Handling (exnref) — Safari 18.4
  • JavaScript String Builtins — Uso direto de strings JS sem “glue code”

4. Onde Wasm Faz Sentido

  • Cálculos intensivos (games, edição de mídia, simulações)
  • Portar código C/C++/Rust para a web
  • Performance próxima de nativo com segurança de sandbox

5. Quando Não Priorizar

  • Apps dominados por I/O e lógica de UI — JavaScript costuma ser suficiente
  • Complexidade extra de toolchain e deploy

6. Linguagens que Compilam para Wasm

Rust, C, C++, AssemblyScript e Go têm suporte maduro. O Rust é particularmente popular por segurança de memória e ecossistema (wasm-pack, wasm-bindgen). Para quem já conhece JS, AssemblyScript oferece sintaxe familiar.

7. Casos de Uso Reais

Figma, Photoshop na web, AutoCAD e editores de vídeo usam Wasm para rodar engines pesadas no browser. Jogos, codecs de mídia e processamento de imagens são candidatos naturais. Para CRUDs e dashboards, JavaScript continua suficiente.

8. Ferramentas de Desenvolvimento

Ferramentas como Emscripten (C/C++), wasm-pack (Rust) e Go's wasm target simplificam a compilação. O debug ainda é menos maduro que em JS — planeje investir tempo em configuração de source maps e stepping.