WebAssembly
Experimental
Esta é uma tecnologia experimental
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 implicaçõ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
- Depois de ter um .wasm, este artigo aborda como buscá-lo, compilá-lo e instanciá-lo, combinando a API JavaScript WebAssembly 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
- 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
- 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
- Este objeto atua como o espaço para todas as funcionalidade relacionada à WebAssembly.
WebAssembly.Module
- 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, armazenados em cache no IndexedDB, e instanciados várias vezes. WebAssembly.Instance
- A
WebAssembly.Instance
o objeto é uma instância executável e estável de umMódulo
. Os objetosInstanciados
contêm todas as funções de WebAssembly exportadas que permitem chamar o código WebAssembly do JavaScript. WebAssembly.instantiate()
- The
WebAssembly.instantiate()
a função é a API primária para compilar e instanciar o código WebAssembly, retornando umModule
e sua primeirainstância
. WebAssembly.Memory()
- Em
WebAssembly.
O objetoMemory
é redimensionávelArrayBuffer
que detém os bytes de memória invocados por umainstância
de código. WebAssembly.Table()
- Em
WebAssembly.
O objetoTable
é uma matriz redimensionável de valores opacos, como referências de funções, acessadas por umainstância
de código. WebAssembly.CompileError()
- Cria um novo objeto WebAssembly
CompileError
. WebAssembly.LinkError()
- Cria um novo objeto WebAssembly
LinkError
. WebAssembly.RuntimeError()
- Cria um novo objeto WebAssembly
RuntimeError
.
Exemplos
- WASMSobel
- Consulte nosso webassembly-examples para outros exemplos.
Especificações
Especificações | Status | Comentários |
---|---|---|
WebAssembly JavaScript Interface | Rascunho atual | Definição inicial do projeto da API do JavaScript. |
Compatibilidade do navegador
Características | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Suporte básico | 57 | Não suportado | 52 (52)[1] | Não suportado | (Yes) | Não suportado |
Características | Chrome for Android | Android Webview | Edge Mobile | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Suporte básico | 57 | 57 | Não suportado | 52.0 (52)[1] | Não suportado | Não suportado | Não suportado |
[1] O WebAssembly está habilitado no Firefox 52+, embora desativado no Firefox 52 estendido versão para suporte (ESR.)