The maintainer of this website has a Spotify Coding Playlist of their Lo-fi Hip Hop beats!

WebAssembly Logo

Wasm By Example

Language:

Introdução à WASI

Em primeiro lugar, devemos responder à pergunta "O que é a WASI?". A resposta formal a isso é: WASI é a Interface de Sistema do WebAssembly ou WebAssembly System Interface, "uma interface modular de sistema para o WebAssembly". Para disponibilizar uma fácil introdução à ideia de porque a WASI é empolgante, vamos dar uma olhada a alguns possíveis casos de uso quando os objetivos da WASI forem alcançados:

É importante observar que esses são exemplos de casos de uso de alto nível, nem todos eles podem ser feitos com a versão atual de WASI, e vamos falar como a WASI ainda se encontra em progresso e sendo sendo padronizada. No entanto, agora que temos uma ideia geral das portas que a WASI pode abrir para os programadores, vamos começar a nos aprofundar nos detalhes de como funciona:

Eu também acho que valeria a pena já aprender alguns termos chaves. Eles vão facilitar muito conversar sobre o WebAssembly fora do navegador com a WASI, e pintar uma imagem mais completa do que foi explicado acima:

A última coisa que vale a pena mencionar é que a WASI usa um modelo de segurança baseado em capacidade. Significa que o host deve oferecer explicitamente uma capacidade ao módulo guest para que ele possa realizar uma ação. Por exemplo, no Wasmtime, por padrão, o módulo guest não pode acessar qualquer parte do sistema de arquivos do host. O usuário que invoca o Wasmtime deve passar os parâmetros --mapdir ou --dir para autorizar aos módulos a capacidade de acessar diretórios no sistema de arquivos do host.

No momento em que escrevemos esta introdução, grande parte da WASI ainda são propostas em discussão. Outros recursos de sistema, tais como rede, ainda não são parte do padrão WASI, mas um dia serão. Então, se você estiver esperando fazer o bind() de um socket no seu módulo WebAssembly, os hosts WASI ainda não expõem essa capacidade. Apenas algumas poucas funcionalidades das que a WASI espera atingir estão completamente implementadas e padronizadas. Uma dessas funcionalidades é o acesso ao sistema de arquivos!

Portanto, vamos dar uma olhada em como modificar o sistema de arquivos no exemplo de "Olá, Mundo" com WASI, se já houver um "olá, mundo" para a sua linguagem. Se não, sinta-se à vontade para olhar a documentação da sua linguagem para ver se já suporta a WASI e nos mandar o exemplo de "Olá, Mundo" com WASI para a sua linguagem.