Skip to main content

Wasm e Wasi

  • Wasm e Wasi

🧩 WASM (WebAssembly)

WebAssembly (ou WASM) é um formato binário e uma máquina virtual que roda código de maneira rápida, segura e eficiente nos navegadores (e fora deles também).

✅ Características principais:

  • Portável: Roda em qualquer ambiente que suporte WASM (navegadores, servidores, IoT).
  • Desempenho alto: Quase tão rápido quanto código nativo (como C/C++).
  • Segurança: Roda em sandbox, o que protege o sistema hospedeiro.
  • Independente de linguagem: Você pode compilar linguagens como C, C++, Rust, Go para WASM.

🧠 Para que serve?

  • Rodar jogos ou apps pesados no navegador.
  • Trazer linguagens de sistema (como C++) para o ambiente web.
  • Criar plug-ins portáteis, funções serverless, etc.

🧰 WASI (WebAssembly System Interface)

WASI é um padrão de interface de sistema para WebAssembly. Ele fornece acesso a funcionalidades do sistema operacional, como arquivos, tempo, argumentos de linha de comando, etc.

✅ Por que isso é importante?

  • WASM sozinho não tem acesso ao sistema de arquivos, rede, etc.
  • WASI dá a esses binários WASM uma forma segura e padronizada de interagir com o sistema.

🧠 Para que serve?

  • Permite rodar WASM fora do navegador, por exemplo:

    • Em servidores (como se fosse um programa nativo).
    • Em ambientes controlados, como funções serverless.

📊 Comparação resumida:

ConceitoWASMWASI
O que é?Máquina virtual + formato binárioInterface de sistema para WASM
Onde roda?Navegador, servidoresFora do navegador
Acesso a sistema?Não (por padrão)Sim (de forma segura)
FocoExecução eficiente e seguraIntegração com o sistema operacional

📎 Exemplo prático

Imagine que você escreveu um programa em Rust que processa imagens. Com:

  • WASM: Você pode compilar esse código para rodar no navegador.
  • WASI: Você pode rodar esse mesmo código como um programa de linha de comando em servidores ou desktops, acessando arquivos e argumentos normalmente.