Dostupan standardni pregled WebAssembly 2.0

W3C je objavio nacrt nove specifikacije koja standardizira međuprogram WebAssembly 2.0 i njegov povezani API, omogućujući stvaranje aplikacija visokih performansi koje su prenosive na preglednike i hardverske platforme. WebAssembly pruža univerzalni međukod niske razine neovisan o pregledniku za pokretanje aplikacija sastavljenih iz različitih programskih jezika. Korištenjem JIT-a za WebAssembly možete postići razine performansi bliske izvornom kodu.

Tehnologija WebAssembly može se koristiti za obavljanje zadataka visokih performansi u pregledniku, kao što je kodiranje videa, obrada zvuka, grafika i 3D manipulacija, razvoj igara, kriptografske operacije i matematički izračuni dopuštajući kod napisan u kompajliranim jezicima kao što je C/C++ .

Među glavnim ciljevima WebAssemblyja je osiguravanje prenosivosti, predvidljivog ponašanja i identičnog izvršavanja koda na različitim platformama. Nedavno je WebAssembly također promoviran kao univerzalna platforma za sigurno izvršavanje koda u bilo kojoj infrastrukturi, operativnom sustavu i uređaju, ne ograničavajući se na preglednike.

W3C je objavio tri nacrta specifikacija za WebAssembly 2.0:

  • WebAssembly Core - opisuje virtualni stroj niske razine za pokretanje međukoda WebAssembly. Resursi povezani s WebAssemblyjem isporučuju se u ".wasm" formatu, sličnom ".class" datotekama u Javi, koji sadrže statičke podatke i segmente koda za rad s tim podacima.
  • WebAssembly JavaScript sučelje - pruža API za integraciju s JavaScriptom. Omogućuje dobivanje vrijednosti i prosljeđivanje parametara WebAssembly funkcijama. Izvršenje WebAssemblyja slijedi JavaScript sigurnosni model i sva interakcija s glavnim sustavom provodi se na isti način kao i izvršavanje JavaScript koda.
  • WebAssembly Web API - Definira programsko sučelje temeljeno na Promise mehanizmu za traženje i izvršavanje ".wasm" resursa. Format resursa WebAssembly optimiziran je za početak izvršavanja bez čekanja da se datoteka potpuno učita, što poboljšava odziv web aplikacija.

Glavne promjene u WebAssembly 2.0 u usporedbi s prvom verzijom standarda:

  • Podrška za vektorski tip v128 i povezane vektorske instrukcije koje vam omogućuju paralelno izvođenje radnji na više numeričkih vrijednosti (SIMD, jedna instrukcija više podataka).
  • Sposobnost uvoza i izvoza promjenjivih globalnih varijabli, dopuštajući globalno vezanje za vrijednosti kao što su pokazivači na hrpu u C++.
  • Nove instrukcije za pretvorbu float u int koje, umjesto izbacivanja iznimke kada se rezultat prelijeva, vraćaju minimalnu ili najveću moguću vrijednost (potrebno za SIMD).
  • Upute za proširenje predznaka cijelih brojeva (povećanje bitne dubine broja uz zadržavanje predznaka i vrijednosti).
  • Podrška za blokove i funkcije koje vraćaju više vrijednosti (uz prosljeđivanje više parametara funkcijama).
  • Implementacija JavaScript funkcija BigInt64Array i BigUint64Array za pretvorbu između BigInt JavaScript vrste i WebAssembly reprezentacije 64-bitnih cijelih brojeva.
  • Podrška za vrste referenci (funcref i externref) i njihove pridružene upute (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 izravan pristup i modificiranje tablica (table.set, table.get, table.size, table.grow). Mogućnost izrade, uvoza i izvoza više tablica u jednom modulu. Funkcije za kopiranje/ispunjavanje tablica u batch modu (table.copy, table.init i elem.drop).

Izvor: opennet.ru

Dodajte komentar