Na voljo standardni predogled WebAssembly 2.0

W3C je objavil osnutek nove specifikacije, ki standardizira vmesno programsko opremo WebAssembly 2.0 in z njo povezan API, kar omogoča ustvarjanje visoko zmogljivih aplikacij, ki so prenosljive med brskalniki in platformami strojne opreme. WebAssembly ponuja od brskalnika neodvisno univerzalno vmesno kodo nizke ravni za izvajanje aplikacij, sestavljenih iz različnih programskih jezikov. Z uporabo JIT za WebAssembly lahko dosežete ravni zmogljivosti, ki so blizu izvirni kodi.

Tehnologijo WebAssembly je mogoče uporabiti za izvajanje visoko zmogljivih nalog v brskalniku, kot so video kodiranje, obdelava zvoka, grafika in 3D manipulacija, razvoj iger, kriptografske operacije in matematični izračuni, tako da omogoča kodo, napisano v prevedenih jezikih, kot je C/C++ .

Med glavnimi cilji WebAssemblyja je zagotavljanje prenosljivosti, predvidljivega obnašanja in identičnega izvajanja kode na različnih platformah. Pred kratkim je bil WebAssembly promoviran tudi kot univerzalna platforma za varno izvajanje kode v kateri koli infrastrukturi, operacijskem sistemu in napravi, ne omejeno na brskalnike.

W3C je objavil tri osnutke specifikacij za WebAssembly 2.0:

  • WebAssembly Core – opisuje navidezni stroj nizke ravni za izvajanje vmesne kode WebAssembly. Viri, povezani z WebAssembly, so dostavljeni v formatu ».wasm«, podobnem datotekam ».class« v Javi, ki vsebujejo statične podatke in segmente kode za delo s temi podatki.
  • Vmesnik JavaScript WebAssembly – ponuja API za integracijo z JavaScriptom. Omogoča pridobivanje vrednosti in posredovanje parametrov funkcijam WebAssembly. Izvajanje WebAssembly sledi varnostnemu modelu JavaScript in vsa interakcija z glavnim sistemom se izvaja na enak način kot izvajanje kode JavaScript.
  • WebAssembly Web API – definira programski vmesnik, ki temelji na mehanizmu Promise za zahtevanje in izvajanje virov ».wasm«. Format vira WebAssembly je optimiziran za začetek izvajanja brez čakanja, da se datoteka v celoti naloži, kar izboljša odzivnost spletnih aplikacij.

Glavne spremembe v WebAssembly 2.0 v primerjavi s prvo različico standarda:

  • Podpora za vektorski tip v128 in sorodna vektorska navodila, ki vam omogočajo vzporedno izvajanje dejanj na več številskih vrednostih (SIMD, eno navodilo več podatkov).
  • Zmožnost uvoza in izvoza spremenljivih globalnih spremenljivk, kar omogoča globalno vezavo za vrednosti, kot so kazalci skladov v C++.
  • Nova navodila za pretvorbo s plavajočim v int, ki namesto vrženja izjeme, ko je rezultat presežen, vrnejo najmanjšo ali največjo možno vrednost (potrebno za SIMD).
  • Navodila za predznakovno razširitev celih števil (povečanje bitne globine števila ob ohranjanju predznaka in vrednosti).
  • Podpora za bloke in funkcije, ki vračajo več vrednosti (poleg posredovanja več parametrov funkcijam).
  • Implementacija funkcij JavaScript BigInt64Array in BigUint64Array za pretvorbo med tipom JavaScript BigInt in predstavitvijo 64-bitnih celih števil WebAssembly.
  • Podpora za referenčne vrste (funcref in externref) in povezana navodila (select, ref.null, ref.func in ref.is_null).
  • Navodila Memory.copy, memory.fill, memory.init in data.drop za kopiranje podatkov med območji pomnilnika in brisanje območij pomnilnika.
  • Navodila za neposreden dostop in spreminjanje tabel (table.set, table.get, table.size, table.grow). Možnost ustvarjanja, uvoza in izvoza več tabel v enem modulu. Funkcije za kopiranje/polnjenje tabel v paketnem načinu (table.copy, table.init in elem.drop).

Vir: opennet.ru

Dodaj komentar