WASI um projeto Mozilla para usar WebAssembly fora do navegador

WASI um projeto Mozilla para usar WebAssembly fora do navegador

Os desenvolvedores da Mozilla apresentaram o projeto WASI (WebAssembly System Interface), que está trabalhando na definição de interfaces de software que podem ser usadas para organizar a interação de aplicativos entregues no formato WebAssembly com o sistema operacional.

O objetivo do projeto é fornecer uma API que amplie o uso do WebAssembly e permita a criação de programas baseado regular Nesta tecnologia que funciona fora do navegadorEles são portáteis para qualquer plataforma e demonstram um alto nível de segurança.

O que é WASI?

WASI permite que o ambiente WebAssembly tenha acesso às funções fornecidas pelo sistema operacionalcomo arquivos, sistema de arquivos, soquetes de rede, temporizadores e geradores de números aleatórios.

A API WASI é inicialmente desenvolvida como independente do navegador e autônoma da API JavaScript / Web, mas ao mesmo tempo, fornece um nível adequado de isolamento do sistema main (aplicativos executados em uma sandbox) e permite definir explicitamente a autoridade dada ao aplicativo no estilo de CloudABI e Capsicum.

WASI usa um modelo de segurança baseado na gestão de permissões, dentro do qual um programa só pode executar deliberadamente ações autorizadas.

Semelhante a como o WebAssembly limita o acesso no nível das funções de importação, o WASI controla o acesso aos recursos do sistema.

Arquivos, diretórios, soquetes e outros recursos são associados a um tipo especial de descritor de arquivo (capacidade) e o aplicativo deve ter permissões para executar uma ação em cada um dos recursos.

As permissões são gerenciadas hierarquicamente, ou seja, o acesso ao diretório é aberto automaticamente e o acesso a todos os arquivos nele contidos.

Dado que WebAssembly é uma versão de linguagem assembly independente de plataforma, o uso de JIT pode atingir um nível de desempenho próximo ao código nativo, enquanto mantém a capacidade de execução em várias plataformas de hardware e sistemas operacionais.

Atualmente o projeto fornece o módulo wasi-core com a implementação da API POSIX básica (arquivos, sockets, etc.), que atualmente carece de suporte para bloqueios e E / S assíncronas.

No futuro, está prevista a criação de módulos com implementação de API para realizar operações criptográficas, trabalhar com gráficos 3D, interagir com sensores, operações com processos (a chamada fork ainda não é suportada) e processar dados multimídia.

Protótipos de componentes

Wasmtime é um runtime responsável por executar aplicativos baseados em WebAssembly com extensões WASI como aplicativos autônomos comuns.

Se suporta o lançamento de bytecode WebAssembly com a ajuda de um utilitário especial de linha de comando e o design de arquivos executáveis ​​prontos para uso (o wasmtime é integrado ao aplicativo como uma biblioteca).

Para atingir o nível apropriado de desempenho, um compilador JIT baseado no gerador de código de elevação é usado.

Lucet é outra versão em tempo de execução do projeto Fastly (o código está programado para ser publicado hoje ou amanhã).

SDK WASI- Ferramentas para compilar aplicações C / C ++ em formato web assembly usando Clang 8.0.

Um destino de montagem com suporte WASI para a linguagem Rust, que permite compilar o código Rust em um WebAssembly.

Wasi-sysroot é uma implementação da biblioteca libc padrão para WASI, com base no código Musl, bem como uma camada de tempo de execução para traduzir as funções fornecidas pela biblioteca em chamadas de sistema de vários sistemas operacionais para alcançar a possibilidade de executar um aplicativo WASI em diferentes sistemas operacionais.

O projeto também está desenvolvendo a biblioteca JavaScript polyfill com uma implementação WASI para executar aplicativos no navegador., que permite aplicar o modelo de controle de acesso "capacidades" ao código executado no navegador.

Dos planos, é mencionada a criação de um sistema de módulo baseado em WASI para integração em aplicativos de plug-in isolados com funcionalidade adicional fornecida no formato WebAssembly.

Uma das principais tarefas do WebAssembly é garantir portabilidade, previsibilidade de comportamento e identidade de execução de código em diferentes plataformas.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.