Wasmer 2.0, un conxunto de ferramentas para crear aplicacións baseadas en WebAssembly, está dispoñible

O proxecto Wasmer lanzou a súa segunda versión principal, desenvolvendo un tempo de execución para executar módulos WebAssembly que se poden usar para crear aplicacións universais que poidan executarse en diferentes sistemas operativos, así como para executar código non fiable de forma illada. O código do proxecto está escrito en Rust e distribúese baixo a licenza MIT.

A portabilidade conséguese compilando o código da aplicación en código intermedio de WebAssembly de baixo nivel, que pode executarse en calquera SO ou incorporarse a programas noutras linguaxes de programación. Os programas son contedores lixeiros que executan o pseudocódigo de WebAssembly. Estes contedores non están vinculados ao sistema operativo e poden incluír código escrito orixinalmente en calquera linguaxe de programación. O conxunto de ferramentas Emscripten pódese usar para compilar en WebAssembly. Para traducir WebAssembly ao código máquina da plataforma actual, admite a conexión de varios backends de compilación (Singlepass, Cranelift, LLVM) e motores (usando JIT ou xeración de código máquina).

O control de acceso e a interacción co sistema realízase mediante a API WASI (WebAssembly System Interface), que proporciona interfaces de programación para traballar con ficheiros, sockets e outras funcións proporcionadas polo sistema operativo. As aplicacións están illadas do sistema principal nun ambiente sandbox e só teñen acceso á funcionalidade declarada (un mecanismo de seguridade baseado na xestión de capacidades: para accións con cada un dos recursos (arquivos, directorios, sockets, chamadas ao sistema, etc.), aplicación debe contar con poderes apropiados).

Para lanzar un contenedor WebAssembly, abonda con instalar o tempo de execución de Wasmer no sistema, que vén sen dependencias externas ("curl https://get.wasmer.io -sSfL | sh") e executar o ficheiro necesario ("proba de wasmer". .wasm”). Os programas distribúense en forma de módulos WebAssembly ordinarios, que se poden xestionar mediante o xestor de paquetes WAPM. Wasmer tamén está dispoñible como biblioteca que se pode usar para incorporar código WebAssembly en programas Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir e Java.

A plataforma permítelle acadar un rendemento de execución de aplicacións próximo ao dos conxuntos nativos. Usando o Native Object Engine para un módulo WebAssembly, pode xerar código nativo ("wasmer compile -native" para xerar ficheiros de obxectos .so, .dylib e .dll precompilados), que require un tempo de execución mínimo para executarse, pero conserva todas as características de illamento sandbox. É posible proporcionar programas precompilados con Wasmer incorporado. Ofrécense Rust API e Wasm-C-API para crear complementos e complementos.

Un cambio significativo no número de versión de Wasmer está asociado á introdución de cambios incompatibles na API interna, que, segundo os desenvolvedores, non afectarán ao 99% dos usuarios da plataforma. Entre os cambios que rompen a compatibilidade, tamén hai un cambio no formato dos módulos Wasm serializados (os módulos serializados en Wasmer 1.0 non se poderán utilizar en Wasmer 2.0). Outros cambios:

  • Soporte para instrucións SIMD (Single Instruction, Multiple Data), que permite a paralelización das operacións de datos. As áreas nas que o uso de SIMD pode mellorar significativamente o rendemento inclúen a aprendizaxe automática, a codificación e decodificación de vídeo, o procesamento de imaxes, a simulación de procesos físicos e a manipulación de gráficos.
  • Soporte para tipos de referencia, que permite aos módulos Wasm acceder a información noutros módulos ou no contorno subxacente.
  • Realizáronse importantes optimizacións de rendemento. A velocidade do tempo de execución de LLVM con números de coma flotante aumentou aproximadamente un 50 %. As chamadas de funcións aceleráronse significativamente ao reducir as situacións que requiren acceso ao núcleo. O rendemento do xerador de código Cranelift aumentou nun 40 %. Redución do tempo de deserialización de datos.
    Wasmer 2.0, un conxunto de ferramentas para crear aplicacións baseadas en WebAssembly, está dispoñible
    Wasmer 2.0, un conxunto de ferramentas para crear aplicacións baseadas en WebAssembly, está dispoñible
  • Para reflectir con maior precisión a esencia, cambiáronse os nomes dos motores: JIT → Universal, Nativo → Dylib (Biblioteca dinámica), Ficheiro de obxectos → StaticLib (Biblioteca estática).

Fonte: opennet.ru

Engadir un comentario