Consórcio W3C sobre a concessão da tecnologia WebAssembly ao status de padrão recomendado. WebAssembly fornece um código intermediário universal de baixo nível independente do navegador para a execução de aplicativos compilados de várias linguagens de programação. O WebAssembly é posicionado como uma tecnologia mais promissora e portátil entre navegadores para a criação de aplicações web de alto desempenho. O WebAssembly pode ser aplicado a tarefas que requerem alta performance, como codificação de vídeo, processamento de áudio, manipulação de gráficos e 3D, desenvolvimento de jogos, operações criptográficas, cálculos matemáticos e criação de implementações portáveis de linguagens de programação.
O WebAssembly se assemelha muito ao Asm.js, mas difere por ser um formato binário que não está vinculado ao JavaScript. No WebAssembly, não é necessário o uso de um coletor de lixo, uma vez que o gerenciamento de memória é feito de forma explícita. Com a utilização de JIT para WebAssembly, é possível alcançar um nível de desempenho próximo ao código nativo. Entre as principais metas do WebAssembly estão garantir portabilidade, previsibilidade de comportamento e identidade na execução do código em diferentes plataformas. Recentemente, o WebAssembly também como uma plataforma universal para a execução segura de código em quaisquer infraestruturas, sistemas operacionais e dispositivos, sem se limitar a navegadores.
O W3C padronizou três especificações relacionadas ao WebAssembly:
- — descreve uma máquina virtual de baixo nível para a execução do código intermediário WebAssembly. Os recursos associados ao WebAssembly são fornecidos no formato “.wasm”, semelhante ao arquivo “.class” em Java e contendo dados estáticos e segmentos de código para trabalhar com esses dados.
- — define uma interface de programação baseada no mecanismo Promise para solicitar e executar recursos “.wasm”. O formato dos recursos WebAssembly é otimizado para o início da execução sem esperar o carregamento completo do arquivo, o que melhora a responsividade das aplicações web.
- — fornece uma API para integração com JavaScript. Permite obter valores e passar parâmetros para funções WebAssembly. A execução do WebAssembly segue o modelo de segurança do JavaScript, e toda a interação com o sistema principal ocorre de maneira semelhante à execução de código JavaScript.
No futuro, estão previstos especificações para recursos do WebAssembly, como:
- Multithreading com memória compartilhada e acesso atômico à memória;
- Operações vetoriais baseadas em SIMD, permitindo a paralelização da execução de loops;
- Tipos de referência para links diretos a objetos do código WebAssembly;
- Capacidade de invocar funções sem ocupar espaço adicional na pilha;
- Integração com módulos ECMAScript — possibilidade de carregar código WebAssembly do JavaScript como módulos compatíveis com a especificação ECMAScript 6;
- Modo de operação com coletor de lixo;
- Interfaces de depuração;
- (WebAssembly System Interface) — API para interação direta com o sistema operacional (API POSIX para manipulação de arquivos, sockets, etc.).
Fonte: opennet.ru
