WebAssembly - Introduzione

WebAssembly è anche chiamato WASM che è stato introdotto per la prima volta nell'anno 2017. Le grandi società tecnologiche dietro l'origine di WebAssembly sono Google, Apple, Microsoft, Mozilla e W3C.

Il ronzio è che WebAssembly sostituirà Javascript a causa della sua esecuzione più veloce, ma non è così. WebAssembly e Javascript hanno lo scopo di lavorare insieme per risolvere i problemi complessi.

Necessità di WebAssembly

Finora, abbiamo solo Javascript che può funzionare correttamente all'interno del browser. Ci sono attività molto pesanti che sono difficili da eseguire nei browser utilizzando javascript.

Per citarne alcuni sono Riconoscimento di immagini, applicazioni CAD (Computer-Aided Design), aumento di video live, realtà virtuale e aumentata, applicazioni musicali, visualizzazione e simulazione scientifica, giochi, editing di immagini / video ecc.

WebAssembly è un nuovo linguaggio con istruzioni binarie che possono essere caricate ed eseguite più velocemente. Il compito sopra indicato, può essere eseguito facilmente in linguaggi di alto livello come C, C ++, Rust ecc. Abbiamo bisogno di un modo in cui il codice che abbiamo in C, C ++, Rust possa essere compilato e possa essere utilizzato nei browser web. Lo stesso è realizzabile utilizzando WebAssembly.

Quando il codice WebAssembly viene caricato all'interno del browser. Quindi, il browser si occupa della conversione in un formato macchina che può essere compreso dai processori.

Per javascript il codice deve essere scaricato, analizzato e convertito in formato macchina. Ci vuole molto tempo e per compiti pesanti come quello che abbiamo menzionato prima può essere molto lento.

Funzionamento di WebAssembly

Linguaggi di alto livello come C, C ++ e Rust sono compilati in formato binario, cioè .wasm e formato testo .wat.

Il codice sorgente scritto in C, C ++ e Rust viene compilato .wasmutilizzando un compilatore. È possibile utilizzare l'SDK Emscripten per compilare C / C ++ in.wasm.

Il flusso è il seguente:

Il codice C / C ++ può essere compilato in .wasmutilizzando Emscripten SDK. Successivamente, il.wasm il codice può essere utilizzato con l'aiuto di javascript nel file html per visualizzare l'output.

Concetti chiave di WebAssembly

I concetti chiave sono come spiegato di seguito:

Modulo

Un modulo è un oggetto che viene compilato dal browser in codice macchina eseguibile. Si dice che un modulo sia senza stato e può essere condiviso tra windows e web worker.

Memoria

La memoria in WebAssembly è un file arraybufferche contiene i dati. È possibile allocare memoria utilizzando l'API Javascript WebAssembly.memory ().

tavolo

La tabella in WebAssembly è un array tipizzato, al di fuori della memoria di WebAssembly e ha principalmente un riferimento alle funzioni. Memorizza l'indirizzo di memoria delle funzioni.

Esempio

Instance è un oggetto che avrà, tutte le funzioni esportate che possono essere chiamate da javascript per essere eseguite all'interno del browser.