În 2015, un consorțiu care include Google, Microsoft, Mozilla și proiectul WebKit anunța WebAssembly. Săptămâna aceasta, Mozilla, Intel, Red hat și Fast au anunțat un nou consorțiu numit Bytecode Alliance, care are drept scop încurajarea WebAssemble și alte „noi baze de software” care vor permite modalități sigure implicite de a rula cod neîncredere, fie în interiorul sau în afara mediului browserului Web.

Pentru mulți, acest lucru ridică o întrebare evidentă: ce este WebAssembly? WebAssemblea (wasm) a fost și este un proiect potențial interesant, oferind o modalitate de a rula bytecode nativ în browser pentru creșteri potențial foarte mari ale performanțelor asupra motoarelor Javascript utilizate atât atunci cât și astăzi.

Javascriptul este adesea înțeles greșit ca limbaj de script care este interpretat la runtime. Deși este în general încărcat în browser ca cod sursă, poate fi interpretat sau compilat la bytecode și executat. Compilarea înseamnă o execuție mai mare a performanței – în special în buclele strânse – dar înseamnă, de asemenea, o penalizare de pornire pentru timpul necesar pentru a face compilarea JIT în sine.

Există de fapt mult mai multe sub capotă cu Javascript JIT – incluzând diferite moduri de compilare, specializare, optimizare și salvare. Mozilla lui Lin Clark a scris o explicație excelentă și ușor de citit pentru hacks.mozilla.org, dacă doriți mai multe detalii.

În efortul de a elimina acea penalizare de compilare JIT, Mozilla a introdus asm.js – un subset specializat de Javascript care este cel mai frecvent utilizat ca țintă de compilare sursă-la-sursă pentru limbaje de programare mai grele, cum ar fi programul de limbaj C.C. până la asm.js și rulează ca o parte din Atec Of Time (AOT), compilată cu un cod de bytecode (în conformitate cu Mozilla), de obicei, va fi de 50% sau mai bine din performanța complet nativă a codului C compilat cu Clang.

Problema rămasă cu asm.js este că, ca subset de Javascript, nu puteți efectua operațiuni sau exprima date în moduri pe care nu le puteți folosi în Javascript. WebAssemblea propune să schimbați acest lucru, cu suport nativ pentru numere întregi pe 64 de biți, compensări de încărcare și stocare și acces direct la instrucțiunile CPU utilizate frecvent pentru sarcini specifice, cum ar fi criptanaliza.

Squoosh.app Google Labs utilizează WebAssemblea pentru a vă permite să vă jucați cu tehnici de stocare și compresie a imaginilor; ștergeți o bară de la stânga la dreapta pentru a vedea diferența dintre versiunile originale și cele comprimate în timp real.
Mări / Squoosh.app Google Labs utilizează WebAssemblea pentru a vă permite să vă jucați cu tehnici de stocare și compresie a imaginilor; ștergeți o bară de la stânga la dreapta pentru a vedea diferența dintre versiunile originale și cele comprimate în timp real.

Jim Salter

Din păcate, nu s-a întâmplat prea mult în proiectul WebAssembly din 2015. Chiar și astăzi, este dificil să găsești un exemplu concret despre ce poate face WebAssembly – suportul în diverse browsere este cel mai bine dubiu și este dificil chiar să găsești demo-uri funcționale pentru a rula local. în setul de instrumente. Cea mai accesibilă demo pe care am putut-o găsi a fost squoosh-ul Google Lab, o aplicație simplă care vă permite să vă jucați cu diferiți algoritmi de stocare a imaginii și compresie în timp real.

Impactul potențial al WebAssembly și WebAssembly System Interface se extinde cu mult dincolo de browser. Alianța Bytecode are în vedere o platformă care poate fi utilizată, nu numai pentru a rula codul de viteză nativă în browsere, dar, în general, pentru a facilita reutilizarea codului de încredere în condiții de siguranță pe mai multe platforme, inclusiv dispozitive server, edge, mobile și IoT.

Imaginea listată de Petrovsky Vladislav

Sursa articol

LĂSAȚI UN MESAJ

Please enter your comment!
Please enter your name here