WebAssembly

Experimental: Esta é uma tecnologia experimental (en-US)
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produção.

O WebAssembly é um novo tipo de código que pode ser executado em browsers modernos — se trata de uma linguagem de baixo nível como assembly, com um formato binário compacto que executa com performance quase nativa e que fornece um novo alvo de compilação para linguagens como C/C++, para que possam ser executadas na web. Também foi projetado para executar em conjunto com o JavaScript, permitindo que ambos trabalhem juntos.

Em poucas palavras

O WebAssembly tem enormes aplicações para a plataforma web — ele irá fornecer uma maneira de executar na web código escrito em diversas linguagens em velocidade quase nativa, com apps que não conseguiriam fazer isso antes.

O WebAssembly foi projetado para complementar e executar lado a lado com JavaScript — usando as APIs JavaScript do WebAssembly, você pode carregar módulos WebAssembly em um aplicativo JavaScript e compartilhar funcionalidade entre ambos. Isso permite que você aproveite o desempenho e poder da WebAssembly e a expressividade e flexibilidade do JavaScript nos mesmos aplicativos, mesmo que você não saiba como escrever código de WebAssembly.

E o que é ainda melhor é que ele está sendo desenvolvido como um padrão web através da W3C WebAssembly Community Group com participantes ativos de todos os principais fornecedores de browsers.

Guias

Conceitos WebAssembly

Comece lendo os conceitos de alto nível por trás do WebAssembly - o que é, por que é tão útil, como ele se encaixa na plataforma web e como usá-lo.

Compilando C/C++ para WebAssembly

Quando você escreve o código em C/C++, você pode então compilá-lo em .wasm usando uma ferramenta como Emscripten. Veja como isso funciona.

Carregando e executando código WebAssembly (en-US)

Depois de ter um .wasm, este artigo aborda como buscá-lo, compilá-lo e instanciá-lo, combinando a API JavaScript WebAssembly (en-US)como Obter ou APIs XHR.

Compilando módulos de WebAssembly no cache

O cache de grandes módulos WebAssembly no cliente é útil para melhorar o desempenho da inicialização do aplicativo. Este artigo explica como usar isso usando IndexedDB.

Usando a API JavaScript do WebAssembly

Depois de carregar um módulo .wasm, você vai querer usá-lo. Neste artigo, mostramos como usar a WebAssembly através da API JavaScript da WebAssembly.

Exportando funções de WebAssembly (en-US)

Funções WebAssembly exportadas são as reflexões de JavaScript das funções da WebAssembly e permitem chamar o código WebAssembly do JavaScript. Este artigo descreve o que são.

Compreendendo o formato de texto do WebAssembly

Este artigo explica o formato de texto wasm. Esta é a representação textual de baixo nível de um módulo .wasm mostrado nas ferramentas de desenvolvedor do navegador ao depurar.

Convertendo o formato de texto do WebAssembly para o wasm (en-US)

Este artigo fornece um guia sobre como converter um módulo WebAssembly escrito no formato de texto em um binário .wasm.

Referência da API

WebAssembly (en-US)

Este objeto atua como o espaço para todas as funcionalidade relacionada à WebAssembly.

WebAssembly.Module (en-US)

A WebAssembly.Module o objeto contém o código da WebAssembly sem estado que já foi compilado pelo navegador e pode ser eficientemente compartilhado com os trabalhos (en-US), armazenados em cache no IndexedDB, e instanciados várias vezes.

WebAssembly.Instance (en-US)

A WebAssembly.Instance o objeto é uma instância executável e estável de um Módulo. Os objetos Instanciados contêm todas as funções de WebAssembly exportadas (en-US)que permitem chamar o código WebAssembly do JavaScript.

WebAssembly.instantiate() (en-US)

The WebAssembly.instantiate() a função é a API primária para compilar e instanciar o código WebAssembly, retornando um Module e sua primeira instância.

WebAssembly.Memory() (en-US)

Em WebAssembly. O objeto Memory é redimensionável ArrayBuffer que detém os bytes de memória invocados por uma instância de código.

WebAssembly.Table() (en-US)

Em WebAssembly. O objeto Table é uma matriz redimensionável de valores opacos, como referências de funções, acessadas por uma instância de código.

WebAssembly.CompileError() (en-US)

Cria um novo objeto WebAssembly CompileError.

WebAssembly.LinkError() (en-US)

Cria um novo objeto WebAssembly LinkError.

WebAssembly.RuntimeError() (en-US)

Cria um novo objeto WebAssembly RuntimeError.

Exemplos

Especificações

Specification
WebAssembly JavaScript Interface
# webassembly-namespace
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification

Compatibilidade do navegador

webassembly.api

BCD tables only load in the browser

webassembly.BigInt-to-i64-integration

BCD tables only load in the browser

webassembly.bulk-memory-operations

BCD tables only load in the browser

webassembly.exception-handling

BCD tables only load in the browser

webassembly.extended-constant-expressions

BCD tables only load in the browser

webassembly.fixed-width-SIMD

BCD tables only load in the browser

webassembly.garbage-collection

BCD tables only load in the browser

webassembly.multiMemory

BCD tables only load in the browser

webassembly.multi-value

BCD tables only load in the browser

webassembly.mutable-globals

BCD tables only load in the browser

webassembly.non-trapping-float-to-int-conversions

BCD tables only load in the browser

webassembly.reference-types

BCD tables only load in the browser

webassembly.sign-extension-operations

BCD tables only load in the browser

webassembly.tail-calls

BCD tables only load in the browser

webassembly.threads-and-atomics

BCD tables only load in the browser

Veja também