W3C konzorcij o davanju tehnologiji WebAssembly status preporučene norme. WebAssembly pruža nezavisni od preglednika univerzalni niskonivo kod kao međufaznu datoteku za izvođenje aplikacija, koje su kompajlirane iz različitih programskih jezika. WebAssembly se pozicionira kao obećavajuća i prenosiva između preglednika tehnologija za kreiranje visoko performantnih web-aplikacija. WebAssembly se može koristiti za zadatke koji zahtevaju visok nivo performansi, poput kodiranja videa, obrade zvuka, manipulacije grafikom i 3D-om, razvoj igara, kriptografskih operacija, matematičkih proračuna i izrade prenosivih realizacija programskih jezika.
WebAssembly u mnogočemu podseća na Asm.js, ali se razlikuje jer je binarni format koji nije vezan za JavaScript. U WebAssembly nije potrebno korišćenje sakupljača smeća, jer se primenjuje eksplicitno upravljanje memorijom. Korišćenjem JIT-a za WebAssembly može se postići nivo performansi blizu nativnog koda. Među glavnim ciljevima WebAssembly ističe se obezbeđivanje prenosivosti, predvidljivosti ponašanja i identičnosti izvršavanja koda na različitim platformama. kao univerzalna platforma za sigurno izvršavanje koda u bilo kojoj infrastrukturi, operativnim sistemima i uređajima, bez ograničenja na preglednike.
W3C je standardizovao tri specifikacije vezane za WebAssembly:
- – opisuje niskonivo virtualnu mašinu za izvršavanje međufaznog koda WebAssembly. Resursi povezani sa WebAssembly isporučuju se u formatu „.wasm“, koji podseća na datoteku „.class“ u Javi, i sadrže statičke podatke i segmente koda za rad s tim podacima.
- – definiše programski interfejs zasnovan na mehanizmu Promise za zahtev i izvršavanje resursa „.wasm“. Format resursa WebAssembly optimizovan je za početak izvršenja bez čekanja na potpuno učitavanje datoteke, što omogućava povećanje responzivnosti web-aplikacija.
- — pruža API za integraciju s JavaScriptom. Omogućuje dohvaćanje vrijednosti i prosljeđivanje parametara funkcijama WebAssembly-a. Izvršenje WebAssembly-a odgovara modelu sigurnosti JavaScripta, a sve interakcije s osnovnim sustavom odvijaju se na sličan način kao izvršavanje JavaScript koda.
U budućnosti se planira pripremiti specifikacije za mogućnosti WebAssembly-a kao što su:
- Višenitnost s dijeljenjem memorije i atomskim pristupom memoriji;
- Vektorske operacije temeljene na SIMD-u, koje omogućuju paralelizaciju izvršavanja petlji;
- Referentni tipovi za izravne reference na objekte iz WebAssembly koda;
- Mogućnost pozivanja funkcija bez dodatnog trošenja prostora na stogu;
- Integracija s ECMAScript modulima — mogućnost učitavanja koda WebAssembly iz JavaScripta kao modula koji odgovaraju specifikaciji ECMAScript 6;
- Režim rada sa sakupljačem smeća;
- Debugging sučelja;
- (WebAssembly System Interface) — API za izravnu interakciju s operacijskim sustavom (POSIX API za rad s datotekama, soketima itd.).
Izvor: opennet.ru
