1 pontos por GN⁺ 2023-12-19 | 1 comentários | Compartilhar no WhatsApp
  • Wasm3 é um interpretador WebAssembly rápido e tem como objetivo ser um runtime WASM de uso geral, mas interrompeu o desenvolvimento de novos recursos e entrou em fase de manutenção mínima
  • O desenvolvedor afirmou que, depois de ter sua casa destruída pela invasão russa, não consegue continuar o desenvolvimento de novos recursos; o projeto continuará vivo, e Pull Requests recebidos serão analisados e mesclados
  • wasm3 passa na WebAssembly spec testsuite e consegue executar muitos apps WASI; os requisitos mínimos úteis do sistema são cerca de 64 KB de código e cerca de 10 KB de RAM
  • Oferece suporte a várias arquiteturas, como x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa e ARC32, além de Linux, Windows, OS X, FreeBSD, Android, iOS, MCU, navegador e até execução de si mesmo
  • A abordagem de interpretador traz vantagens em tamanho do executável, uso de memória, latência de inicialização, portabilidade, segurança e dificuldade de integração; em ambientes onde não é possível criar páginas de código em runtime, como iOS ou o próprio WebAssembly, não é possível usar JIT

Mudança no status de manutenção

  • O Wasm3 entrou em fase de manutenção mínima
    • O desenvolvimento de novos recursos está difícil de continuar
    • O projeto será mantido, e Pull Requests recebidos serão analisados e mesclados ativamente
    • As contribuições da comunidade se tornaram mais importantes do que antes
  • O desenvolvedor afirmou que, depois de sua casa ter sido destruída pela invasão russa, atualmente não consegue dar continuidade ao desenvolvimento de novos recursos

O que o Wasm3 oferece

Ambientes de execução e requisitos

  • wasm3 passa na WebAssembly spec testsuite
  • Consegue executar muitos apps WASI
  • Os requisitos mínimos úteis do sistema são os seguintes
    • Código: cerca de 64 KB
    • RAM: cerca de 10 KB
  • O suporte a arquiteturas é amplo
    • x86, x86_64, ARM, RISC-V, PowerPC, MIPS, Xtensa, ARC32 etc.
  • As plataformas e ambientes compatíveis também são variados
    • Linux, Windows, OS X, FreeBSD, Android, iOS
    • Roteadores e modems baseados em OpenWrt, Yocto e Buildroot
    • SBCs como Raspberry Pi e Orange Pi
    • MCUs como Arduino, ESP8266, ESP32 e Particle
    • Pode ser executado no navegador usando o próprio WebAssembly
    • Também é possível o self-hosting, com wasm3 executando wasm3

Suporte a recursos do WebAssembly

  • Recursos propostos do WebAssembly com suporte
    • Import/Export of Mutable Globals
    • Non-trapping float-to-int conversions
    • Sign-extension operators
    • Multi-value
    • Bulk memory operations tem suporte parcial
    • Custom page size
  • Recursos adicionais
    • Rastreamento de execução estruturado
    • Suporte a sistemas Big-Endian
    • Self-hosting de Wasm e WASI
    • Gas metering
    • Limite de memória linear: menos de 64 KiB
  • Há itens ainda em andamento ou sem suporte
    • Em andamento: Multiple memories, Reference types
    • Sem suporte: Tail call optimization, Fixed-width SIMD, Exception handling, Stack Switching

Por que escolher um interpretador e WASM embarcado

  • Velocidade nem sempre é o requisito principal, e a abordagem por interpretador tem vantagens em várias situações
    • Pode melhorar o tamanho do executável do runtime, o uso de memória e a latência de inicialização
    • É mais fácil obter e manter portabilidade e segurança
    • Uma biblioteca simples como o Wasm3 é fácil de compilar e integrar a projetos existentes, e o build termina em poucos segundos
  • Em algumas plataformas, não é possível usar JIT
    • No iOS e no próprio WebAssembly, não é possível criar páginas de código executável em runtime
  • Também são apresentados motivos para executar WASM em dispositivos embarcados
    • O Wasm3 começou como um projeto de pesquisa, e avaliar o engine em diferentes ambientes faz parte da pesquisa
    • Em um cenário em que Lua, JS, Python, Lisp e outros já rodam em MCUs, WebAssembly também pode ser uma alternativa
    • O WebAssembly oferece separação de toolchain e um ambiente totalmente sandboxed, bem definido e previsível
    • Casos práticos incluem edge computing, scripting, sistemas de plugins, IoT rules e smart contracts

Referências e licença

1 comentários

 
GN⁺ 2023-12-19
Comentários do Hacker News
  • Sou o OP, pronto para responder a perguntas
    • Não tem relação com o projeto Wasm, mas espero que você, seus amigos e sua família estejam seguros. Glória à Ucrânia, que os ocupantes caiam fora
    • Como membro inicial da NAFO, mando meu apoio
      Como esta é uma conta anônima, posso dizer sem que pareça ostentação: tenho feito o que posso, como doar, denunciar trolls, combater desinformação e pressionar políticos. Ainda assim, sinto que continuo em dívida com os ucranianos
      Você não está sozinho, e espero que outras pessoas também façam pequenas ações, como pedir algo a políticos, ajudar com doações os heróis civis e da linha de frente e denunciar desinformação
    • Você está em segurança agora?
    • Você tem tempo para descansar ou fazer algo divertido, ou está só sob estresse o tempo todo?
  • Há mais contexto na postagem do Twitter do Wasm3: https://x.com/wasm3_engine/status/1736712528883769670?s=20
  • Sinceramente, esta notícia me entristece. Wasm3 era um excelente interpretador de Wasm, à frente em desempenho; era cerca de 3 a 5 vezes mais lento que nativo, mas cerca de 3 vezes mais rápido que interpretadores Wasm comuns
    Espero que Volodymyr aguente bem enquanto tenta manter o projeto em meio à invasão russa da Ucrânia, e que a guerra acabe em breve
    • Concordo. É um dos melhores interpretadores WASM e, na minha opinião, melhor até do que alguns runtimes disponíveis por aí
      O desempenho é muito bom, e a beleza da arquitetura e do código também é realmente impressionante
  • A explicação é esta: como a Rússia invadiu e a casa dele foi destruída, o Wasm3 está entrando em fase de manutenção mínima; não será possível continuar desenvolvendo novos recursos, mas ele pretende analisar ativamente e fazer merge de Pull Requests recebidos para manter o projeto vivo
    O tweet linkado é de setembro de 2022 e mostra um vídeo da casa destruída, pedindo doações a quem quiser ajudar
    • Isso é horrível. Slava Ukraini
    • Para impedir a entrada de chuva e neve, parece que essa casa precisa de um telhado novo o quanto antes
    • A esta altura, eu realmente esperava que alguém dentro da Rússia já tivesse removido Putin. Acredito que haja muita gente que não goste exatamente dele
      A UE deveria colocar mais dinheiro para ajudar a Ucrânia