Konsorciumi W3C shpalli gatishmërinë e specifikacionit që standardizon kodin e ndërmjetëm WebAssembly 3.0 dhe API-në përkatëse, duke lejuar krijimin e aplikacioneve me performancë të lartë, të transportueshme midis shfletuesve dhe platformave harduerike. WebAssembly ofron një kod të ndërmjetëm universalisht të ulët që nuk varet nga shfletuesi për ekzekutimin e aplikacioneve, duke u compiluar nga gjuhë të ndryshme programimi.
Teknologjia WebAssembly mund të përdoret për të ekzekutuar në shfletues detyra që kërkojnë performancë të lartë, si kodimi i videos, përpunimi i zërit, manipulimi i grafikës dhe 3D, zhvillimi i lojërave, operacioneve kriptografike dhe llogaritjeve matematikore, duke organizuar ekzekutimin në shfletues të kodit të shkruar në gjuhë të kompilueshme si C/C++. Duke përdorur JIT për WebAssembly, mund të arrihet një nivel performancë afër kodit natyror.
Ndër detyrat kryesore të WebAssembly është të sigurojë transportueshmërinë, parashikueshmërinë e sjelljes dhe identitetin e ekzekutimit të kodit në platforma të ndryshme. WebAssembly nuk është e kufizuar vetëm në shfletues dhe po promovohesh gjithashtu si një platformë universale për ekzekutimin e sigurt të kodit në çdo infrastrukturë, sisteme operative dhe pajisje.
Specifikimet e mëposhtme janë të disponueshme:
- WebAssembly Core â pĂ«rshkruan njĂ« makinĂ« virtuale tĂ« nivelit tĂ« ulĂ«t pĂ«r ekzekutimin e kodit tĂ« ndĂ«rmjetĂ«m WebAssembly. Burimet e lidhura me WebAssembly ofrohen nĂ« formatin ".wasm", i ngjashĂ«m me skedarĂ«t ".class" nĂ« Java dhe pĂ«rmbajnĂ« tĂ« dhĂ«na statike dhe segmente kodi pĂ«r tĂ« punuar me kĂ«to tĂ« dhĂ«na.
- WebAssembly JavaScript API â ofron njĂ« API pĂ«r integrimin me JavaScript. Lejon marrjen e vlerave dhe transferimin e parametrave nĂ« funksionet WebAssembly. Ekzekutimi i WebAssembly pĂ«rgjigjet modelit tĂ« sigurisĂ« sĂ« JavaScript dhe tĂ« gjitha ndĂ«rveprimet me sistemin kryesor realizohen nĂ« pĂ«rputhje me ekzekutimin e kodit JavaScript.
- WebAssembly Web API â pĂ«rcakton njĂ« ndĂ«rfaqe programuese mbi mekanizmin e Promise pĂ«r kĂ«rkimin dhe ekzekutimin e burimeve ".wasm". Formati i burimeve WebAssembly Ă«shtĂ« optimizuar pĂ«r fillimin e ekzekutimit, pa pritur ngarkimin e plotĂ« tĂ« skedarit, duke lejuar njĂ« pĂ«rmirĂ«sim tĂ« reagueshmĂ«risĂ« sĂ« aplikacioneve web.
- WASI API â pĂ«rcakton njĂ« ndĂ«rfaqe modulare pĂ«r sistemin pĂ«r ekzekutimin e WebAssembly jashtĂ« shfletuesve dhe pĂ«r ofrimin e aksesit nĂ« burime si skedarĂ«t, lidhjet rrjet, gjeneratorin e numrave tĂ« rastĂ«sishĂ«m dhe orĂ«t sistemore.
Vërehet që në versionin e ri të standardit është përmirësuar në mënyrë të konsiderueshme mbështetja për kompilimin në WebAssembly të gjuhëve të larta. Për shembull, është realizuar mundësia e kompilimit në WebAssembly të projekteve në gjuhët Java, OCaml, Scala, Kotlin, Scheme dhe Dart. Ndryshimet kryesore në WebAssembly 3.0, krahasuar me versionin e dytë të standardit:
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r hapĂ«sirĂ«n adresuese 64-bit. Tani, pĂ«r adresimin e memories mund tĂ« pĂ«rdoret lloji i64, e jo vetĂ«m i32, qĂ« zgjeron hapĂ«sirĂ«n adresuese tĂ« disponueshme pĂ«r aplikacione nga 4 GB nĂ« 16 EB (nĂ« shfletues Ă«shtĂ« vendosur njĂ« kufizim prej 16 GB).
- ĂshtĂ« bĂ«rĂ« e mundur pĂ«rdorimi i disa objekteve memorjes brenda njĂ« moduli WebAssembly dhe punimi me hapĂ«sira tĂ« ndryshme adresuese. PĂ«r mĂ« tepĂ«r, Ă«shtĂ« e mundur tĂ« kopjohen tĂ« dhĂ«nat midis ekzemplarĂ«ve tĂ« ndryshĂ«m tĂ« objekteve memorjes, tĂ« vendosura nĂ« hapĂ«sira tĂ« ndryshme adresuese.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r grumbullimin e mbeturinave. PĂ«rveç memories lineare tĂ« disponueshme mĂ« parĂ«, Ă«shtĂ« propozuar njĂ« tip i veçantĂ« magazinimi, i menaxhuar automatikisht me ndihmĂ«n e grumbulluesit tĂ« mbeturinave. Kompiliatori tani mund tĂ« pĂ«rdorĂ« struktura tĂ« veçanta tĂ« tĂ« dhĂ«nave, lista dhe variabla, pĂ«r tĂ« cilat menaxhimi i memories dhe ciklit tĂ« jetĂ«s Ă«shtĂ« pĂ«rgjegjĂ«s pĂ«r WebAssembly.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r referencat e tipizuara, tĂ« cilat mund tĂ« pĂ«rshkruajnĂ« strukturĂ«n e saktĂ« tĂ« vlerĂ«s nĂ« tĂ« cilĂ«n referenca tregon, duke parandaluar kĂ«shtu kontrollet shtesĂ« gjatĂ« ekzekutimit. MbĂ«shteten nĂ«nllojra, rekurziviteti i tipeve dhe mundĂ«sia e pĂ«rdorimit tĂ« sigurt tĂ« referencave nĂ« funksione, pa pasur nevojĂ« pĂ«r verifikime tĂ« tipeve dhe kufijve gjatĂ« ekzekutimit.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r thirrjet me bishta (Tail call), ku funksioni aktual pĂ«rfundon menjĂ«herĂ« pas thirrjes sĂ« funksionit tjetĂ«r, pa shpenzuar vend nĂ« stek.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r trajtimin e pĂ«rjashtimeve.
- Shtohet mbështetje për komandat SIMD "të relaksuara" (relaxed), që mundësojnë arritjen e një performancë më të lartë duke hequr dorë nga përmbushja strikte e semantikës në të gjitha platformat harduerike.
- Shtohet mbështetje e profilit të ekzekutimit të determinueshëm, i cili përcakton një sjellje të pavarur nga platforma aktuale për instruksionet, rezultatet e ekzekutimit të të cilave mund të ndryshojnë në platforma të ndryshme (operacionet me pikë të fluturshme, kthimi i vlerës NaN, instruksionet vektoriale të lehtësuara). Duke zgjedhur këtë profil, Wasm siguron një sjellje determinueshëm, riprodhueshmëri dhe transportueshmëri.
- Shtohet sintaksa për krijimin e anotimeve të personalizuara, duke lejuar lidhjen e informacionit shtesë me kodin WebAssembly. Më parë, mbështetje për seksionet e përdoruesve, që lejojnë ruajtjen e informacionit të rastësishëm, kishte në formatin binar të WebAssembly, por mungonte në formatin tekstual të WebAssembly. Tani ka mundësinë për të shtuar këtë informacion në një format të lexueshëm dhe të redaktueshëm.
- Në API-në e JavaScript janë shtuar funksione të integruara për punën me vargje. Më parë, vargjet JavaScript mund të kaloheshin në WebAssembly vetëm si lidhje të jashtme, ndërsa tani është e mundur të qasemi drejtpërdrejt te vargjet dhe të manipulojmë me to brenda WebAssembly.
Burimi: opennet.ru
