È disponibile Wasmer 3.0, un toolkit per la creazione di applicazioni basate su WebAssembly

È stato presentato il terzo importante rilascio del progetto Wasmer, che sviluppa un runtime per l'esecuzione di moduli WebAssembly, utilizzabile per creare applicazioni universal, in grado di funzionare su diversi sistemi operativi, oltre a consentire l'esecuzione isolata di codice non fidato. Il codice del progetto è scritto in Rust e distribuito con licenza MIT.

La possibilità di eseguire un'applicazione su diverse piattaforme è garantita dalla compilazione del codice in un codice intermedio WebAssembly a basso livello, che può essere eseguito su qualsiasi sistema operativo o integrato in programmi scritti in altri linguaggi di programmazione. Le applicazioni sono contenitori leggeri in cui viene eseguito il pseudocodice WebAssembly. Questi contenitori non sono legati al sistema operativo e possono includere codice originariamente scritto in qualsiasi linguaggio di programmazione. Per la compilazione in WebAssembly può essere utilizzato l'insieme di strumenti Emscripten. Per la traduzione di WebAssembly in codice macchina sulla piattaforma attuale è supportata la connessione di diversi backend di compilazione (Singlepass, Cranelift, LLVM) e motori (utilizzando JIT o generando codice macchina).

Le applicazioni sono isolate dal sistema principale in un ambiente sandbox e hanno accesso solo alle funzionalità dichiarate (un meccanismo di sicurezza basato su capacità — per le azioni con ciascuna risorsa (file, directory, socket, chiamate di sistema, ecc.) all'applicazione devono essere concessi i relativi permessi). La gestione degli accessi e l'interazione con il sistema sono garantite tramite l'API WASI (WebAssembly System Interface), che fornisce interfacce di programmazione per lavorare con file, socket e altre funzionalità fornite dal sistema operativo.

La piattaforma consente di ottenere prestazioni di esecuzione delle applicazioni vicine a quelle delle build native. Grazie a Native Object Engine per il modulo WebAssembly, è possibile generare codice macchina ("wasmer compile —native" per generare file oggetto precompilati .so, .dylib e .dll), per l'esecuzione del quale è richiesto un runtime minimo, ma vengono mantenute tutte le funzionalità di isolamento sandbox. È possibile fornire programmi precompilati con Wasmer incorporato. Per la creazione di estensioni e plugin sono disponibili Rust API e Wasm-C-API.

Per eseguire un contenitore WebAssembly, è sufficiente installare il runtime Wasmer nel sistema, che è fornito senza dipendenze esterne ("curl https://get.wasmer.io -sSfL | sh"), e avviare il file necessario ("wasmer test.wasm"). I programmi sono distribuiti sotto forma di normali moduli WebAssembly, la cui gestione può essere effettuata utilizzando il gestore di pacchetti WAPM. Wasmer è disponibile anche come libreria, che può essere utilizzata per integrare codice WebAssembly in programmi scritti in Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir e Java.

Principali novità in Wasmer 3.0:

  • È stata aggiunta la possibilità di creare file eseguibili nativi per qualsiasi piattaforma. Il comando «wasmer create-exe» è stato completamente riprogettato, permettendo di convertire un file con codice intermedio WebAssembly in file eseguibili autonomi per piattaforme Linux, Windows e macOS, che possono funzionare senza installare il software Wasmer.
  • È stata fornita la possibilità di eseguire pacchetti WAPM, ospitati nella directory wapm.io, utilizzando il comando «wasmer run». Ad esempio, l'esecuzione di «wasmer run python/python» porterà al caricamento dal repository wapm.io del pacchetto python e alla sua esecuzione.
  • L'API Wasmer Rust è stata completamente riprogettata, modificando lo stile di gestione della memoria e garantendo la possibilità di salvare in modo sicuro gli oggetti Wasm nella struttura Store. È stata proposta una nuova struttura MemoryView, che consente di leggere e scrivere dati in un'area di memoria lineare.
  • È stato implementato un insieme di componenti wasmer-js per eseguire Wasmer nel browser web e interagire con esso da JavaScript, utilizzando la libreria wasm-bindgen. Per funzionalità, wasmer-js corrisponde ai componenti wasmer-sys, progettati per eseguire Wasmer in sistemi operativi tradizionali.
  • I motori sono stati semplificati. Invece di motori separati per JIT, legame dinamico e legame statico (Universal, Dylib, StaticLib), ora è proposto un unico motore comune, la cui gestione del caricamento e salvataggio del codice avviene a livello di impostazione dei parametri.
  • Per la deserializzazione degli artefatti è stato utilizzato il framework rkyv, che garantisce il funzionamento in modalità zero-copy, ovvero non richiede l'allocazione di memoria aggiuntiva e esegue la deserializzazione solo utilizzando il buffer inizialmente fornito. L'uso di rkyv ha notevolmente aumentato la velocità di avvio.
  • Migliorato il compilatore single-pass Singlepass, che ora supporta funzioni con più argomenti (multi-value), incrementando l'affidabilità operativa e aggiungendo il supporto per i frame di gestione delle eccezioni.
  • É stata migliorata l'implementazione dell'API WASI (WebAssembly System Interface). Sono stati risolti problemi nell'interfaccia WASI per la gestione del filesystem. I tipi interni sono stati riprogettati utilizzando WAI (WebAssembly Interfaces), il che in futuro permetterà di realizzare una serie di nuove funzionalità.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster