Disponibile Wasmer 2.0, strumenti per creare applicazioni basate su WebAssembly

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

La portabilità è garantita dalla compilazione del codice dell'applicazione in un codice intermedio a basso livello WebAssembly, che può essere eseguito su qualsiasi sistema operativo o integrato in programmi in altri linguaggi di programmazione. I programmi sono contenitori leggeri in cui viene eseguito un pseudocodice WebAssembly. Questi contenitori non sono vincolati al sistema operativo e possono includere codice originariamente scritto in qualsiasi linguaggio di programmazione. Per la compilazione in WebAssembly è possibile utilizzare l'insieme di strumenti Emscripten. Per la traduzione di WebAssembly in codice macchina della piattaforma corrente è supportata l'integrazione di diversi backend di compilazione (Singlepass, Cranelift, LLVM) e motori (utilizzando JIT o generando codice macchina).

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. Le applicazioni sono isolate dal sistema principale in un ambiente sandbox e hanno accesso solo alle funzionalità dichiarate (meccanismo di sicurezza basato sulla gestione delle capacità: per ogni risorsa (file, directory, socket, chiamate di sistema, ecc.) devono essere concessi i corrispondenti diritti all'applicazione).

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.

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.

Il cambiamento significativo del numero di versione di Wasmer è legato all'introduzione di modifiche incompatibili all'interno dell'API, che, secondo gli sviluppatori, non influenzeranno il 99% degli utenti della piattaforma. Tra le modifiche incompatibili si segnala anche la modifica del formato dei moduli Wasm serializzati (i moduli serializzati in Wasmer 1.0 non potranno essere utilizzati in Wasmer 2.0). Altre modifiche:

  • Supporto per le istruzioni SIMD (Single Instruction, Multiple Data), che consentono di organizzare il parallelismo delle operazioni sui dati. Tra i settori in cui l'utilizzo di SIMD può migliorare significativamente le prestazioni si segnalano l'apprendimento automatico, la codifica e la decodifica video, l'elaborazione delle immagini, la simulazione dei processi fisici e le manipolazioni grafiche.
  • Supporto per i tipi di riferimento, che consentono ai moduli Wasm di accedere alle informazioni in altri moduli o nell'ambiente di base.
  • È stata effettuata un'importante ottimizzazione delle prestazioni. La velocità di esecuzione del runtime LLVM con numeri a virgola mobile è stata aumentata di circa il 50%. È stata notevolmente accelerata la chiamata delle funzioni grazie alla riduzione delle situazioni che richiedono l'accesso al kernel. La performance del generatore di codice Cranelift è aumentata del 40%. È stato ridotto il tempo di deserializzazione dei dati.
    Disponibile Wasmer 2.0, strumenti per creare applicazioni basate su WebAssembly
    Disponibile Wasmer 2.0, strumenti per creare applicazioni basate su WebAssembly
  • Per riflettere più accuratamente il contenuto, sono stati modificati i nomi dei motori: JIT → Universale, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

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