WebAssembly escapou do navegador. Em 2026, está se tornando silenciosamente o runtime para tudo

Quando o WebAssembly foi lançado em 2017, a proposta era direta: um formato binário de instruções que navegadores executam a velocidades quase nativas, viabilizando aplicações que o JavaScript sozinho não conseguiria rodar. O Figma portou seu motor de renderização para WASM e tornou softwares de design complexos viáveis no navegador. O AutoCAD Web usou a tecnologia para executar código C++ de décadas sem reescrever nada. O caso de uso no navegador era real, e a tecnologia entregou.
O que ninguém previu direito foi que os usos mais impactantes do WebAssembly aconteceriam fora do navegador.
Como o WASM escapou da sandbox
O desenvolvimento-chave foi o WASI — WebAssembly System Interface, proposto pela Bytecode Alliance em 2019 e que atingiu a especificação estável 2.0 em 2024. O WASI deu aos módulos do WebAssembly uma interface padronizada para interagir com o sistema hospedeiro: ler arquivos, fazer conexões de rede, acessar variáveis de ambiente. Isso parece banal, mas teve uma implicação profunda: um módulo WASM compilado com suporte a WASI poderia rodar em qualquer lugar onde existisse um runtime WASI — não apenas em um navegador, mas em um servidor, no edge, em um dispositivo IoT, dentro de um motor de banco de dados.
Solomon Hykes, o criador do Docker, resumiu a importância em um post que se tornou amplamente citado: "Se WASM+WASI existissem em 2008, não teríamos precisado criar o Docker. Isso mostra o quão importante é." A promessa era a de um binário universal portátil — compile uma vez, execute em qualquer lugar, com uma sandbox de segurança embutida.
Onde o WASM está rodando em 2026
Edge computing e funções serverless. O Cloudflare Workers oferece suporte ao WASM desde 2018, mas em 2026 ele é o runtime principal para funções de edge com requisitos críticos de desempenho. Fastly Compute, Fermyon Spin e Wasmer Edge executam workloads WASM em nós de borda distribuídos globalmente. O apelo está na combinação de tempo de inicialização (cold starts de submilissegundo, contra 50–200ms para uma função Node.js), isolamento de segurança (cada módulo roda em sua própria sandbox com concessões explícitas de capacidade) e portabilidade (implante o mesmo binário em qualquer provedor).
Extensibilidade de banco de dados. SingleStore, DuckDB e vários outros bancos de dados agora aceitam funções definidas pelo usuário escritas como módulos WASM, permitindo que lógica personalizada seja executada dentro do motor de consulta com acesso a operações vetorizadas e sem a sobrecarga de uma ida e volta a um processo externo. O suporte a UDFs WASM no PostgreSQL, estabilizado em 2025, abriu essa capacidade para o banco de dados open-source mais amplamente implantado do mundo.
Sistemas de plugins. Zed (o editor de código), Extism (um framework de plugins usado por dezenas de aplicações) e um número crescente de ferramentas de desenvolvimento usam WASM como runtime para plugins. A vantagem sobre sistemas nativos tradicionais de plugins é o isolamento: um plugin com comportamento inadequado não pode derrubar o processo hospedeiro nem acessar recursos fora de suas permissões. Esse é o modelo que o Shopify usa para extensões customizadas de apps e que o Figma adota em seu ecossistema de plugins.
CLIs portáteis e ferramentas. O modelo de componentes WASM (padronizado em 2024) permitiu composição: você pode construir uma ferramenta CLI como um conjunto de componentes WASM que importam e exportam interfaces tipadas e depois compô-los independentemente da linguagem em que foram originalmente escritos. Um componente em Rust pode chamar a interface de um componente em Python sem que nenhum dos dois saiba a linguagem de implementação do outro. Isso está viabilizando uma nova geração de ferramentas agnósticas quanto à linguagem.
O modelo de componentes muda o cálculo
O modelo de componentes WASM merece atenção especial porque resolve um problema que atormenta softwares poliglotas há décadas. Antes, se você quisesse chamar uma biblioteca escrita em Rust a partir do Python, tinha que lidar com FFI, memória compartilhada, sobrecarga de serialização ou chamadas a subprocessos. O modelo de componentes substitui tudo isso por uma linguagem de definição de interface type-safe e agnóstica (WIT — WebAssembly Interface Types), que compiladores para Rust, Python, JavaScript, Go, C e outros conseguem usar como destino.
O resultado é que um desenvolvedor pode escrever uma biblioteca de processamento de strings de alto desempenho em Rust, expô-la como um componente WASM com uma interface WIT tipada e chamá-la do Python sem nenhum boilerplate de FFI. O binário roda em uma sandbox, a interface é verificada quanto a tipos na fronteira, e o mesmo componente funciona em qualquer lugar onde exista o runtime WASM.
O que ainda está faltando
O crescimento do WASM fora do navegador vem com limitações reais. O suporte a garbage collection só atingiu status estável em 2024, o que antes o tornava desconfortável para linguagens como Python e Java que dependem de GC. Threads e memória compartilhada funcionam, mas têm ressalvas quanto a operações atômicas que variam por plataforma. A história do toolchain melhorou drasticamente — wasm-pack, cargo-component e componentize-py existem — mas a experiência ainda fica atrás do desenvolvimento nativo em termos de debugging, profiling e mensagens de erro.
O desempenho é quase nativo para trabalho com uso intensivo de CPU, mas não para workloads que dependem muito de serviços do sistema operacional: I/O de arquivos via WASI é mais lento que nativo, e as concessões de segurança do modelo de capacidade adicionam sobrecarga em comparação a syscalls diretos. Para caminhos com latência crítica, essas diferenças importam.
A trajetória
A linha de tendência é clara. O Wasmtime (mantido pela Bytecode Alliance) está sendo embutido em tudo, de provedores de cloud a ferramentas CLI e bancos de dados. O modelo de componentes está ganhando adoção mais rápido do que qualquer especificação WASM anterior. Os fabricantes de navegadores estão alinhados quanto a funcionalidades futuras como garbage collection, stack switching para corrotinas e melhorias no tratamento de exceções.
WebAssembly não vai substituir contêineres ou binários nativos para todos os workloads. Mas para os casos de uso específicos onde portabilidade, isolamento de segurança e tempos de inicialização submilissegundo importam — funções de edge, aplicações extensíveis, ferramentas portáteis, plugins em sandbox — ele já se tornou a escolha padrão. Os próximos cinco anos de seu desenvolvimento provavelmente o tornarão irreconhecível em comparação com o formato binário focado em navegador que ele era no início.