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:
| Conceito | WASM | WASI |
|---|---|---|
| O que é? | Máquina virtual + formato binário | Interface de sistema para WASM |
| Onde roda? | Navegador, servidores | Fora do navegador |
| Acesso a sistema? | Não (por padrão) | Sim (de forma segura) |
| Foco | Execução eficiente e segura | Integraçã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.