È stato pubblicato lo standard WebAssembly 3.0

Il consorzio W3C ha annunciato la disponibilità della specifica che standardizza il codice intermedio WebAssembly 3.0 e l'API associato, consentendo la creazione di applicazioni ad alte prestazioni portabili tra browser e piattaforme hardware. WebAssembly fornisce un codice intermedio universale a basso livello indipendente dal browser per l'esecuzione di applicazioni compilate da vari linguaggi di programmazione.

La tecnologia WebAssembly può essere utilizzata per eseguire nel browser compiti che richiedono elevate prestazioni, come la codifica video, l'elaborazione audio, la manipolazione grafica e 3D, lo sviluppo di giochi, operazioni crittografiche e calcoli matematici, organizzando l'esecuzione nel browser di codice scritto in linguaggi compilabili come C/C++. Grazie all'uso del JIT per WebAssembly, è possibile raggiungere livelli di prestazione vicini al codice nativo.

Tra i principali obiettivi di WebAssembly, si evidenzia la garanzia di portabilità, prevedibilità del comportamento e identità di esecuzione del codice su diverse piattaforme. WebAssembly non è limitato ai browser ed è anche promosso come piattaforma universale per l'esecuzione sicura del codice in qualsiasi infrastruttura, sistema operativo e dispositivo.

Sono disponibili le seguenti specifiche:

  • WebAssembly Core — descrive una macchina virtuale a basso livello per l'esecuzione del codice intermedio di WebAssembly. Le risorse legate a WebAssembly sono fornite nel formato «.wasm», simile ai file «.class» in Java e contenenti dati statici e segmenti di codice per lavorare con tali dati.
  • WebAssembly JavaScript API — fornisce un'API per l'integrazione con JavaScript. Permette di ottenere valori e passare parametri alle funzioni WebAssembly. L'esecuzione di WebAssembly segue il modello di sicurezza di JavaScript e tutte le interazioni con il sistema principale avvengono in modo analogo all'esecuzione di codice JavaScript.
  • WebAssembly Web API — definisce un'interfaccia di programmazione basata sul meccanismo Promise per la richiesta e l'esecuzione delle risorse «.wasm». Il formato delle risorse WebAssembly è ottimizzato per l'avvio dell'esecuzione senza attendere il caricamento completo del file, migliorando così la reattività delle web app.
  • WASI API — definisce un'interfaccia di sistema modulare per eseguire WebAssembly al di fuori dei browser e fornire accesso a risorse come file, connessioni di rete, generatore di numeri casuali e orologi di sistema.

Si segnala che nella nuova versione dello standard è stata notevolmente migliorata la supporto alla compilazione in WebAssembly per i linguaggi di programmazione ad alto livello. Ad esempio, è stata implementata la possibilità di compilare in WebAssembly progetti scritti in Java, OCaml, Scala, Kotlin, Scheme e Dart. Le principali modifiche in WebAssembly 3.0, rispetto alla seconda versione dello standard:

  • È stata implementata la supporto per uno spazio degli indirizzi a 64 bit. Ora è possibile utilizzare il tipo i64 per l'indirizzamento della memoria, invece di i32, ampliando lo spazio degli indirizzi disponibile per le applicazioni da 4 GB a 16 EB (con un limite di 16 GB quando eseguito nel browser).
  • È stata fornita la possibilità di utilizzare simultaneamente più oggetti di memoria all'interno di un unico modulo WebAssembly e di lavorare con diversi spazi degli indirizzi. Tra le altre cose, è possibile copiare dati tra diverse istanze di oggetti di memoria collocati in spazi degli indirizzi differenti.
  • È stata aggiunta la supporto per la gestione della memoria. Oltre alla memoria lineare già disponibile, è stato proposto un tipo di archiviazione separato, gestito automaticamente tramite un raccoglitore di rifiuti. Il compilatore ora può utilizzare strutture dati separate, array e variabili, per l'allocazione della memoria e la gestione del ciclo di vita che sono responsabilità di WebAssembly.
  • È stata aggiunta la supporto per i riferimenti tipizzati, che possono descrivere la struttura esatta del valore a cui si riferisce il riferimento, consentendo di evitare controlli aggiuntivi durante l'esecuzione. Sono supportati i sottotipi, la ricorsione dei tipi e la possibilità di utilizzare in modo sicuro i riferimenti a funzioni senza necessità di controlli di tipo e limiti durante l'esecuzione.
  • È stata aggiunta la supporto per le chiamate di ritorno (Tail call), in cui la funzione corrente termina immediatamente l'esecuzione dopo la chiamata di un'altra funzione, senza consumare spazio nello stack.
  • È stata aggiunta la supporto per la gestione delle eccezioni.
  • È stata aggiunta la supporto per le istruzioni SIMD vettoriali 'rilassate' (relaxed), che consentono di ottenere prestazioni più elevate grazie alla rinuncia al rispetto rigoroso della semantica su tutte le piattaforme hardware.
  • Aggiunta la supporto per il profilo di esecuzione deterministico, che definisce un comportamento indipendente dalla piattaforma corrente per le istruzioni i cui risultati di esecuzione possono variare su piattaforme diverse (operazioni in virgola mobile, restituzione del valore NaN, istruzioni vettoriali attenuate). Selezionando questo profilo, Wasm garantisce un comportamento deterministico, riproducibilità e portabilità.
  • Aggiunta la sintassi per creare annotazioni personalizzate, che consentono di aggiungere informazioni aggiuntive al codice WebAssembly. In precedenza, era supportata la sezione personalizzata per memorizzare informazioni arbitrarie nel formato binario di WebAssembly, ma era assente nel formato testuale di WebAssembly. Ora è possibile aggiungere queste informazioni in un formato leggibile e modificabile.
  • Nell'API JavaScript sono state aggiunte funzioni integrate per lavorare con le stringhe. In precedenza, le stringhe JavaScript potevano essere passate a WebAssembly solo come riferimenti esterni, mentre ora è possibile accedere direttamente alle stringhe e manipolarle all'interno di WebAssembly.

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