Node.js com a WebAssembly
Descubra o porquê da WebAssembly ser uma ferramenta impressionante e aprenda a usá-la sozinho.
Tabela de Conteúdos
WebAssembly é uma linguagem de alto desempenho parecida com a linguagem Assembly que pode ser compilada a partir de várias linguagens, incluindo C, C++, Rust, e AssemblyScript. Atualmente, é suportada pelo Chrome, Firefox, Safari, Edge, e a Node.js!
A especificação da WebAssembly detalhe dois formatos de ficheiro, um formato binário chamado de Módulo de WebAssembly com a extensão .wasm
e a representação correspondente de texto chamada de formato de Texto de WebAssembly com a extensão .wat
.
Conceitos Chaves
- Módulo - Um binário de WebAssembly compilado, por exemplo um ficheiro
.wasm
. - Memória - Um
ArrayBuffer
redimensionável. - Tabela - Um arranjo redimensionável de referências tipadas não guardadas na Memória.
- Instância - Uma instanciação de um Módulo com sua Memória, Tabela e variáveis.
Para usares a WebAssembly, precisas de um ficheiro binário .wasm
e um conjunto de APIs para comunicar com a WebAssembly. A Node.js fornece as APIs necessárias através do objeto global WebAssembly
.
Gerando Módulos de WebAssembly
Existem vários métodos disponíveis para gerar ficheiros binários de WebAssembly incluindo:
- Escrevendo o WebAssembly (
.wat
) a mão e convertendo-o para formato binário usando ferramentas tais como wabt. - Usando emscripten com uma aplicação de C ou C++.
- Usando wasm-pack com uma aplicação de Rust.
- Usando AssemblyScript se preferires uma experiência parecida com a da TypeScript.
Algumas destas ferramentas geram não apenas o ficheiro binário, mas o código "cola" de JavaScript e os ficheiros de HTML correspondentes para executarem no navegador.
Como Usá-lo
Uma vez que tens um módulo de WebAssembly, podes usar o objeto WebAssembly
da Node.js para instância-lo:
Interagindo com o Sistema Operacional
Os módulos de WebAssembly não podem por si mesmos acessar as funcionalidade do sistema operacional diretamente. Uma ferramenta de terceiro Wasmtime pode ser usada para acessar estas funcionalidades. A wasmtime
utiliza a API WASI para acessar as funcionalidades do sistema operacional.