Watlings - Aprendendo o WebAssembly Text Format corrigindo pequenos programas
(github.com/EmNudge)- Watlings é um projeto prático para aprender WebAssembly Text Format corrigindo vários pequenos programas
- Cada exercício é concluído seguindo as instruções no diretório
exercises, e as respostas são testadas comnpm start 001_hello - Para conferir a solução, use
npm run show 001_hello; para aplicar a solução diretamente ao exercício, use o comandonpm run solve 001_hello - A compilação e os testes usam Node 23+ e wasm-tools, com o script chamando
wasm-tools parseinternamente - Os exercícios a partir do número 015 usam recursos mais novos do WebAssembly, como exception handling e GC types, e exigem a flag
--experimental-wasm-exnref, disponível apenas no Node.js 23 ou superior - Há uma versão web que pode ser executada no navegador, e é recomendado usar VSCode com a extensão wat-lsp como editor
- A abordagem de aprendizado é centrada em escrever diretamente, apresentando tarefas e contexto por meio de comentários em cada arquivo, reduzindo explicações ao mínimo e promovendo exposição repetida à sintaxe em diferentes contextos
- Como referências para a estrutura do projeto, são citados rustlings e Ziglings
1 comentários
Opiniões do Hacker News
Vejo isso com frequência por aí, mas o que falta no WASM no navegador não é apenas acesso ao DOM, e sim praticamente todas as APIs Web, incluindo
fetcheXMLHttpRequestA lista de APIs Web que o navegador oferece, mas que o WASM não oferece, está aqui; o DOM é só uma delas: https://developer.mozilla.org/en-US/docs/Web/API
Ainda assim, quando o GC for finalizado e tiver suporte nos navegadores, talvez seja possível usar essas interfaces. Dizem que, com suporte a GC, código WebAssembly poderá referenciar e acessar JavaScript, o DOM e objetos definidos em WebIDL comum
Veja o último parágrafo: https://webassembly.org/docs/web/
Considerando as possibilidades que isso pode abrir, parece estar demorando demais para avançar
Parece muito parecido com o modelo do Exercism. O Exercism também tem um curso de WASM gratuito cheio de pequenos exercícios: https://exercism.org/tracks/wasm
Fico curioso se o autor considerou contribuir para esse curso ou trabalhar junto com eles. Assim poderia alcançar um público maior e também aproveitar as ferramentas existentes do Exercism
É um bom modelo em certos contextos, mas o formato deste repositório está mais próximo de
rustlingsouziglings, em que se aprende sintaxe e recursos com exemplos de códigoO módulo de Wasm do Exercism não está exatamente “quebrado”, então não sei se minhas contribuições seriam bem-vindas
Em outras palavras, parecem mais um conjunto de problemas no estilo LeetCode ordenados por dificuldade
Um curso de verdade deveria organizar os exercícios por recursos da linguagem. O Exercism já criou uma ótima interface para isso, mas ela não é usada na maioria das linguagens: https://exercism.org/tracks/csharp/concepts
Uma das minhas formas favoritas de aprender uma nova linguagem ou framework são os koans, e isso me lembrou deles: https://github.com/ahmdrefat/awesome-koans/blob/master/koans...
A progressão suave de recursos básicos para avançados, junto com o fluxo estilo TDD de ver um teste falhar, entender o motivo e depois corrigir, combina bem com o aprendizado. Também dá aquela dose de dopamina do momento “ahá!”
Para experimentar recursos como GC no WASM, é melhor usar o
wasm-optdo Binaryen em vez do WABT. Owasm-optdá suporte a muito mais extensões do WASMBem legal
Não mexi profundamente com WASM diretamente, mas pretendo testar este guia, e acho que, depois de alguns anos, ele já trouxe grandes ganhos para o desenvolvimento Web
Não é o “assassino do JavaScript” que alguns esperavam, mas esse nunca foi o objetivo. Em vez disso, ele se integrou muito bem ao ecossistema existente para otimizar casos de uso já existentes e também viabilizar novos casos quando há necessidade de computação pesada
É um ganho líquido para todos os desenvolvedores Web. Temos bibliotecas mais rápidas, ferramentas de desenvolvimento impressionantes e binários Node mais portáveis
Fico curioso se há outros motivos que eu esteja deixando passar
É bom ver a adoção do WebAssembly continuar avançando. A Microsoft costuma aparecer pouco por aqui, mas, se você tem interesse em WASM, recomendo muito experimentar o Blazor WebAssembly
É um framework muito poderoso que permite usar C#, a maior parte das bibliotecas .NET e até pacotes NuGet no navegador como WASM compilado
Se for um pacote que precisa conseguir ler arquivos do disco, ele simplesmente falha de cara, ou a interface de leitura de arquivos repassa a operação para algo como renderização do lado do servidor?
Projeto ótimo
Mantenho um repositório um pouco relacionado aqui: https://github.com/eliben/wasm-wat-samples/
Tentei usar WASM, mas tive problemas para expor uma conexão com banco de dados SQLite que eu queria acessar localmente
Fico curioso se alguém já fez algo parecido ou conhece bons materiais sobre isso
É realmente interessante que WebAssembly pareça uma linguagem de verdade que dá para escrever à mão até certo ponto
Acho que isso reduz bastante a barreira de entrada para usá-lo como alvo
À medida que WebAssembly se torna a linguagem comum de vários ecossistemas, vale cada vez mais investir tempo para entender bem como ele funciona