WebAssembly: Ce este și cum să creați o lume Hello

Paginile web utilizează în prezent două tipuri de limbaje de programare. Pe de o parte, avem limbajele de pe server (cum ar fi PHP) care rulează pe propriul server al site-ului și trimit informațiile deja procesate utilizatorului. Și, pe de altă parte, limbajele de programare din partea clientului care rulează în propriul browser al utilizatorului. Deși cel mai utilizat limbaj în programarea web pe partea de client este JavaScript, există alte alternative care depășesc cu mult acest limbaj. Și unul dintre ei este WebAssembly .

Ce este WebAssembly

WebAssembly este un limbaj de programare frontend care a fost anunțat pentru prima dată în 2015. În 2016, prima demonstrație a acestui limbaj a fost făcută în Firefox, Chromium, Google Chrome și Microsoft Margine rularea unui demo popular numit „Unity's Angry Bots”.

WebAssembly

Acest limbaj de programare, prescurtat ca WASM , folosește un format de cod binar portabil, bytecode). Datorită acestuia, scripturile din partea clientului sunt executate complet în browser. Este un limbaj de programare de nivel scăzut și, deși a fost inițial creat ca o țintă de compilare pentru Cod C și C ++ , este, de asemenea, compatibil cu alte limbi, cum ar fi Go și Rugină.

Acest limbaj de programare sa dovedit a fi considerabil mai rapid decât alte limbaje de programare, cum ar fi JavaScript. În plus, nu are aproape nici o limită în ceea ce privește funcțiile, deoarece vă permite să rulați aproape orice cod desktop direct în browser. Și cu viteză aproape nativă.

WASM nu a fost creat pentru a înlocui JavaScript sau orice alt limbaj de frontend, ci mai degrabă pentru a le completa. Browserele sunt capabile să-l execute în același timp, putând încărca module create în WebAssembly în aplicațiile JavaScipt.

În prezent, WebAssembly 1.0 este deja inclus în motoarele Firefox, Chrome, Safari și Edge.

Caracteristici WASM

Cu atât de multe limbaje de programare care funcționează astăzi, este dificil să găsim diferențe critice între toate. Dar WebAssembly a pariat în principal pentru a se diferenția de rivalii săi în două aspecte. Pe de o parte, vorbim despre un rapid și eficient limbaj de programare, un limbaj deja de nivel scăzut care ne va permite să executăm cod binar din browser. Salvând intermediari sau interpreți, codul se execută aproape instantaneu pe hardware, obținând o viteză aproape nativă.

Pe de altă parte, acest limbaj a pariat și pe securitate . WASM folosește tehnici pentru a se încărca în memorie în siguranță (cu un sandbox), astfel încât mediul de rulare să fie izolat de restul sistemului. Acest mediu sigur poate fi implementat chiar în cadrul mașinilor virtuale JavaScript existente, oferind securitate suplimentară împotriva altor elemente. Această limbă va aplica politicile de securitate ale sistemului, precum și propriile permisiuni ale browserului.

Desigur, tot ce ține de acest limbaj de programare este deschide . Instrucțiunile sale pot fi tipărite într-un limbaj textual (nu trebuie să scriem în unele și zerouri) și pot fi depanate, testate, modificate și experimentale fără probleme. În plus, este conceput pentru păstrarea rețelei web deschise, fiind compatibil cu aceleași API ca JavaScript și compatibil cu versiunile anterioare.

Cum se programează în WebAssembly

Acest limbaj de programare este deschis, astfel încât oricine îl poate folosi pentru orice vrea. De asemenea, deși este considerat un limbaj de nivel scăzut, nu este chiar complicat de utilizat.

Diferențierea celor trei stări

Când vorbim despre acest limbaj de programare, în primul rând trebuie să facem diferența între trei stări diferite:

  • Cod sursa . Codul programului ca atare. Acest cod este de obicei scris într-un limbaj de programare diferit, deci nu este dificil să creați programe sau module cu acesta. Putem alege limbajul de programare pe care îl dorim în acest pas, atâta timp cât este compatibil. Cele mai utilizate sunt de obicei C ++ și Rust.
  • Bytecode WebAssembly . Când compilăm programul, ceea ce trebuie să facem este să alegem că dorim să-l facem în acest format. Compilatorul propriu al mediului nostru de programare va fi responsabil de utilizarea instrucțiunilor IDE pentru a converti codul altei limbi în acest format. Ceea ce vom obține la final este un fișier .wasm.
  • Codul mașinii . Când avem fișierul WASM compilat, îl deschidem în browser. Și acesta este cel care este responsabil pentru traducerea codului direct în limbajul mașinii, adică în binar.

În plus, WebAssembly are un limbaj intermediar cunoscut sub numele de text WASM. Acest limbaj devine un limbaj de programare la nivel înalt pentru WASM. Fișierele scrise în această limbă sunt salvate în fișiere cu extensie WAT și vom avea nevoie de un instrument numit ” Kit de instrumente binar WebAssembly ”Pentru a-l converti într-un fișier .wasm. Nu este de obicei folosit, deoarece este mult mai complicat decât celelalte limbi și, în cele din urmă, nu merită. Dar există și trebuie să o știi.

Exemplu cod WebAssembly WASM

Creați primul nostru program

Există multe modalități de a compila un program sau modul WebAssembly. Vă recomandăm, de exemplu, să utilizați SDK Emscripten, de pe care îl putem descărca aici .

În continuare, vom avea nevoie de modulul nostru scris în acest limbaj de programare. Vom folosi un exemplu de „Hello World” scris în C. Fișierul nostru, hello.c, va avea următorul text:

#include <stdio.h> int main() {printf("Hello Worldn");}

Odată ce avem fișierul scris în C, vom folosi „ Inscrie-te ”Instrument pentru a-l transmite către WASM. Putem rula Emscripten din Python sau, mai bine, din a ferestre din Subsistem pentru Linux. Dacă programăm din Windows și nu vrem să folosim Linux, atunci trebuie să căutăm un alt compilator echivalent. Pentru a face acest lucru cu Emscripten, vom deschide o consolă Windows și vom executa această comandă în ea:

emcc hello.c -s WASM=1 -o hello.html

Parametrul „WASM = 1” este responsabil pentru indicarea programului că ceea ce dorim este să compilăm codul în această limbă. Rezultatul, odată terminate instrucțiunile, va fi:

  • Un fișier hello.wasm, binarul.
  • Un fișier JavaScript care conține dependențele necesare pentru a traduce de la C la WASM: hello.js.
  • Fișierul hello.html necesar pentru a deschide fișierul wasm în browser și a-l compila.

Pur și simplu executând „hello.html” vom executa codul în WebAssembly.