Objavljen je standard WebAssembly 3.0

Konzorcij W3C je objavio spremnost specifikacije koja standardizira međudatoteku WebAssembly 3.0 i povezani API, omogućujući stvaranje visokoproduktivnih aplikacija koje se mogu prenositi između preglednika i hardverskih platformi. WebAssembly pruža univerzalnu, nisko nivoa međudatoteku neovisnu o pregledniku za izvršavanje aplikacija koje su kompajlirane iz raznih programskih jezika.

Tehnologija WebAssembly može se koristiti za izvršavanje visoko zahtjevnih zadataka u pregledniku, kao što su kodiranje videa, obrada zvuka, manipulacija grafikom i 3D-om, razvoj igara, kriptografske operacije i matematičke proračune putem organizacije izvršavanja koda napisanog u kompajlabilnim jezicima kao što su C/C++. Korištenjem JIT-a za WebAssembly može se postići razina performansi bliska onoj nativnog koda.

Među ključnim zadacima WebAssembly ističe se osiguranje prenosivosti, predvidljivosti ponašanja i identiteta izvršavanja koda na različitim platformama. WebAssembly nije ograničen na preglednike i također se promovira kao univerzalna platforma za sigurno izvršavanje koda u svim infrastrukturnim, operativnim sustavima i uređajima.

Dostupne su sljedeće specifikacije:

  • WebAssembly Core — opisuje niskonivo virtualnu mašinu za izvršavanje međudatoteke WebAssembly. Resursi povezani s WebAssembly isporučuju se u formatu “.wasm”, sličnom datotekama “.class” u Javi, i sadrže statičke podatke i segmente koda za rad s tim podacima.
  • WebAssembly JavaScript API — pruža API za integraciju s JavaScriptom. Omogućuje dobivanje vrijednosti i prosljeđivanje parametara u funkcije WebAssembly. Izvršavanje WebAssembly-a odgovara modelu sigurnosti JavaScripta i sva interakcija s osnovnim sustavom vrši se kao i kod izvršavanja JavaScript koda.
  • WebAssembly Web API — definira programski sučelje temeljen na mehanizmu Promise za zahtijevanje i izvršavanje resursa “.wasm”. Format resursa WebAssembly optimiziran je za početak izvršavanja bez čekanja potpune učitavanja datoteke, što poboljšava odzivnost web aplikacija.
  • WASI API — definira modularno sučelje sustava za pokretanje WebAssembly izvan preglednika i omogućuje pristup resursima poput datoteka, mrežnih veza, generatora pseudo-naključnih brojeva i sistemskih satova.

U novoj verziji standarda značajno je poboljšana podrška za prevođenje visoko razinskih jezika u WebAssembly. Na primjer, implementirana je mogućnost kompajliranja WebAssembly projekata na jezicima Java, OCaml, Scala, Kotlin, Scheme i Dart. Glavne promjene u WebAssembly 3.0, u usporedbi s drugom verzijom standarda:

  • Implementirana je podrška za 64-bitni adresni prostor. Za adresiranje memorije sada može koristiti tip i64, a ne samo i32, što proširuje dostupni adresni prostor aplikacija s 4 GB na 16 EB (u pregledniku se postavlja ograničenje na 16 GB).
  • Omogućeno je simultano korištenje više objekata memorije unutar jednog WebAssembly modula i rad s različitim adresnim prostorima. Između ostalog, moguće je kopirati podatke između različitih instanci objekata memorije smještenih u različitim adresnim prostorima.
  • Dodana je podrška za prikupljanje smeća. Osim ranije dostupne linearne memorije, predstavljen je odvojeni tip skladišta koji se automatski upravlja pomoću sakupljača smeća. Kompajler sada može koristiti odvojene strukture podataka, nizove i varijable za koje upravljanje memorijom i životnim ciklusom odgovara WebAssembly.
  • Dodana je podrška za tipizirane reference koje mogu opisivati točnu strukturu vrijednosti na koju referenca pokazuje, čime se izbjegavaju dodatna provjeravanja tijekom izvođenja. Podržavaju se podtipovi, rekurzija tipova i mogućnost sigurnog korištenja referenci na funkcije, bez potrebe za provjerama tipova i granica tijekom izvođenja.
  • Dodana je podrška za završne pozive (Tail call), gdje trenutna funkcija odmah završava izvršenje nakon poziva druge funkcije, ne trošeći prostor na hrpi.
  • Dodana je podrška za obradu iznimaka.
  • Dodana je podrška za "opuste" (relaxed) SIMD instrukcije vektora, koje omogućuju postizanje bolje učinkovitosti odustajanjem od strogog pridržavanja semantike na svim hardverskim platformama.
  • Dodana je podrška za deterministički profil izvršavanja, koji definira ponašanje neovisno o trenutnoj platformi za instrukcije čiji rezultati izvršavanja mogu varirati na različitim platformama (operacije s pomičnom decimalom, vraćanje NaN vrijednosti, oslabljenje vektorskih instrukcija). Pri odabiru ovog profila, Wasm osigurava determinističko ponašanje, reproducibilnost i prenosivost.
  • Dodana je sintaksa za stvaranje vlastitih anotacija, koja omogućava pridruživanje dodatnih informacija WebAssembly kodu. Prije je podrška za korisničke sekcije, koja omogućava pohranu proizvoljnih informacija, postojala u binarnom formatu WebAssembly, ali nije bila dostupna u tekstualnom formatu WebAssembly. Sada je mogućnost dodavanja tih informacija u čitljivom i uredivom obliku.
  • JavaScript API je dobio ugrađene funkcije za rad s nizovima. Prije su se JavaScript nizovi mogli prenositi u WebAssembly samo kao vanjske reference, dok se sada na nizove može izravno pristupiti i manipulirati njima unutar WebAssembly.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster