WebAssembly - Introdução
WebAssembly também é chamado de WASM, que foi introduzido pela primeira vez no ano de 2017. As grandes empresas de tecnologia por trás da origem do WebAssembly são Google, Apple, Microsoft, Mozilla e W3C.
O burburinho é que o WebAssembly vai substituir o Javascript devido à sua execução mais rápida, mas não é o caso. WebAssembly e Javascript têm o objetivo de trabalhar juntos para resolver os problemas complexos.
Necessidade de WebAssembly
Até agora, temos apenas Javascript que pode funcionar com sucesso dentro do navegador. Existem tarefas muito pesadas que são difíceis de realizar nos navegadores que usam javascript.
Para citar alguns, são aplicativos de reconhecimento de imagem, design auxiliado por computador (CAD), aumento de vídeo ao vivo, RV e realidade aumentada, aplicativos musicais, visualização científica e simulação, jogos, edição de imagem / vídeo etc.
WebAssembly é uma nova linguagem com instrução binária que pode carregar e executar mais rapidamente. A tarefa declarada acima pode ser facilmente realizada em linguagens de alto nível como C, C ++, Rust etc. Precisamos de uma maneira que o código que temos em C, C ++, Rust possa ser compilado e possa ser usado em navegadores web. O mesmo é possível com o WebAssembly.
Quando o código WebAssembly é carregado dentro do navegador. Em seguida, o navegador se encarrega de converter para o formato de máquina que pode ser entendido pelos processadores.
Para javascript, o código deve ser baixado, analisado e convertido para o formato de máquina. Muito tempo é gasto e para tarefas pesadas, como mencionamos anteriormente, podem ser muito lentas.
Trabalho de WebAssembly
Linguagens de alto nível como C, C ++ e Rust são compiladas em formato binário, ou seja, .wasm e formato de texto .wat.
O código-fonte escrito em C, C ++ e Rust é compilado para .wasmusando um compilador. Você pode usar o SDK Emscripten para compilar C / C ++ para.wasm.
O fluxo é o seguinte -
O código C / C ++ pode ser compilado para .wasmusando o Emscripten SDK. Mais tarde, o.wasm o código pode ser usado com a ajuda de javascript em seu arquivo html para exibir a saída.
Principais conceitos de WebAssembly
Os conceitos-chave são explicados abaixo -
Módulo
Um módulo é um objeto que é compilado pelo navegador em código de máquina executável. Um módulo é considerado sem estado e pode ser compartilhado entre windows e web workers.
Memória
Memória em WebAssembly, é um arraybufferque contém os dados. Você pode alocar memória usando o Javascript api WebAssembly.memory ().
Mesa
Tabela em WebAssembly é uma matriz digitada, isto é, fora da memória WebAssembly e, principalmente, tem uma referência a funções. Ele armazena o endereço de memória das funções.
Instância
Instância é um objeto que terá todas as funções exportadas que podem ser chamadas de javascript para executar dentro do navegador.