W3C on avaldanud mustandi uue spetsifikatsiooni kohta, mis standardiseerib WebAssembly 2.0 vaheformaadi ja sellega seotud API, vĂ”imaldades luua kĂ”rge jĂ”udlusega rakendusi, mis on ĂŒlekantavad brauserite ja riistvaraplattformide vahel. WebAssembly pakub brauserist sĂ”ltumatut universaalset madala taseme vaheformaati rakenduste kĂ€itamiseks, mis on kompilitud erinevatest programmeerimiskeeltest. WebAssembly kasutamine JIT-i kaudu vĂ”imaldab saavutada lĂ€hedase jĂ”udlustasemeni, vĂ”rreldes natiivkoodiga.
WebAssembly tehnoloogiat saab kasutada brauseris, et tĂ€ita kĂ”rge jĂ”udlusega ĂŒlesandeid, nagu video kodeerimine, heli töötlemine, graafika ja 3D manipuleerimine, mĂ€ngude arendamine, krĂŒptograafilised toimingud ja matemaatilised arvutused, korraldades brauseris kĂ€itamise kompilitavates keeltes, nagu C/C++.
WebAssembly peamised ĂŒlesanded hĂ”lmavad ĂŒlekantavuse tagamist, kĂ€itumise ennustatavust ja koodi tĂ€itmise identiteeti erinevates platvormides. Viimasel ajal edendatakse WebAssemblyd ka universaalse platvormina, et ohutult kĂ€itada koodi kĂ”ikides infrastruktuurides, operatsioonisĂŒsteemides ja seadmetes, piirdumata ainult brauseritega.
W3C on avaldanud kolm eelviidatud WebAssembly 2.0 spetsifikatsiooni:
- WebAssembly Core â kirjeldab madala taseme virtuaalmasinat, et kĂ€itada WebAssembly vaheformaati. WebAssembly seotud ressursid tarnitakse formaadis â.wasmâ, mis sarnaneb Java â.classâ failidega ning sisaldab statsilisi andmeid ja koodiga seotud segmente nende andmete töötlemiseks.
- WebAssembly JavaScript Interface â pakub API-d integreerimiseks JavaScriptiga. See vĂ”imaldab vÀÀrtusi kĂ€tte saada ja parameetreid edastada WebAssembly funktsioonidesse. WebAssembly tĂ€itmine vastab JavaScripti turvamudelile ning kogu koostoime pĂ”hivĂ”rgus toimub sarnaselt JavaScripti koodi tĂ€itmisega.
- WebAssembly Web API â mÀÀratleb programmistiku liidese, mis pĂ”hineb lubaduse mehhanismil â.wasmâ ressursside pĂ€rimiseks ja tĂ€itmiseks. WebAssembly ressursside formaat on optimeeritud tĂ€itmise alustamiseks, oodates failide tĂ€ielikku laadimist, mis parandab web-rakenduste reageerimisvĂ”imet.
WebAssembly 2.0 peamised muudatused vÔrreldes esimeses versioonis:
- VektortĂŒĂŒbi v128 ja sellega seotud vektorinstruktsioonide tugi, mis vĂ”imaldab paralleelselt teostada toiminguid mitme arvvÀÀrtuse ĂŒle (SIMD, single instruction multiple data).
- Muutuvate (mutable) globaalsete muutujate importimise ja eksportimise vÔimalus, mis vÔimaldab rakendada globaalset sidumist selliste vÀÀrtuste jaoks nagu C++-s olevad virna pointrid.
- Uued instruktsioonid, mis muudavad float tĂŒĂŒbi int tĂŒĂŒbiks, mis ei genereeri ĂŒlevahetamise ajal erandeid, vaid tagastab minimaalne vĂ”i maksimaalne vĂ”imalik vÀÀrtus (SIMD jaoks vajalik).
- Terve arvu mÀrgi laiendamise instruktsioonid (numbrite bitilÀvenduse suurendamine, sÀilitades samas mÀrk ja vÀÀrtus).
- Tugi mitme vÀÀrtuse tagastamiseks plokkide ja funktsioonide kaudu (koos funktsioonidesse mitme parameetri edastamisega).
- JavaScripti funktsioonide BigInt64Array ja BigUint64Array uus teostus, mis vĂ”imaldab konverteerimist JavaScripti BigInt tĂŒĂŒbi ja 64-bitiste tĂ€isarvude esituse vahel WebAssembly-s.
- Viidatud tĂŒĂŒpide (funcref ja externref) ja nendega seotud juhiste tugi (select, ref.null, ref.func ja ref.is_null).
- Instruktsioonid memory.copy, memory.fill, memory.init ja data.drop andmete kopeerimiseks mÀlu alade vahel ja mÀlu piirkondade puhastamiseks.
- Instruktsioonid otse juurdepÀÀsuks ja tabelite muutmiseks (table.set, table.get, table.size, table.grow). VĂ”imalus luua, importida ja eksportida mitu tabelit ĂŒhes moodulis. Tabelite kopeerimise / tĂ€itmise funktsioonid partii reĆŸiimis (table.copy, table.init ja elem.drop).
Allikas: opennet.ru
