W3C konsorcijs paziÅoja par WebAssembly 3.0 starptautisko standartu un ar to saistÄ«to API, kas ļauj izstrÄdÄt augstas veiktspÄjas lietojumprogrammas, kas ir pÄrnesamas starp pÄrlÅ«kprogrammÄm un aparatÅ«ras platformÄm. WebAssembly nodroÅ”ina pÄrlÅ«ka neatkarÄ«gu vispÄrÄ«gu zemu lÄ«meÅu starpkodu, lai izpildÄ«tu lietojumprogrammas, kas kompilÄtas no dažÄdÄm programmÄÅ”anas valodÄm.
WebAssembly tehnoloÄ£ija var tikt izmantota augstas veiktspÄjas uzdevumu veikÅ”anai pÄrlÅ«kÄ, piemÄram, video kodÄÅ”anai, skaÅas apstrÄdei, grafikas un 3D manipulÄcijÄm, spÄļu izstrÄdei, kriptogrÄfiskÄm operÄcijÄm un matemÄtiskÄm aprÄÄ·inÄÅ”anÄm, organizÄjot izpildi pÄrlÅ«kÄ ar valodÄm, kas tiek kompilÄtas, piemÄram, C/C++. Izmantojot JIT WebAssembly, var sasniegt veiktspÄju, kas ir tuvu natÄ«vam kodam.
Galvenie WebAssembly uzdevumi ietver pÄrnesamÄ«bas nodroÅ”inÄÅ”anu, uzvedÄ«bas prognozÄjamÄ«bu un koda izpildes identitÄti dažÄdÄs platformÄs. WebAssembly neaprobežojas ar pÄrlÅ«kprogrammÄm un tiek virzÄ«ts kÄ vispÄrÄja platforma droÅ”ai koda izpildei jebkurÄs infrastruktÅ«rÄs, operÄtÄjsistÄmÄs un ierÄ«cÄs.
PieejamÄs specifikÄcijas:
- WebAssembly Core ā apraksta zemu lÄ«meÅu virtuÄlo maŔīnu, lai izpildÄ«tu WebAssembly starpkodu. Ar WebAssembly saistÄ«tie resursi tiek piegÄdÄti formÄtÄ Ā«.wasmĀ», kas ir lÄ«dzÄ«gs Ā«.classĀ» failiem Java, un satur statiskos datus un koda segmentus, lai strÄdÄtu ar Å”iem datiem.
- WebAssembly JavaScript API ā nodroÅ”ina API, lai integrÄtu ar JavaScript. Tas ļauj iegÅ«t vÄrtÄ«bas un nodot parametrus funkcijÄm WebAssembly. WebAssembly izpilde atbilst JavaScript droŔības modelim, un visa mijiedarbÄ«ba ar galveno sistÄmu notiek, tÄpat kÄ izpildot JavaScript kodu.
- WebAssembly Web API ā definÄ programmatÅ«ras saskarni, kas balstÄ«ta uz Promise mehÄnismu, lai pieprasÄ«tu un izpildÄ«tu Ā«.wasmĀ» resursus. WebAssembly resursu formÄts ir optimizÄts, lai sÄktu izpildi, negaidot pilnu faila ielÄdÄÅ”anu, kas uzlabo web lietojumprogrammu reakcijas Ätrumu.
- WASI API ā nosaka moduļu sistÄmas interfeisu, lai palaistu WebAssembly Ärpus pÄrlÅ«kprogrammas un nodroÅ”inÄtu piekļuvi tÄdiem resursiem kÄ faili, tÄ«kla savienojumi, pseidoizlases Ä£enerators un sistÄmas pulksteÅi.
Tiek norÄdÄ«ts, ka jaunajÄ standarta versijÄ ievÄrojami uzlabota augsta lÄ«meÅa valodu kompilÄcijas atbalsts WebAssembly. PiemÄram, ir ieviesta iespÄja kompilÄt WebAssembly projektus valodÄs Java, OCaml, Scala, Kotlin, Scheme un Dart. GalvenÄs izmaiÅas WebAssembly 3.0, salÄ«dzinot ar otro standarta versiju:
- Ieviests atbalsts 64-bit adreÅ”u telpai. Tagad atmiÅas adresÄÅ”anai var izmantot i64 tipu, nevis tikai i32, kas paplaÅ”ina pieejamo adresu telpu no 4 GB lÄ«dz 16 EB (pÄrlÅ«kprogrammÄ izpildes laikÄ ir noteikts ierobežojums 16 GB).
- Tiek nodroÅ”inÄta iespÄja vienlaikus izmantot vairÄkus atmiÅas objektus vienÄ WebAssembly modulÄ« un strÄdÄt ar dažÄdÄm adresu telpÄm. Starp citu, ir iespÄjams pÄrsÅ«tÄ«t datus starp dažÄdiem atmiÅas objektu eksemplÄriem, kas izvietoti dažÄdÄs adresu telpÄs.
- Izveidots atbalsts atkritumu savÄkÅ”anai. Papildus iepriekÅ” pieejamai lineÄrÄs atmiÅas veidam piedÄvÄts atseviŔķs krÄtuves veids, kuru automÄtiski pÄrvalda atkritumu savÄcÄjs. Kompilators tagad var izmantot atseviŔķas datu struktÅ«ras, masÄ«vus un mainÄ«gos, par kuru atmiÅas pieŔķirÅ”anu un dzÄ«ves cikla pÄrvaldÄ«bu atbild WebAssembly.
- Izveidots atbalsts tipizÄtÄm atsaucÄm, kas var aprakstÄ«t precÄ«zu struktÅ«ru vÄrtÄ«bai, uz kuru atsauce norÄda, ļaujot izvairÄ«ties no papildu pÄrbaudÄm izpildes laikÄ. Atbalsta apakÅ”tipus, tipu rekursiju un iespÄju droÅ”i izmantot atsauces uz funkcijÄm, kurÄm nav nepiecieÅ”amas tipu un robežu pÄrbaudes izpildes laikÄ.
- Izveidots atbalsts astes izsaukumiem (Tail call), kur paÅ”reizÄjÄ funkcija tÅ«lÄ«t beidz izpildi pÄc citas funkcijas izsaukuma, netÄrÄjot vietu stekÄ.
- Izveidots atbalsts izÅÄmumu apstrÄdei.
- Izveidots atbalsts 'relaksÄtÄm' SIMD instrukcijÄm, kas ļauj sasniegt augstÄku veiktspÄju, atteicoties no stingras semantikas ievÄroÅ”anas visÄs aparatÅ«ras platformÄs.
- Pievienota atbalsta mehÄnisma izpildes profila noteikÅ”ana, kas nosaka neatkarÄ«gu no paÅ”reizÄjÄs platformas uzvedÄ«bu instrukcijÄm, kuru izpildes rezultÄti var atŔķirties dažÄdÄs platformÄs (peldpunktu operÄcijas, NaN vÄrtÄ«bas atgrieÅ”ana, vÄjinÄtas vektora instrukcijas). IzvÄloties Å”o profilu, Wasm nodroÅ”ina deterministisku uzvedÄ«bu, reproducÄjamÄ«bu un pÄrnesamÄ«bu.
- Pievienota sintakse, lai izveidotu pielÄgotus anotÄcijas, kas ļauj pievienot papildu informÄciju WebAssembly kodam. AgrÄk pielÄgotu sekciju atbalsts, kas ļauj uzglabÄt nejauÅ”u informÄciju, bija pieejams WebAssembly binÄrajÄ formÄtÄ, bet trÅ«ka WebAssembly teksta formÄtÄ. Tagad ir iespÄjams pievienot Å”o informÄciju lasÄmÄ un rediÄ£ÄjamÄ veidÄ.
- JavaScript API pievienotas iebÅ«vÄtas funkcijas, kuras strÄdÄ ar virkÅu apstrÄdi. AgrÄk JavaScript virknes varÄja nodot WebAssembly tikai kÄ ÄrÄjÄs saites, bet tagad var tieÅ”i reaÄ£Ät uz virkÅu izsaukumiem un manipulÄt ar tÄm iekÅ”Äji WebAssembly.
Avots: opennet.lv
