Primeiro lançamento do wasm3, um interpretador WebAssembly rápido

Disponível primeira edição wasm3, um interpretador de código intermediário WebAssembly muito rápido, destinado principalmente ao uso na execução de aplicativos WebAssembly em microcontroladores e plataformas que não possuem uma implementação JIT para WebAssembly, não possuem memória suficiente para executar JIT ou não podem criar as páginas de memória executável necessárias para implementar JIT . O código do projeto é escrito em C e distribuído por sob a licença do MIT.

Passes Wasm3 testes compatível com a especificação WebAssembly 1.0 e pode ser usado para executar muitos aplicativos WASI, fornecendo desempenho apenas 4 a 5 vezes menor que os mecanismos JIT (decolar, guindaste) e 11.5 vezes menor que a execução de código nativo. Quando comparado com outros intérpretes WebAssembly (wac, vida, wasm-micro-tempo de execução), o wasm3 acabou sendo 15.8 vezes mais rápido.

Para executar o wasm3, você precisa de 64 KB de memória de código e 10 KB de RAM, o que permite usar o projeto para executar aplicativos compilados em WebAssembly em microcontroladores, como Arduino MKR *, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) e ATmega1284, bem como em placas e computadores baseados nas arquiteturas x86, x64, ARM, MIPS, RISC-V e Xtensa. Os sistemas operacionais suportados incluem Linux (incluindo roteadores baseados em OpenWRT), Windows, macOS, Android e iOS. Também é possível compilar wasm3 em código intermediário WebAssembly para executar o interpretador no navegador ou para execução aninhada (auto-hospedagem).

Alto desempenho é alcançado através do uso de tecnologia no intérprete Máquina Massey Meta (M3), que traduz bytecode em operações de geração de código de pseudomáquina mais eficientes para reduzir a sobrecarga de decodificação de bytecode e converte o modelo de execução de máquina virtual baseado em pilha em uma abordagem mais eficiente baseada em registro. As operações em M3 são funções C cujos argumentos são registros de máquinas virtuais que podem ser mapeados para registros de CPU. Sequências de operações de otimização que ocorrem com frequência são convertidas em operações de resumo.

Além disso, pode-se notar resultados da pesquisa Distribuição
WebAssembly na Web. Depois de analisar 948 mil sites mais populares de acordo com as classificações do Alexa, os pesquisadores descobriram que o WebAssembly é usado em 1639 sites (0.17%), ou seja, em 1 em cada 600 sites. No total, foram baixados 1950 módulos WebAssembly nos sites, dos quais 150 eram exclusivos. Ao considerar o escopo de uso do WebAssembly, foram tiradas conclusões decepcionantes - em mais de 50% dos casos, o WebAssembly foi usado para fins maliciosos, por exemplo, para mineração de criptomoeda (55.7%) e ocultação de código de scripts maliciosos (0.2%) . Os usos legítimos do WebAssembly incluem execução de bibliotecas (38.8%), criação de jogos (3.5%) e execução de código personalizado não JavaScript (0.9%). Em 14.9% dos casos, o WebAssembly foi utilizado para análise do ambiente para identificação do usuário (impressão digital).

Primeiro lançamento do wasm3, um interpretador WebAssembly rápido

Fonte: opennet.ru

Adicionar um comentário