wasm3, um intérprete WebAssembly lança sua primeira versão

W3

Faz pouco, a primeira versão do wasm3 foi lançada, o qual é um interprete muito rápido de código intermediário por WebAssemblyComo ele é projetado principalmente para executar aplicativos WebAssembly em microcontroladores e plataformas para as quais não há implementação JIT para WebAssembly, não há memória suficiente para o JIT funcionar ou a criação de páginas de memória executáveis ​​necessárias para a implementação JIT.

Para quem não está familiarizado com WebAssembly, você deve saber que este é uma linguagem de baixo nível, inicialmente projetado como um formato de destino ao compilar de C e C ++, embora também suporte código-fonte para outras linguagens, como Rust e Go. Este formato de código binário portátil é usado para execução completa de scripts a partir do navegador do lado do cliente.

sobre wasm3

Wasm3 passa nos testes de compatibilidade com a especificação WebAssembly 1.0 e pode ser usado para executar muitos aplicativos WASI, fornecendo desempenho apenas 4-5 vezes menor do que os mecanismos JIT e 11.5 vezes menor do que a execução de código nativo.

Comparado a outros performers do WebAssembly (wac, life, wasm-micro-runtime), wasm3 foi 15.8 vezes mais rápido.

Wasm3 começou como um projeto de pesquisa e continua sendo por muitos meios. A avaliação do motor em diferentes ambientes faz parte da investigação. Uma vez que temos Lua, JS, Python, Lisp, (...) rodando em MCU, WebAssembly é na verdade uma alternativa promissora. Ele fornece um ambiente completamente isolado, bem definido e previsível. Entre os casos de uso práticos, podemos listar computação de ponta, scripts, execução de regras de IoT, contratos de blockchain, etc.

wasm3 requer 64 KB de memória para código e 10 KB de RAM, o que você 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), AT40ga5), AT1284gaXNUMX) , bem como em placas e computadores baseados em arquiteturas x86, x64, ARM, MIPS, RISC-V e Xtens.

O alto desempenho é alcançado usando a técnica Massey Meta Machine (M3) no intérprete, em que, para reduzir a sobrecarga de decodificação do bytecode, o bytecode é traduzido de forma proativa em operações mais eficientes que geram código de pseudo-máquina e o modelo de execução da máquina virtual empilhada torna-se uma abordagem de registro mais eficiente as operações em M3 são funções C, cujos argumentos são os registros da máquina virtual, que podem ser refletidos nos registros da CPU.

Fluxos de trabalho frequentes para otimização são transformados em operações de resumo.

Além disso, Os resultados do estudo podem ser observados no WebAssembly na Web, após analisar 948 mil dos sites mais populares avaliados pelo Alexa, os pesquisadores descobriram que WebAssembly é usado por 1639 sites (0.17%), ou seja, 1 em 600 sites.

No total, os sites revelaram a carga de 1950 módulos do WebAssembly, dos quais 150 são exclusivos.

Ao considerar o escopo do WebAssembly, conclusões decepcionantes foram tiradas: em mais de 50% dos casos, o WebAssembly foi usado para fins maliciosos, por exemplo, para minerar criptomoedas (55,7%) e para ocultar o código de scripts maliciosos (0,2 , XNUMX%).

Dos sistemas operacionais suportados para Wasm3, podemos encontrar Linux incluindo roteadores baseados em OpenWRT, Windows, macOS, Android e iOS. Também foi possível compilar wasm3 no código WebAssembly intermediário para executar o interpretador em um navegador ou para auto-hospedagem.

Dos usos legítimos do WebAssembly, foram observados a execução de biblioteca (38.8%), a criação de jogos (3.5%) e a execução de código nativo não JavaScript (0.9%). Em 14,9% dos casos, o WebAssembly foi utilizado para analisar o ambiente para identificação do usuário (impressões digitais).

Tente wasm3

Para aqueles que estão interessados ​​em poder usar este intérprete em seu sistema, pode consultar a documentação, bem como o código do projeto que é escrito em C e distribuído sob a licença MIT, no link a seguir.


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.