--- title: WebAssembly slug: WebAssembly tags: - WebAssembly - wasm translation_of: WebAssembly ---
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.
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.
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
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 que permitem chamar o código WebAssembly do JavaScript.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.
O objeto Memory
é redimensionável {{jsxref ("Global_objects / ArrayBuffer","ArrayBuffer")}} que detém os bytes de memória invocados por uma instância
de código. 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. CompileError
. LinkError
. RuntimeError
.Especificações | Status | Comentários |
---|---|---|
{{SpecName('WebAssembly JS')}} | {{Spec2('WebAssembly JS')}} | Definição inicial do projeto da API do JavaScript. |
Características | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Suporte básico | 57 | {{CompatNo}} | {{CompatGeckoDesktop(52)}}[1] | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
Características | Chrome for Android | Android Webview | Edge Mobile | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Suporte básico | 57 | 57 | {{CompatNo}} | {{CompatGeckoMobile(52)}}[1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] O WebAssembly está habilitado no Firefox 52+, embora desativado no Firefox 52 estendido versão para suporte (ESR.)