Está disponível o Wasmer 3.0, uma ferramenta para a criação de aplicativos baseados em WebAssembly

Foi lançado o terceiro lançamento significativo do projeto Wasmer, que desenvolve um runtime para execução de módulos WebAssembly, podendo ser usado para criar aplicativos universais capazes de rodar em diferentes sistemas operacionais, bem como para a execução isolada de código não confiável. O código do projeto é escrito em Rust e distribuído sob a licença MIT.

A capacidade de executar um único aplicativo em diferentes plataformas é garantida pela compilação do código em um código intermediário de baixo nível WebAssembly, que pode ser executado em qualquer sistema operacional ou incorporado em programas em outras linguagens de programação. Os programas consistem em contêineres leves onde o pseudocódigo WebAssembly é executado. Esses contêineres não estão vinculados ao sistema operacional e podem incluir código originalmente escrito em qualquer linguagem de programação. Para a compilação em WebAssembly, pode-se usar a ferramenta Emscripten. Para a tradução do WebAssembly em código de máquina da plataforma atual, suportam-se diferentes backends de compilação (Singlepass, Cranelift, LLVM) e motores (usando JIT ou geração de código de máquina).

Os aplicativos estão isolados do sistema principal em um ambiente sandbox e têm acesso apenas à funcionalidade declarada (o mecanismo de segurança baseado em controle de capacidades - para ações com cada um dos recursos (arquivos, diretórios, sockets, chamadas de sistema, etc.) o aplicativo deve ter as respectivas permissões). O controle de acesso e a interação com o sistema são garantidos pela API WASI (WebAssembly System Interface), que fornece interfaces de programação para trabalhar com arquivos, sockets e outras funções oferecidas pelo sistema operacional.

A plataforma permite que se alcance um desempenho de execução de aplicativos próximo ao de compilações nativas. Com o Native Object Engine para o módulo WebAssembly, é possível gerar código de máquina ("wasmer compile —native" para a geração de arquivos de objeto pré-compilados .so, .dylib e .dll), para cuja execução requer-se um runtime mínimo, mas mantém todas as possibilidades de isolamento sandbox. É possível fornecer programas pré-compilados com o Wasmer embutido. Para a criação de extensões e complementos, são oferecidas APIs Rust e Wasm-C-API.

Para executar um contêiner WebAssembly, basta instalar o runtime Wasmer no sistema, que é fornecido sem dependências externas ("curl https://get.wasmer.io -sSfL | sh"), e executar o arquivo necessário ("wasmer test.wasm"). Os programas são distribuídos na forma de módulos WebAssembly comuns, que podem ser gerenciados usando o gerenciador de pacotes WAPM. O Wasmer também está disponível na forma de uma biblioteca que pode ser usada para incorporar código WebAssembly em programas nas linguagens Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir e Java.

Mudanças principais no Wasmer 3.0:

  • Adicionada a capacidade de criar arquivos executáveis nativos para qualquer plataforma. A ferramenta "wasmer create-exe" foi completamente reformulada, permitindo transformar um arquivo com código intermediário WebAssembly em arquivos executáveis autossuficientes para as plataformas Linux, Windows e macOS, que podem funcionar sem a instalação do próprio Wasmer.
  • Foi introduzida a possibilidade de executar pacotes WAPM, hospedados no diretório wapm.io, com o comando "wasmer run". Por exemplo, a execução de "wasmer run python/python" resultará no download do pacote python do repositório wapm.io e sua execução.
  • O Wasmer Rust API foi totalmente reformulado, mudando o estilo de gerenciamento de memória e permitindo a salvaguarda segura de objetos Wasm na estrutura Store. Uma nova estrutura MemoryView foi proposta, permitindo ler e gravar dados em uma área linear de memória.
  • Um conjunto de componentes wasmer-js foi implementado para executar o Wasmer no navegador web e interagir com ele a partir do JavaScript, utilizando a biblioteca wasm-bindgen. Em termos de funcionalidades, o wasmer-js é equivalente aos componentes wasmer-sys, projetados para executar o Wasmer em sistemas operacionais convencionais.
  • Os mecanismos foram simplificados. Em vez de mecanismos separados para JIT, vinculação dinâmica e estática (Universal, Dylib, StaticLib), agora é oferecido um único mecanismo geral, cujo gerenciamento de carga e salvamento de código é controlado em nível de configuração.
  • O framework rkyv foi utilizado para a desserialização de artefatos, garantindo operação em modo zero-copy, ou seja, não requer alocação de memória adicional e realiza a desserialização utilizando apenas o buffer originalmente fornecido. A aplicação do rkyv permitiu um aumento significativo na velocidade de inicialização.
  • Melhorado o compilador Singlepass de passagem única, que agora suporta funções com múltiplos argumentos (multi-value), aumentou a confiabilidade do funcionamento e adicionou suporte a quadros de tratamento de exceções.
  • Melhorada a implementação da API WASI (WebAssembly System Interface). Problemas foram resolvidos na interface WASI para interação com o sistema de arquivos. Tipos internos foram retrabalhados utilizando WAI (WebAssembly Interfaces), o que no futuro permitirá a implementação de uma série de novas funcionalidades.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster