Wasmer 3.0 arriba amb millores a WASI, APIs, gestió de memòria i més

Wasmer

Wasmer és un temps d'execució de WebAssembly ràpid i segur que permet que els contenidors súper lleugers s'executin a qualsevol lloc: des de l'escriptori fins al núvol, Edge i dispositius IoT

Després de gairebé 6 mesos des del llançament anterior, es va donar a conèixer la nova versió de Wasmer 3.0, la tercera versió principal del projecte que desenvolupa un temps d'execució per executar mòduls WebAssembly que es poden fer servir per crear aplicacions universals que es poden executar en diferents sistemes operatius, així com l'execució de codi que no és de confiança.

La capacitat d'executar la mateixa aplicació a diferents plataformes es proporciona en compilar el codi en un codi intermedi WebAssembly de baix nivell que es pot executar en qualsevol sistema operatiu o integrar-se en programes en altres llenguatges de programació. Els programes són contenidors lleugers que executen pseudocodi WebAssembly.

Aquests contenidors no estan vinculats al sistema operatiu i poden incloure codi escrit originalment en qualsevol llenguatge de programació.

Per traduir WebAssembly al codi de màquina de la plataforma actual, es admet connectar diferents backends de compilació (Singlepass, Cranelift, LLVM) i motors (usant JIT o generant codi de màquina). El control d'accés i la interacció amb el sistema es proporcionen mitjançant l'API WASI (WebAssembly System Interface), que proporciona interfícies de programació per treballar amb fitxers, sockets i altres funcions proporcionades pel sistema operatiu.

la plataforma permet assolir un rendiment d'execució d'aplicacions proper al de les compilacions nadius.

Principals novetats de Wasmer 3.0

En aquesta nova versió de Wasmer 3.0, es va afegir la capacitat de crear arxius executables nadius per a qualsevol plataforma. L'ordre «wasmer create-exe» s'ha redissenyat completament per convertir un fitxer de codi intermedi de WebAssembly en executables autònoms per a plataformes Linux, Windows i macOS que es poden executar sense instal·lar Wasmer.

Una altra de les novetats que es presenta és que es va afegir la capacitat d'executar paquets WAPM ubicats al directori wapm.io usant l'ordre «wasmer run». Per exemple, executar «wasmer run python/python» descarregarà el paquet python del repositori wapm.io i l'executarà.

L'API Wasmer Rust s'ha redissenyat completament, canviant la manera com maneja la memòria i brindant la capacitat d'emmagatzemar objectes Wasm de forma segura a l'estructura Store.

També es destaca en aquesta nova versió de Wasmer 3.0 la implementació millorada de l'API WASI (WebAssembly System Interface), a més que es van corregir problemes a l'API de WASI per treballar amb el sistema de fitxers. S'han redissenyat els tipus interns utilitzant WAI (WebAssembly Interfaces), cosa que permetrà implementar una sèrie de noves funcionalitats en el futur.

A més, també s'han simplificat els motors, ja que en lloc de motors separats per a JIT, enllaç dinàmic i estàtic (Universal, Dylib, StaticLib), ara s'ofereix un motor comú i carrega i guarda codi on es controla en el nivell de configuració de paràmetres.

Per deserialitzar artefactes, s'utilitza el marc rkyv, que proporciona una operació de còpia zero, és a dir, no requereix assignació de memòria addicional i realitza la deserialització utilitzant només el memòria intermèdia proporcionat inicialment.

Dels altres canvis que es destaquen d'aquesta nova versió:

  • Lús de rkyv va augmentar significativament la velocitat dinici.
  • S'ha millorat el compilador Singlepass per admetre funcions de valors múltiples, millorar la fiabilitat i afegir suport per a marcs de maneig d'excepcions.
  • El conjunt de components wasmer-js s'ha implementat per executar Wasmer en un navegador web i interactuar-hi des de JavaScript utilitzant la biblioteca wasm-bindgen.
  • S'ha proposat una estructura nova MemoryView que permet llegir i escriure dades en una àrea de memòria lineal.

Finalment, cal fer esment que els programes es distribueixen en forma de mòduls WebAssembly ordinaris, que es poden administrar mitjançant l'administrador de paquets WAPM. Wasmer també està disponible com una biblioteca que es pot fer servir per incrustar codi WebAssembly en programes Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir i Java.

El codi del projecte està escrit a Rust i es distribueix sota la llicència MIT i en pots consultar més, en el següent enllaç.


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa aquí.

Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.