17 pontos por GN⁺ 2025-09-18 | Ainda não há comentários. | Compartilhar no WhatsApp
  • O padrão Wasm 3.0 foi oficialmente anunciado, incluindo grandes funcionalidades preparadas ao longo de 6 a 8 anos
  • Recursos como espaço de endereçamento de 64 bits, coleta de lixo, referências tipadas, tail calls e tratamento de exceções tornam mais fácil compilar linguagens de alto nível para Wasm
  • As principais novidades ajudam em aplicações de alto desempenho, runtimes de várias linguagens, segurança e extensibilidade
  • É adequado não só para a web, mas também para ecossistemas fora da web, em casos que exigem lidar com capacidades e conjuntos de dados maiores
  • Já é suportado pelos principais navegadores web, e deve ser concluído em breve também em motores independentes como o Wasmtime, consolidando ainda mais o Wasm como uma plataforma de execução de uso geral

Visão geral do lançamento do Wasm 3.0

  • A versão 3.0 do padrão WebAssembly foi lançada em 17 de setembro de 2025
    • É a principal atualização em 3 anos desde a versão 2.0 (concluída em 2022), que introduziu instruções vetoriais, operações de memória em lote, múltiplos valores de retorno e tipos de referência simples
    • O Community Group e o Working Group do W3C continuaram o desenvolvimento, e este lançamento traz grandes recursos preparados ao longo de 6 a 8 anos, representando uma mudança de escala considerável
    • O Wasm mantém seu espírito de linguagem de baixo nível, ao mesmo tempo em que fortalece o sistema de memória e de tipos para oferecer melhor suporte à compilação de linguagens de alto nível
  • Os recursos desenvolvidos desde a versão 2.0 foram finalizados e se estabeleceram como padrão Live, com suporte ampliado em navegadores web e motores independentes

Principais mudanças e novos recursos

  • Espaço de endereçamento de 64 bits
    • Memórias e tabelas podem ser declaradas com o tipo i64
    • O espaço de endereçamento de aplicações Wasm pode ser expandido de cerca de 4 GB até o limite físico (teoricamente 16 exabytes)
    • Na web, aplica-se um limite de 16 GB, mas em ecossistemas fora da web isso é útil para dar suporte a aplicações e conjuntos de dados de grande porte
  • Múltiplas memórias
    • É possível declarar e acessar diretamente vários objetos de memória dentro de um único módulo
    • Isso permite diversos usos, como fusão de módulos, separação de espaço de endereçamento, buffering e segurança
    • Ferramentas de linkedição estática como wasm-merge passam a poder ser usadas com todos os módulos Wasm
  • Coleta de lixo (GC)
    • Além da memória linear, há suporte a armazenamento gerenciado automaticamente pelo runtime do Wasm
    • O compilador declara diretamente layouts de dados como tipos struct/array e inteiros sem boxing
    • São fornecidos apenas os blocos fundamentais de gerenciamento de memória, enquanto sistemas de objetos de alto nível ou closures podem ser projetados separadamente de acordo com a linguagem de implementação
  • Referências tipadas
    • O sistema de tipos do Wasm foi expandido para descrever com mais precisão a forma de valores no heap e referências de função
    • Há suporte a subtipagem e tipos recursivos, e a nova instrução call_ref permite chamadas indiretas seguras de função sem checagem de tipo em tempo de execução
  • Tail calls
    • Há suporte à estrutura de tail call, que retorna imediatamente sem uso adicional de espaço de pilha da função existente
    • Isso pode ser usado em linguagens funcionais ou em otimizações internas de runtimes
  • Tratamento de exceções
    • O Wasm passa a ter um sistema nativo de tratamento de exceções
    • Ele fornece declaração de tags e payloads de exceção, captura seletiva e handlers de exceção em nível de bloco
    • Isso permite melhorar portabilidade e desempenho sem recorrer aos métodos ineficientes antes contornados via JS
  • Instruções vetoriais relaxadas
    • Para lidar com diferenças de hardware nas instruções SIMD, há uma variante relaxada que deixa a implementação livre para definir certos detalhes de algumas instruções
    • Isso permite várias otimizações dentro do conjunto de comportamentos válidos
  • Perfil determinístico
    • Mesmo em situações em que o resultado da mesma instrução pode ser não determinístico (como operações de ponto flutuante e SIMD relaxado), ele define execução determinística entre plataformas
    • Isso permite garantir reprodutibilidade e portabilidade em blockchain, sistemas reproduzíveis e afins
  • Sintaxe de anotações customizadas
    • Foi adicionada uma sintaxe de anotações legível e gravável por humanos dentro do código-fonte
    • Embora não seja interpretada diretamente pelo padrão, ela pode ser usada no futuro em implementações de padrões e extensões

Integração com JavaScript e compatibilidade

  • JS string builtins
    • Valores de string do JS podem ser passados e manipulados no Wasm como externref
    • Ao importar novas funções embutidas, passa a ser possível usar diretamente strings externas de JS dentro do Wasm

Utilidade e perspectivas do Wasm 3.0

  • Fornece a base essencial para a compilação de linguagens de programação avançadas para Wasm
  • Linguagens importantes como Java, OCaml, Scala, Kotlin, Scheme, Dart e outras já começaram a aproveitar ativamente os recursos de GC

Situação da criação da especificação e da distribuição

  • O Wasm 3.0 é o primeiro padrão produzido com a nova toolchain SpecTec
  • A maioria dos principais navegadores web já oferece suporte ao Wasm 3.0, e motores independentes como o Wasmtime também devem concluí-lo em breve
  • É possível verificar o status de suporte por engine na página Wasm feature status

Ainda não há comentários.

Ainda não há comentários.