WebAssembly - Introduction

WebAssembly est également appelé WASM qui a été introduit pour la première fois en 2017. Les grandes entreprises technologiques à l'origine de WebAssembly sont Google, Apple, Microsoft, Mozilla et W3C.

Le buzz est que WebAssembly va remplacer Javascript en raison de son exécution plus rapide, mais ce n'est pas le cas. WebAssembly et Javascript sont destinés à travailler ensemble pour résoudre les problèmes complexes.

Besoin de WebAssembly

Jusqu'à présent, nous n'avons que Javascript qui peut fonctionner correctement dans le navigateur. Il y a des tâches très lourdes qui sont difficiles à effectuer dans les navigateurs en utilisant javascript.

Pour n'en nommer que quelques-uns, il s'agit de la reconnaissance d'image, des applications de conception assistée par ordinateur (CAO), de l'augmentation de la vidéo en direct, de la réalité virtuelle et augmentée, des applications musicales, de la visualisation et de la simulation scientifiques, des jeux, de l'édition d'images / vidéo, etc.

WebAssembly est un nouveau langage avec des instructions binaires qui peuvent se charger et s'exécuter plus rapidement. La tâche indiquée ci-dessus peut être facilement effectuée dans des langages de haut niveau comme C, C ++, Rust, etc. Nous avons besoin d'un moyen pour que le code que nous avons en C, C ++, Rust puisse être compilé et puisse l'utiliser dans les navigateurs Web. La même chose est réalisable en utilisant WebAssembly.

Lorsque le code WebAssembly est chargé dans le navigateur. Ensuite, le navigateur se charge de la conversion en format machine compréhensible par les processeurs.

Pour javascript, le code doit être téléchargé, analysé et converti au format machine. Il y a beaucoup de temps et pour des tâches lourdes comme nous l'avons mentionné plus tôt, cela peut être très lent.

Fonctionnement de WebAssembly

Les langages de haut niveau comme C, C ++ et Rust sont compilés au format binaire, c'est-à-dire .wasm et format de texte .wat.

Le code source écrit en C, C ++ et Rust est compilé en .wasmen utilisant un compilateur. Vous pouvez utiliser le SDK Emscripten pour compiler C / C ++ en.wasm.

Le flux est le suivant -

Le code C / C ++ peut être compilé en .wasmen utilisant le SDK Emscripten. Plus tard, le.wasm le code peut être utilisé à l'aide de javascript dans votre fichier html pour afficher la sortie.

Concepts clés de WebAssembly

Les concepts clés sont expliqués ci-dessous -

Module

Un module est un objet qui est compilé par le navigateur en code machine exécutable. Un module est dit sans état et peut être partagé entre Windows et les web workers.

Mémoire

La mémoire dans WebAssembly, est un arraybufferqui contient les données. Vous pouvez allouer de la mémoire à l'aide de l'API Javascript WebAssembly.memory ().

Table

Table dans WebAssembly est un tableau typé qui est, en dehors de la mémoire WebAssembly et a principalement une référence à des fonctions. Il stocke l'adresse mémoire des fonctions.

Exemple

L'instance est un objet qui aura, toutes les fonctions exportées qui peuvent être appelées depuis javascript pour s'exécuter dans le navigateur.