Wasmer 2.0, un toolkit per custruisce applicazioni basate in WebAssembly, hè dispunibule

U prughjettu Wasmer hà liberatu a so seconda versione maiò, sviluppendu un runtime per l'esecuzione di moduli WebAssembly chì ponu esse utilizati per creà applicazioni universali chì ponu eseguisce in diversi sistemi operativi, è ancu per eseguisce codice micca fiduciale in isolamentu. U codice di u prughjettu hè scrittu in Rust è hè distribuitu sottu a licenza MIT.

A portabilità hè ottenuta cumpilendu u codice di l'applicazione in u codice intermediu WebAssembly di livellu bassu, chì pò esse esecutatu nantu à qualsiasi OS o esse incrustatu in prugrammi in altre lingue di prugrammazione. I prugrammi sò cuntenituri ligeri chì eseguinu pseudocode WebAssembly. Questi cuntenituri ùn sò micca ligati à u sistema upirativu è ponu include codice scrittu originale in ogni lingua di prugrammazione. U toolkit Emscripten pò esse usatu per cumpilà à WebAssembly. Per traduce WebAssembly in codice macchina di a piattaforma attuale, supporta a cunnessione di diversi backend di compilazione (Singlepass, Cranelift, LLVM) è motori (usendu JIT o generazione di codice macchina).

U cuntrollu di l'accessu è l'interazzione cù u sistema hè furnitu cù l'API WASI (WebAssembly System Interface), chì furnisce interfacce di prugrammazione per travaglià cù schedari, sockets è altre funzioni furnite da u sistema operatore. L'applicazioni sò isolate da u sistema principalu in un ambiente sandbox è anu accessu solu à e funziunalità dichjarata (un mecanismu di sicurezza basatu nantu à a gestione di capacità - per l'azzioni cù ognuna di e risorse (fichi, cartulari, sockets, chjama di sistema, etc.) l'applicazione deve esse attribuita i putenzi adatti).

Per lancià un containeru WebAssembly, basta à stallà Wasmer in u sistema di runtime, chì vene senza dipendenze esterne ("curl https://get.wasmer.io -sSfL | sh"), è eseguite u schedariu necessariu ("wasmer test.wasm" ). I prugrammi sò distribuiti in forma di moduli WebAssembly regulari, chì ponu esse amministrati cù u gestore di pacchetti WAPM. Wasmer hè ancu dispunibule cum'è una libreria chì pò esse usata per incrustà u codice WebAssembly in i prugrammi Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir è Java.

A piattaforma permette di ottene prestazioni di esecuzione di l'applicazione vicinu à l'assemblee native. Utilizendu u Native Object Engine per u modulu WebAssembly, pudete generà codice macchina ("wasmer compile -native" per generà file d'ughjetti precompiled .so, .dylib è .dll), chì richiede un runtime minimu per esse run, ma mantene tuttu l'isolamentu di sandbox. caratteristiche. Hè pussibule furnisce i prugrammi precompilati cù Wasmer integratu. L'API Rust è Wasm-C-API sò offerti per creà add-ons è estensioni.

Un cambiamentu significativu in u numeru di versione di Wasmer hè assuciatu cù l'intruduzioni di cambiamenti incompatibili à l'API internu, chì, sicondu i sviluppatori, ùn avarà micca 99% di l'utilizatori di a piattaforma. Trà i cambiamenti chì rompenu a cumpatibilità, ci hè ancu un cambiamentu in u formatu di i moduli Wasm serializzati (i moduli serializzati in Wasmer 1.0 ùn puderanu micca esse usatu in Wasmer 2.0). Altri cambiamenti:

  • Supportu per l'istruzzioni SIMD (Single Instruction, Multiple Data), chì permette a parallelizazione di l'operazioni di dati. I spazii in quale l'usu di SIMD pò migliurà significativamente u rendiment includenu l'apprendimentu di a macchina, a codificazione è a decodificazione di video, l'elaborazione di l'imaghjini, a simulazione di prucessu fisicu è a manipulazione grafica.
  • Supportu per i tipi di riferimentu, chì permette à i moduli Wasm di accede à l'infurmazioni in altri moduli o in l'ambiente sottostante.
  • Ottimisazioni di rendiment significativu sò state fatte. A velocità di runtime LLVM cù numeri in virgule flottante hè stata aumentata da circa 50%. I chjami di funzione sò stati accelerati significativamente riducendu e situazioni chì necessitanu accessu à u kernel. A prestazione di u generatore di codice Cranelift hè stata aumentata di 40%. Tempu di deserializazione di dati ridutta.
    Wasmer 2.0, un toolkit per custruisce applicazioni basate in WebAssembly, hè dispunibule
    Wasmer 2.0, un toolkit per custruisce applicazioni basate in WebAssembly, hè dispunibule
  • Per riflette più precisamente l'essenza, i nomi di i motori sò stati cambiati: JIT → Universal, Native → Dylib (Biblioteca Dinamica), Object File → StaticLib (Biblioteca Statica).

Source: opennet.ru

Add a comment