È 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 correlata, consentendo la creazione di applicazioni ad alte prestazioni trasferibili tra browser e piattaforme hardware. WebAssembly fornisce un codice intermedio universale a basso livello e 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 attraverso l'organizzazione dell'esecuzione nel browser di codice scritto in linguaggi compilabili come C/C++. Grazie all'uso del JIT per WebAssembly, è possibile raggiungere un livello di prestazioni vicino al codice nativo.

Tra i principali obiettivi di WebAssembly si evidenziano la portabilità, la prevedibilità del comportamento e l'identità dell'esecuzione del codice su piattaforme diverse. WebAssembly non è limitato ai browser ed è promosso anche 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 di codice intermedio WebAssembly. Le risorse legate a WebAssembly vengono fornite nel formato '.wasm', simile ai file '.class' in Java e contenente dati statici e segmenti di codice per gestire questi dati.
  • WebAssembly JavaScript API - fornisce un'API per l'integrazione con JavaScript. Consente di ottenere valori e trasmettere parametri alle funzioni WebAssembly. L'esecuzione di WebAssembly rispetta il modello di sicurezza di JavaScript, e tutte le interazioni con il sistema principale avvengono come per l'esecuzione di codice JavaScript.
  • WebAssembly Web API — definisce un'interfaccia programmabile basata sul meccanismo Promise per richiedere ed eseguire risorse '.wasm'. Il formato delle risorse WebAssembly è ottimizzato per un avvio rapido dell'esecuzione, senza attendere il caricamento completo del file, il che aumenta la reattività delle applicazioni web.
  • 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, generatori di numeri pseudocasuali e orologi di sistema.

Si segnala che nella nuova versione dello standard è stata significativamente migliorata la supporto per la compilazione in WebAssembly di linguaggi di alto livello. Ad esempio, è stata implementata la possibilità di compila in WebAssembly progetti in linguaggi come 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 di indirizzamento a 64 bit. Per l'indirizzamento della memoria ora può essere utilizzato il tipo i64, e non solo i32, il che amplia lo spazio di indirizzamento disponibile per le applicazioni da 4 GB a 16 EB (nel browser è impostato un limite di 16 GB).
  • È stata fornita la possibilità di utilizzare contemporaneamente più oggetti di memoria in un unico modulo WebAssembly e lavorare con spazi di indirizzamento diversi. Tra le altre cose, è possibile copiare dati tra diversi istanze di oggetti di memoria, collocati in diversi spazi di indirizzamento.
  • È stato aggiunto il supporto per la raccolta dei rifiuti. Oltre alla memoria lineare precedentemente disponibile, è stato proposto un tipo di archiviazione separato, gestito automaticamente dal garbage collector. Il compilatore ora può utilizzare strutture dati separate, array e variabili, di cui WebAssembly gestisce l'allocazione della memoria e il ciclo di vita.
  • È stato aggiunto il supporto per riferimenti tipizzati, che possono descrivere esattamente la struttura del valore a cui il riferimento punta, consentendo di evitare controlli aggiuntivi durante l'esecuzione. Sono supportati i sottotipizzati, la ricorsione dei tipi e la possibilità di utilizzare in modo sicuro riferimenti a funzioni, senza necessità di controlli dei tipi e dei limiti durante l'esecuzione.
  • È stato aggiunto il supporto per le chiamate di coda (Tail call), in cui la funzione corrente termina immediatamente dopo la chiamata a un'altra funzione, senza occupare spazio nello stack.
  • È stato aggiunto il supporto per la gestione delle eccezioni.
  • È stato aggiunto il supporto per le istruzioni SIMD 'rilassate' (relaxed), che consentono di ottenere prestazioni più elevate rinunciando al rispetto rigoroso della semantica su tutte le piattaforme hardware.
  • È stato aggiunto il supporto per un profilo di esecuzione deterministico, che definisce un comportamento indipendente dalla piattaforma attuale per le istruzioni i cui risultati di esecuzione possono differire tra diverse piattaforme (operazioni in virgola mobile, ritorno di valori NaN, istruzioni vettoriali rilassate). Scegliendo questo profilo, Wasm garantisce un comportamento deterministico, riproducibilità e portabilità.
  • È stata aggiunta la sintassi per creare annotazioni personalizzate che consentono di allegare informazioni aggiuntive al codice WebAssembly. In precedenza, il supporto per sezioni personalizzate che permettono di memorizzare informazioni arbitrarie era presente nel formato binario di WebAssembly, ma mancava 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