A fost publicat standardul WebAssembly 3.0

Consorțiul W3C a anunțat disponibilitatea specificației care standardizează codul intermediar WebAssembly 3.0 și API-ul asociat, permițând crearea de aplicații performante, transportabile între browsere și platforme hardware. WebAssembly oferă un cod intermediar de nivel jos, independent de browser, pentru executarea aplicațiilor compilate din diferite limbaje de programare.

Tehnologia WebAssembly poate fi utilizată pentru a executa în browser sarcini care necesită performanță ridicată, cum ar fi codarea video, prelucrarea sunetului, manipularea graficii și 3D, dezvoltarea jocurilor, operațiuni criptografice și calcule matematice, facilitând execuția în browser a codului scris în limbaje compilabile, precum C/C++. Prin utilizarea JIT, WebAssembly poate atinge un nivel de performanță aproape de codul nativ.

Printre sarcinile principale ale WebAssembly se numără asigurarea transportabilității, predictibilitatea comportamentului și identitatea execuției codului pe diferite platforme. WebAssembly nu este limitat la browsere și este promovat și ca o platformă universală pentru executarea în siguranță a codului în orice infrastructură, sistem de operare și dispozitive.

Sunt disponibile următoarele specificații:

  • WebAssembly Core — descrie o mașină virtuală de nivel jos pentru executarea codului intermediar WebAssembly. Resursele asociate cu WebAssembly sunt livrate în format „.wasm”, similar cu fișierele „.class” din Java și conțin date statice și segmente de cod pentru a lucra cu aceste date.
  • WebAssembly JavaScript API — oferă un API pentru integrarea cu JavaScript. Permite obținerea valorilor și transmiterea parametrilor în funcțiile WebAssembly. Execuția WebAssembly respectă modelul de securitate JavaScript, iar toată interacțiunea cu sistemul de bază se desfășoară analog cu execuția codului JavaScript.
  • WebAssembly Web API — definește o interfață de programare bazată pe mecanismul Promise pentru a solicita și executa resurse „.wasm”. Formatul resurselor WebAssembly este optimizat pentru a începe execuția fără a aștepta încărcarea completă a fișierului, ceea ce crește reactivitatea aplicațiilor web.
  • WASI API — define un modul de interfață sistemică pentru a rula WebAssembly în afara browserelor și pentru a oferi acces la resurse precum fișiere, conexiuni de rețea, generatoare de numere aleatoare și ceasuri de sistem.

Se observă că în noua versiune a standardului s-a îmbunătățit semnificativ suportul pentru compilarea în WebAssembly a limbajelor de programare de nivel înalt. De exemplu, a fost implementată posibilitatea de compilare în WebAssembly a proiectelor în limbaje precum Java, OCaml, Scala, Kotlin, Scheme și Dart. Schimbările principale în WebAssembly 3.0, comparativ cu versiunea a doua a standardului:

  • A fost implementat suportul pentru spațiul de adresare pe 64 de biți. Acum, pentru adresarea memoriei poate fi utilizat tipul i64, nu doar i32, ceea ce extinde spațiul de adresare disponibil pentru aplicații de la 4 GB la 16 EB (în timpul rulării în browser, există o limitare de 16 GB).
  • A fost oferită posibilitatea utilizării simultane, într-un singur modul WebAssembly, a mai multor obiecte de memorie și lucrul cu diferite spații de adresare. Printre altele, este posibilă copierea de date între diferite instanțe ale obiectelor de memorie, amplasate în diverse spații de adresare.
  • A fost adăugată suportul pentru colectarea de gunoi. Pe lângă memoria liniară disponibilă anterior, a fost propus un tip de depozit separat, gestionat automat cu ajutorul colectorului de gunoi. Compilatorul poate acum utiliza structuri de date separate, array-uri și variabile, pentru gestionarea memoriei și a ciclului de viață răspunzând WebAssembly.
  • A fost adăugat suportul pentru referințe tipizate, care pot descrie structura exactă a valorii la care se referă, permițând evitarea verificărilor suplimentare în timpul execuției. Se susțin subtipuri, recursia tipurilor și posibilitatea utilizării sigure a referințelor către funcții, fără a necesita verificări de tip și limite în timpul execuției.
  • A fost adăugat suportul pentru apeluri de tip tail (Tail call), în care funcția curentă finalizează imediat execuția după apelarea altei funcții, fără a consuma spațiu pe stivă.
  • A fost adăugat suportul pentru gestionarea excepțiilor.
  • A fost adăugat suportul pentru instrucțiuni SIMD „relaxate” (relaxed), care permit obținerea unei performanțe mai mari prin renunțarea la respectarea strictă a semanticii pe toate platformele hardware.
  • A fost adăugat suport pentru un profil de execuție determinist, care definește un comportament independent de platformă pentru instrucțiuni, al căror rezultat al execuției poate diferi pe platforme diferite (operații cu virgulă mobilă, returnarea valorii NaN, instrucțiuni vectoriale slăbite). Când se alege acest profil, Wasm asigură un comportament determinist, reproducibilitate și portabilitate.
  • A fost adăugat un syntax pentru crearea de anotații personalizate, care permit atașarea de informații suplimentare la codul WebAssembly. Anterior, suportul pentru secțiuni personalizate, care permiteau stocarea de informații arbitrare, exista în formatul binar WebAssembly, dar lipsea în formatul text WebAssembly. Acum este posibil să adăugați aceste informații într-o formă lizibilă și editabilă.
  • API-ul JavaScript a fost extins cu funcții încorporate pentru lucrul cu șiruri. Anterior, șirurile JavaScript puteau fi transmise în WebAssembly doar ca linkuri externe, dar acum este posibil să accesați și să manipulați direct șirurile în WebAssembly.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster