Bozza dello standard WebAssembly 2.0 rilasciato 

Svelato il W3C Recentemente tramite un post una bozza di una nuova specifica che standardizza il codice di preparazione di WebAssembly 2.0 e API associate per consentire la creazione di applicazioni ad alte prestazioni portabili su browser e piattaforme hardware.

Per i nuovi utenti di WebAssembly, dovresti saperlo questo fornisce un middleware generico, basso livello e indipendente dal browser, per eseguire applicazioni compilate da vari linguaggi di programmazione. Utilizzando JIT per WebAssembly, puoi ottenere un livello di prestazioni vicino al codice nativo.

Informazioni su WebAssembly

WebAssembly può essere utilizzato per eseguire attività ad alte prestazioni nel browser, come codifica video, elaborazione audio, manipolazione 3D e grafica, sviluppo di giochi, operazioni crittografiche e calcoli matematici, eseguendo codice scritto in linguaggi compilati come C/C++.

Tra i compiti principali di WebAssembly c'è la fornitura di portabilità, prevedibilità del comportamento e identità dell'esecuzione del codice su piattaforme diverse. Di recente, WebAssembly è stato anche promosso come piattaforma universale per l'esecuzione sicura di codice su qualsiasi infrastruttura, sistema operativo e dispositivo, non limitato ai browser.

Informazioni sulla bozza di WebAssembly 2.0

Da parte delle modifiche apportate da WebAssembly, le proposte finite per WebAssembly 2.0 sono SIMD a larghezza fissa, operazioni di memoria di massa, tipi di riferimento, supporto JavaScript BigInt per WebAssembly i64, supporto per più valori di ritorno e importazione/esportazione di mutabili variabili globali.

Il W3C ha pubblicato tre bozze di specifiche WebAssembly 2.0:

  1. Nucleo di assemblaggio web: descrive una macchina virtuale di basso livello per l'esecuzione di codice WebAssembly intermedio. Le risorse relative a WebAssembly sono disponibili in un formato ".wasm", simile ai file Java ".class", che contengono dati statici e segmenti di codice per lavorare con quei dati.
  2. Interfaccia JavaScript di WebAssembly: fornisce un'API per l'integrazione con JavaScript. Consente di ottenere valori e passare parametri alle funzioni WebAssembly. L'esecuzione di WebAssembly segue il modello di sicurezza JavaScript e tutte le interazioni con l'host vengono eseguite in modo simile all'esecuzione del codice JavaScript.
  3. API Web WebAssembly: definisce un'API basata sul meccanismo Promise per la richiesta e l'esecuzione di risorse ".wasm". Il formato delle risorse WebAssembly è ottimizzato per avviare l'esecuzione senza attendere il download completo del file, il che migliora la reattività delle applicazioni Web.

Differenze tra WebAssembly e WebAssembly 2.0

Inoltre, va notato che ci sono alcune importanti modifiche in WebAssembly 2.0 rispetto alla prima versione dello standard:

  • supporto del tipo vettoriale v128 e relative istruzioni vettoriali che consentono di eseguire operazioni su più valori numerici in parallelo (SIMD, istruzione singola, dati multipli).
  • Possibilità di importare ed esportare variabili globali mutevoli, che consente l'associazione globale per i valori come puntatori di stack in C++.
  • Nuove istruzioni per convertire float in int, che invece di generare un'eccezione in caso di overflow del risultato, restituisce il valore minimo o massimo possibile (necessario per SIMD).
  • Istruzioni per espandere il segno di numeri interi (aumentare la profondità di bit di un numero mantenendo il segno e il valore).
  • Supporto per la restituzione di più valori per blocchi e funzioni (oltre a passare più parametri alle funzioni).
  • Implementare le funzioni JavaScript BigInt64Array e BigUint64Array per convertire tra il tipo JavaScript BigInt e la rappresentazione WebAssembly di interi a 64 bit.
  • Supporto per tipi di riferimento (funcref ed externref) e le istruzioni associate (select, ref.null, ref.func e ref.is_null).
  • istruzioni memory.copy, memory.fill, memory.init e data.drop per copiare dati tra regioni di memoria ed eliminare regioni di memoria.
  • Istruzioni per l'accesso diretto e la modifica delle tabelle (table.set, table.get, table.size, table.grow).
  • Possibilità di creare, importare ed esportare più tabelle in un unico modulo. Funzioni per copiare/riempire tabelle in modalità batch (table.copy, table.init ed elem.drop).

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.