Wasmer 2.0 está disponível, uma ferramenta para desenvolver aplicativos baseados em WebAssembly

O segundo lançamento significativo do projeto Wasmer ocorreu, desenvolvendo um runtime para a execução de módulos WebAssembly, que pode ser usado para criar aplicativos universais capazes de rodar em diferentes sistemas operacionais, além de permitir a execução isolada de código não confiável. O código do projeto é escrito na linguagem Rust e licenciado sob a licença MIT.

A portabilidade é garantida pela compilação do código do aplicativo em um código intermediário de baixo nível WebAssembly, que pode ser executado em quaisquer sistemas operacionais ou incorporado em programas em outras linguagens de programação. Os programas são contêineres leves que executam código WebAssembly. Esses contêineres não estão vinculados ao sistema operacional e podem incluir código originalmente escrito em qualquer linguagem de programação. A ferramenta Emscripten pode ser usada para compilar para WebAssembly. Para a tradução de WebAssembly em código de máquina da plataforma atual, suporta-se a conexão de diferentes backends de compilação (Singlepass, Cranelift, LLVM) e motores (uso de JIT ou geração de código de máquina).

O gerenciamento de acesso e interação com o sistema é garantido através da API WASI (WebAssembly System Interface), que fornece interfaces de programação para gerenciamento de arquivos, sockets e outras funções fornecidas pelo sistema operacional. Os aplicativos estão isolados do sistema principal em um ambiente sandbox e têm acesso somente às funcionalidades declaradas (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 ser concedido as respectivas permissões).

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.

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.

A mudança significativa de versão do Wasmer está relacionada à introdução de alterações incompatíveis na API interna, que, segundo os desenvolvedores, não afetarão 99% dos usuários da plataforma. Entre as alterações incompatíveis, destaca-se a mudança no formato dos módulos Wasm serializados (módulos serializados na versão Wasmer 1.0 não poderão ser usados na versão Wasmer 2.0). Outras alterações:

  • Suporte a instruções SIMD (Single Instruction, Multiple Data), permitindo a paralelização de operações sobre dados. Entre as áreas onde o uso de SIMD pode aumentar significativamente o desempenho, destacam-se aprendizado de máquina, codificação e decodificação de vídeo, processamento de imagens, simulação de processos físicos e manipulação gráfica.
  • Suporte a tipos de referência, permitindo que módulos Wasm acessem informações de outros módulos ou do ambiente base.
  • Uma otimização significativa de desempenho foi realizada. A velocidade de operação do runtime LLVM com números de ponto flutuante aumentou em cerca de 50%. A chamada de funções foi acelerada, reduzindo as situações que exigem chamadas ao núcleo. O desempenho do gerador de código Cranelift aumentou em 40%. O tempo de deserialização de dados foi reduzido.
    Wasmer 2.0 está disponível, uma ferramenta para desenvolver aplicativos baseados em WebAssembly
    Wasmer 2.0 está disponível, uma ferramenta para desenvolver aplicativos baseados em WebAssembly
  • Para refletir com mais precisão a essência, os nomes dos motores foram alterados: JIT → Universal, Native → Dylib (Biblioteca Dinâmica), Object File → StaticLib (Biblioteca Estática).

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