- Artigo sobre o projeto do autor durante a Hackweek 22 da SUSE, no qual ele construiu um unikernel que executa WebAssembly.
- O autor escolheu esse projeto por vários motivos, incluindo os benefícios potenciais de combinar unikernels e WebAssembly.
- Do ponto de vista de desenvolvedores de aplicações, portar uma aplicação para um unikernel ou escrevê-la para esse ambiente pode ser difícil, já que a aplicação e suas dependências precisam ser compatíveis com o unikernel de destino.
- Mantenedores de unikernels também têm dificuldade em garantir que qualquer aplicação rode sem problemas em suas plataformas, por causa de primitivas de sistema desconhecidas que podem ser usadas por aplicações de usuários.
- No entanto, ao ter como alvo uma plataforma WebAssembly, as aplicações passam a ter um conjunto claro de funcionalidades que devem ser fornecidas pelo runtime de WebAssembly.
- O autor usou o projeto RustyHermit, um unikernel escrito em Rust, como base para a aplicação unikernel.
- O autor também enfrentou dificuldades relacionadas ao runtime de WebAssembly, porque seu runtime preferido, o Wasmtime, não era compilado sobre o RustyHermit. No fim, ele encontrou e usou o wasmi, um runtime de WebAssembly puro em Rust.
- O autor também discute o uso da proposta WebAssembly Component Model no Spiderlightning, que permite fornecer funcionalidades a convidados WebAssembly e também faz com que o host possa usar funcionalidades fornecidas pelos convidados WebAssembly.
- O autor precisou estender o
wit-bindgen, uma ferramenta CLI que gera código de host/convidado a partir de arquivos .wit, para dar suporte ao runtime WebAssembly wasmi.
- O autor encerra o post com uma gravação da aplicação unikernel executando a demonstração
http-server do Spiderlightning, e promete abordar Rust async, Redis e alguns erros na próxima parte da jornada.
1 comentários
Comentários no Hacker News