Wasmer 2.0, un conjunt d'eines per crear aplicacions basades en WebAssembly, està disponible

El projecte Wasmer ha llançat la seva segona versió important, desenvolupant un temps d'execució per executar mòduls WebAssembly que es poden utilitzar per crear aplicacions universals que es poden executar en diferents sistemes operatius, així com per executar codi no fiable de manera aïllada. El codi del projecte està escrit en Rust i es distribueix sota la llicència MIT.

La portabilitat s'aconsegueix compilant el codi de l'aplicació en codi intermedi WebAssembly de baix nivell, que es pot executar en qualsevol sistema operatiu o incrustat 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ó. El conjunt d'eines Emscripten es pot utilitzar per compilar a WebAssembly. Per traduir WebAssembly al codi màquina de la plataforma actual, admet la connexió de diversos backends de compilació (Singlepass, Cranelift, LLVM) i motors (utilitzant JIT o generació de codi màquina).

El control d'accés i la interacció amb el sistema es proporciona mitjançant l'API WASI (WebAssembly System Interface), que proporciona interfícies de programació per treballar amb fitxers, sòcols i altres funcions proporcionades pel sistema operatiu. Les aplicacions estan aïllades del sistema principal en un entorn sandbox i només tenen accés a la funcionalitat declarada (un mecanisme de seguretat basat en la gestió de capacitats: per a accions amb cadascun dels recursos (fitxers, directoris, sòcols, trucades al sistema, etc.), el s'han de donar les facultats corresponents).

Per llançar un contenidor WebAssembly, només cal que instal·leu Wasmer al sistema d'execució, que ve sense dependències externes ("curl https://get.wasmer.io -sSfL | sh") i executeu el fitxer necessari ("wasmer test.wasm" ). Els programes es distribueixen en forma de mòduls WebAssembly habituals, que es poden gestionar mitjançant el gestor de paquets WAPM. Wasmer també està disponible com a biblioteca que es pot utilitzar per incrustar codi WebAssembly als programes Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir i Java.

La plataforma us permet assolir un rendiment d'execució d'aplicacions proper als assemblatges natius. Mitjançant el Native Object Engine per al mòdul WebAssembly, podeu generar codi màquina ("wasmer compile -native" per generar fitxers d'objectes .so, .dylib i .dll precompilats), que requereix un temps d'execució mínim per executar-se, però conserva tot l'aïllament de la caixa de proves. característiques. És possible subministrar programes precompilats amb Wasmer integrat. L'API Rust i la Wasm-C-API s'ofereixen per crear complements i extensions.

Un canvi significatiu en el número de versió de Wasmer s'associa amb la introducció de canvis incompatibles a l'API interna, que, segons els desenvolupadors, no afectaran el 99% dels usuaris de la plataforma. Entre els canvis que trenquen la compatibilitat, també hi ha un canvi en el format dels mòduls Wasm serialitzats (els mòduls serialitzats a Wasmer 1.0 no es podran utilitzar a Wasmer 2.0). Altres canvis:

  • Suport per a instruccions SIMD (Single Instruction, Multiple Data), que permet la paral·lelització de les operacions de dades. Les àrees en què l'ús de SIMD pot millorar significativament el rendiment inclouen l'aprenentatge automàtic, la codificació i descodificació de vídeo, el processament d'imatges, la simulació de processos físics i la manipulació de gràfics.
  • Suport per a tipus de referència, que permet als mòduls Wasm accedir a la informació d'altres mòduls o a l'entorn subjacent.
  • S'han fet importants optimitzacions de rendiment. La velocitat del temps d'execució de LLVM amb números de coma flotant s'ha augmentat aproximadament un 50%. Les trucades de funcions s'han accelerat significativament reduint les situacions que requereixen accés al nucli. El rendiment del generador de codi Cranelift s'ha augmentat un 40%. Temps de deserialització de dades reduït.
    Wasmer 2.0, un conjunt d'eines per crear aplicacions basades en WebAssembly, està disponible
    Wasmer 2.0, un conjunt d'eines per crear aplicacions basades en WebAssembly, està disponible
  • Per reflectir l'essència amb més precisió, s'han canviat els noms dels motors: JIT → Universal, Natiu → Dylib (Biblioteca dinàmica), Fitxer d'objectes → StaticLib (Biblioteca estàtica).

Font: opennet.ru

Afegeix comentari