Desmistificando WebAssembly Alta performance, portabilidade e segurança
Raphael AmorimConteúdo
WebAssembly é um formato de código binário portátil cujo objetivo é tornar possíveis aplicações de altíssima performance em páginas Web, ao mesmo tempo em que adiciona pluralidade, pois viabiliza que programadores de diversas linguagens criem ou portabilizem aplicações existentes de plataformas nativas para os navegadores. Tudo isso tendo um modelo de segurança do WASM projetado para ser completamente isolado em "caixa de areia", com permissões restritas e controladas pela pessoa desenvolvedora. Tendo conhecimento aprofundado, é possível utilizar WebAssembly sem depender de linguagem, ferramenta ou recurso específico além dele mesmo para desenvolver aplicações, seja para a Web ou até mesmo no back-end e outros destinos de uso.
Neste livro, Raphael Amorim aborda as principais caraterísticas do WebAssembly, do básico ao avançado: segurança, performance, portabilidade e pluralidade de linguagens. Com foco no uso prático da tecnologia no dia a dia, recheado de exemplos de módulos WebAssembly, você vai examinar e dissecar desde o processo de compilação de módulo até a sua execução com a máquina virtual do WASM. Você partirá de uma aplicação Web que faz uso de Rust, até ter o completo entendimento de como funciona uma estrutura de arquivo binário, depuração e suas instruções. Em seguida, terá os conceitos computacionais necessários para a escrita de aplicações mais complexas como codificação de dados, vinculação dinâmica e estática, instruções atômicas, memória compartilhada e outros.
Sumário
- 1 Introdução
- 1.1 Do NodeJS ao WebAssembly
- 1.2 O que é WebAssembly?
- 2 Fundamentos ao primeiro módulo
- 2.1 Máquina virtual do WebAssembly
- 2.2 Fundamentos básicos
- 2.3 Formatos de arquivo
- 2.4 Tipos de valores de dados
- 2.5 Compilação para o código binário
- 2.6 Escrevendo nosso primeiro módulo
- 3 Por trás da magia no navegador
- 3.1 Matrizes tipadas
- 3.2 DataView
- 3.3 WebAssembly no JavaScript
- 3.4 Módulo
- 3.5 Instanciamento de módulos
- 3.6 Criando e gerenciando memória
- 3.7 Valores globais
- 3.8 Tabelas
- 4 Criando um editor de imagem com WebAssembly
- 4.1 De volta ao navegador
- 4.2 Trabalhando com memória
- 4.3 Salvando os dados da imagem
- 4.4 Filtro preto e branco em JavaScript
- 4.5 Filtro preto e branco em WebAssembly
- 4.6 Filtros de tons de cores em WebAssembly
- 4.7 Filtro de opacidade em WebAssembly
- 4.8 Filtro de inversão em WebAssembly
- 5 Vinculação e interface binária de aplicativo
- 5.1 Uso da C ABI e Rust ABI no WebAssembly
- 5.2 Blocos externos
- 5.3 Compilando WebAssembly com vinculação dinâmica e estática
- 6 Encoding e Strings
- 6.1 Codificação e decodificação de dados
- 6.2 UTF-8
- 6.3 Strings do Rust para WASM
- 6.4 Envio de Strings do Rust para o WebAssembly
- 7 Threads e atômicos
- 7.1 Memória compartilhada
- 7.2 Instruções atômicas
- 7.3 Web Workers
- 8 Tipos de erro
- 8.1 Erro de compilação
- 8.2 Erro na configuração da instância
- 8.3 Erros em tempo de execução
- 9 Destrinchando o formato de texto
- 9.1 WAT: WebAssembly Text Format
- 9.2 Instruções numéricas
- 9.3 Instruções de controle
- 10 Estruturas binárias, WABT e Binaryen
- 10.1 WebAssembly Binary Toolkit
- 10.2 Estrutura binária do WebAssembly
- 10.3 Visualização de arquivos binários
- 10.4 Execução de binários usando o interpretador
- 10.5 Descompilação de binários
- 10.6 wasm2c: conversão de arquivos binários para C
- 10.7 Binaryen
- 10.8 Otimização de arquivos binários
- 10.9 wasm2js: conversão de arquivos binários para JavaScript
- 10.10 wasm-tools
- 11 WASI - WebAssembly System Interface
- 11.1 O que é o WASI?
- 11.2 Como a arquitetura do WASI funciona?
- 11.3 Como usar WebAssembly com WASI?
- 11.4 Wasmtime
- 11.5 WASI com Rust
- 11.6 Escrevendo em arquivo com WASI
- 11.7 WASI com WebAssembly Text Format
- 11.8 Usando pthreads com WASI
- 11.9 Conclusão
- 12 Referências bibliográficas
Autor
Raphael Amorim
Raphael Amorim é formado em análise e desenvolvimento de sistemas pelo Instituto Infnet, foi palestrante em múltiplas conferências nacionais e internacionais. Atualmente, trabalha como Sr. Software Engineer no Viaplay, tendo também trabalhado em empresas como Spotify, GoDaddy e Globo.com nos últimos 10 anos. Foi responsável pela implementação e adoção da linguagem de programação Rust, e eventualmente WebAssembly, na maior empresa de streaming de vídeos dos países nórdicos. Apaixonado por Open Source desde muito cedo, ele se envolveu com diversos projetos abertos, especialmente no cenário de desenvolvimento Web, sendo contribuidor do pacote binário oficial do WebAssembly, jQuery, React, entre outros.
Dados do produto
- Número de páginas:
- 311
- ISBN:
- 978-85-5519-346-0
- Data publicação:
- 09/2023