W3C je predstavljen Nedavno putem posta nacrt nove specifikacije koji standardizira kod za pripremu WebAssembly 2.0 i pridruženi API kako bi se omogućilo kreiranje aplikacija visokih performansi koje su prenosive preko pretraživača i hardverskih platformi.
Za one koji su novi u WebAssembly-u, trebali biste to znati ovo pruža generički međuopremu, nizak nivo i nezavisno od pretraživača, za pokretanje kompajliranih aplikacija iz raznih programskih jezika. Koristeći JIT za WebAssembly, možete postići nivo performansi blizak izvornom kodu.
O WebAssembly-u
WebAssembly može se koristiti za obavljanje zadataka visokih performansi u pretraživaču, kao što su video kodiranje, obrada zvuka, 3D i grafička manipulacija, razvoj igara, kriptografske operacije i matematička izračunavanja, izvršavanjem koda napisanog u kompajliranim jezicima kao što je C/C++.
Među glavnim zadacima WebAssembly-a je obezbjeđivanje prenosivosti, predvidljivosti ponašanja i identiteta izvršavanja koda na različitim platformama. Nedavno je WebAssembly također promoviran kao univerzalna platforma za sigurno izvršavanje koda na bilo kojoj infrastrukturi, operativnom sistemu i uređaju, ne ograničavajući se na pretraživače.
O nacrtu WebAssembly 2.0
U dijelu promjena koje su napravljene od WebAssembly-a su gotovi prijedlozi za WebAssembly 2.0 su SIMD fiksne širine, operacije masovne memorije, referentni tipovi, JavaScript BigInt podrška za WebAssembly i64, podrška za višestruke povratne vrijednosti i uvoz/izvoz promjenjivih globalne varijable.
W3C je objavio tri nacrta WebAssembly 2.0 specifikacija:
- Jezgro web montaže: opisuje virtuelnu mašinu niskog nivoa za pokretanje srednjeg WebAssembly koda. Resursi vezani za WebAssembly dolaze u ".wasm" formatu, sličnom Java ".class" datotekama, koje sadrže statičke podatke i segmente koda za rad sa tim podacima.
- JavaScript sučelje WebAssembly: pruža API za integraciju sa JavaScript-om. Omogućava vam da dobijete vrijednosti i proslijedite parametre WebAssembly funkcijama. Izvršenje WebAssembly-a prati JavaScript sigurnosni model, a sva interakcija sa hostom se izvodi na način sličan pokretanju JavaScript koda.
- Web API za WebAssembly: definira API baziran na Promise mehanizmu za traženje i izvršavanje ".wasm" resursa. Format WebAssembly resursa optimiziran je za početak izvršavanja bez čekanja da se datoteka u potpunosti preuzme, što poboljšava odziv web aplikacija.
Razlike između WebAssembly i WebAssembly 2.0
Također, treba napomenuti da postoje neke važne promjene u WebAssembly 2.0 u odnosu na prvu verziju standarda:
- v128 podrška za vektorski tip i povezane vektorske instrukcije koje vam omogućavaju da izvodite operacije na više numeričkih vrijednosti paralelno (SIMD, jedna instrukcija, više podataka).
- Mogućnost uvoza i izvoza promjenjivih globalnih varijabli, koji omogućava globalno vezivanje za vrijednosti kao pokazivače steka u C++.
- Nove upute za pretvaranje float u int, koji umjesto izbacivanja izuzetka na prelijevanje rezultata, vraća minimalnu ili maksimalnu moguću vrijednost (potrebno za SIMD).
- Upute za proširenje predznaka cijelih brojeva (povećajte dubinu bita broja zadržavajući predznak i vrijednost).
- Podrška za vraćanje više vrijednosti po blokovima i funkcijama (kao i prosljeđivanje više parametara funkcijama).
- Implementirajte JavaScript funkcije BigInt64Array i BigUint64Array za konverziju između JavaScript tipa BigInt i WebAssembly reprezentacije 64-bitnih cijelih brojeva.
- Podrška za referentne tipove (funcref i externref) i njihove pridružene izjave (select, ref.null, ref.func i ref.is_null).
- memory.copy, memory.fill, memory.init i data.drop upute za kopiranje podataka između memorijskih regija i brisanje memorijskih regija.
- Upute za direktan pristup i izmjenu tabela (table.set, table.get, table.size, table.grow).
- Mogućnost kreiranja, uvoza i izvoza više tabela u jednom modulu. Funkcije za kopiranje/popunjavanje tabela u batch modu (table.copy, table.init i elem.drop).
Konačno, ako vas zanima više o tome, možete se obratiti detaljima Na sledećem linku.