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
--------

* WASMSobel
* Consulte nosso webassembly-examples para outros exemplos.
Especificações
--------------

| Specification |
| --- |
| WebAssembly JavaScript Interface  |

Compatibilidade do navegador
----------------------------

{{Compat}}Veja também
-----------

* webassembly.org
* WebAssembly articles on Mozilla Hacks blog
* W3C WebAssembly Community Group
* Large-Allocation HTTP header