Wasm3 entra em fase de manutenção mínima
(github.com/wasm3)- 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
wasm3passa na WebAssembly spec testsuite e consegue executar muitos appsWASI; 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
- O Wasm3 tem como objetivo ser um interpretador WebAssembly rápido e um runtime WASM de uso geral
- As afirmações de desempenho se baseiam no CoreMark 1.0 e em benchmarks independentes
- O desempenho real pode variar conforme o ambiente
- Também pode ser usado como biblioteca em muitas linguagens e ambientes
Ambientes de execução e requisitos
wasm3passa 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,ARC32etc.
- 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
wasm3executandowasm3
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,Lispe outros já rodam em MCUs,WebAssemblytambé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 rulese smart contracts
Referências e licença
- Documentos principais
- Materiais relacionados
- O projeto é distribuído sob a MIT License
1 comentários
Comentários do Hacker News
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
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
O desempenho é muito bom, e a beleza da arquitetura e do código também é realmente impressionante
O tweet linkado é de setembro de 2022 e mostra um vídeo da casa destruída, pedindo doações a quem quiser ajudar
A UE deveria colocar mais dinheiro para ajudar a Ucrânia