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

Il progetto Wasmer ha rilasciato la sua seconda versione principale, sviluppando un runtime per l'esecuzione di moduli WebAssembly che possono essere utilizzati per creare applicazioni universali che possono essere eseguite su diversi sistemi operativi, nonché per eseguire codice non attendibile in isolamento. Il codice del progetto è scritto in Rust ed è distribuito sotto la licenza MIT.

La portabilità si ottiene compilando il codice dell'applicazione in codice intermedio WebAssembly di basso livello, che può essere eseguito su qualsiasi sistema operativo o essere incorporato in programmi in altri linguaggi di programmazione. I programmi sono contenitori leggeri che eseguono lo pseudocodice WebAssembly. Questi contenitori non sono legati al sistema operativo e possono includere codice scritto originariamente in qualsiasi linguaggio di programmazione. Il toolkit Emscripten può essere utilizzato per compilare in WebAssembly. Per tradurre WebAssembly nel codice macchina della piattaforma attuale, supporta la connessione di vari backend di compilazione (Singlepass, Cranelift, LLVM) e motori (utilizzando JIT o generazione di codice macchina).

Il controllo dell'accesso e l'interazione con il sistema vengono forniti utilizzando l'API WASI (WebAssembly System Interface), che fornisce interfacce di programmazione per lavorare con file, socket e altre funzioni fornite dal sistema operativo. Le applicazioni sono isolate dal sistema principale in un ambiente sandbox e hanno accesso solo alle funzionalità dichiarate (un meccanismo di sicurezza basato sulla gestione delle capacità - per azioni con ciascuna delle risorse (file, directory, socket, chiamate di sistema, ecc.), il alla domanda devono essere attribuiti gli opportuni poteri).

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

La piattaforma consente di ottenere prestazioni di esecuzione delle applicazioni vicine agli assembly nativi. Utilizzando il motore di oggetti nativi per il modulo WebAssembly, è possibile generare codice macchina ("wasmer compile -native" per generare file oggetto precompilati .so, .dylib e .dll), che richiede un tempo di esecuzione minimo, ma mantiene tutto l'isolamento sandbox caratteristiche. E' possibile fornire programmi precompilati con Wasmer integrato. L'API Rust e la Wasm-C-API sono offerte per la creazione di componenti aggiuntivi ed estensioni.

Un cambiamento significativo nel numero di versione di Wasmer è associato all'introduzione di modifiche incompatibili all'API interna, che, secondo gli sviluppatori, non influenzeranno il 99% degli utenti della piattaforma. Tra le modifiche che interrompono la compatibilità, c'è anche una modifica nel formato dei moduli Wasm serializzati (i moduli serializzati in Wasmer 1.0 non potranno essere utilizzati in Wasmer 2.0). Altre modifiche:

  • Supporto per istruzioni SIMD (Single Instruction, Multiple Data), che consentono la parallelizzazione delle operazioni sui dati. Le aree in cui l'uso di SIMD può migliorare significativamente le prestazioni includono l'apprendimento automatico, la codifica e decodifica video, l'elaborazione delle immagini, la simulazione dei processi fisici e la manipolazione grafica.
  • Supporto per tipi di riferimento, che consente ai moduli Wasm di accedere alle informazioni in altri moduli o nell'ambiente sottostante.
  • Sono state apportate significative ottimizzazioni delle prestazioni. La velocità del runtime LLVM con numeri in virgola mobile è stata aumentata di circa il 50%. Le chiamate alle funzioni sono state notevolmente accelerate riducendo le situazioni che richiedono l'accesso al kernel. Le prestazioni del generatore di codici di Cranelift sono state aumentate del 40%. Tempo di deserializzazione dei dati ridotto.
    È disponibile Wasmer 2.0, un toolkit per la creazione di applicazioni basate su WebAssembly
    È disponibile Wasmer 2.0, un toolkit per la creazione di applicazioni basate su WebAssembly
  • Per riflettere più accuratamente l'essenza, i nomi dei motori sono stati cambiati: JIT → Universale, Nativo → Dylib (Libreria dinamica), File oggetto → StaticLib (Libreria statica).

Fonte: opennet.ru

Aggiungi un commento