Konsorciumi W3C shpalli gatishmërinë e specifikacionit që standardizon kodi ndërmjetës WebAssembly 3.0 dhe API-së përkatëse, duke lejuar krijimin e aplikacioneve me performancë të lartë, të transferueshme ndërmjet shfletuesve dhe platformave harduerike. WebAssembly ofron një kod të ulët ndërmjetës, të pavarur nga shfletuesi, për ekzekutimin e aplikacioneve të kompiluara nga gjuhë të ndryshme programimi.
Teknologjia WebAssembly mund të përdoret për të ekzekutuar në shfletues detyra që kërkojnë performancë të lartë, të tilla si kodimi i videove, përpunimi i zërit, manipulimi i grafikës dhe 3D, zhvillimi i lojërave, operacioneve kriptografike dhe llogaritjeve matematikore përmes organizimit të ekzekutimit në shfletues të kodit të shkruar në gjuhë të kompilueshme, si C/C++. Nëpërmjet angazhimit JIT për WebAssembly, mund të arrihet një nivel performance të afërt me kodin natyror.
Mes qëllimeve kryesore të WebAssembly është sigurimi i transferueshmërisë, parashikueshmërisë së sjelljes dhe identitetit të ekzekutimit të kodit në platforma të ndryshme. WebAssembly nuk kufizohet vetëm në shfletuesit dhe promovohet gjithashtu si një platformë universale për ekzekutimin e sigurt të kodit në çdo infrastrukturë, sistem operativ dhe pajisje.
Specifikimet e mëposhtme janë në dispozicion:
- WebAssembly Core â pĂ«rshkruan njĂ« makinĂ« virtuale tĂ« ulĂ«t pĂ«r ekzekutimin e kodit ndĂ«rmjetĂ«s WebAssembly. Burimet e lidhura me WebAssembly ofrohen nĂ« formatin ".wasm", tĂ« 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 integrim me JavaScript. Lejon marrjen e vlerave dhe kalimin e parametra nĂ« funksionet WebAssembly. Ekzekutimi i WebAssembly pĂ«rputhet me modelin e sigurisĂ« sĂ« JavaScript dhe e gjithĂ« ndĂ«rveprimi me sistemin kryesor realizohet nĂ« mĂ«nyrĂ« tĂ« ngjashme me ekzekutimin e kodit JavaScript.
- WebAssembly Web API â pĂ«rcakton njĂ« ndĂ«rfaqe programore tĂ« bazuar nĂ« mekanizmin Promesa 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 rritur kĂ«shtu reagueshmĂ«rinĂ« e aplikacioneve web.
- WASI API â pĂ«rcakton njĂ« ndĂ«rfaqe sistemore modulare pĂ«r ekzekutimin e WebAssembly jashtĂ« shfletuesve dhe ofron qasje nĂ« burime tĂ« tilla si skedarĂ«t, lidhjet rrjetĂ«rore, gjeneratorĂ«t e numrave rastĂ«sorĂ« dhe orĂ«t sistemore.
Vërehet se në versionin e ri të standardit është përmirësuar ndjeshëm mbështetje e kompilimit në WebAssembly të gjuhëve të nivelit të lartë. Për shembull, është realizuar mundësia e kompilimit në WebAssembly projektet e shkruara në gjuhët Java, OCaml, Scala, Kotlin, Scheme dhe Dart. Ndryshimet kryesore në WebAssembly 3.0, në krahasim 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, jo vetĂ«m i32, çka zgjeron hapĂ«sirĂ«n adresuese tĂ« disponueshme pĂ«r aplikacione nga 4 GB nĂ« 16 EB (nĂ« ekzekutimin nĂ« shfletues Ă«shtĂ« vendosur njĂ« kufizim prej 16 GB).
- ĂshtĂ« ofruar mundĂ«sia pĂ«r pĂ«rdorimin e disa objekteve memories nĂ« njĂ« moduli WebAssembly dhe pĂ«r punĂ« me hapĂ«sira tĂ« ndryshme adresimi. NdĂ«r tĂ« tjera, Ă«shtĂ« e mundur kopjimi i tĂ« dhĂ«nave midis instancave tĂ« ndryshme tĂ« objekteve memories, tĂ« vendosura nĂ« hapĂ«sira tĂ« ndryshme adresimi.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r mbledhjen e plehrave. PĂ«rveç memories lineare tĂ« disponueshme mĂ« parĂ«, Ă«shtĂ« ofruar njĂ« lloj i veçantĂ« magazinimi, i menaxhuar automatikisht me anĂ« tĂ« mbledhĂ«sit tĂ« plehrave. Kompilatori tani mund tĂ« pĂ«rdorĂ« struktura tĂ« veçanta tĂ« tĂ« dhĂ«nave, masa dhe variabla, pĂ«r tĂ« cilat menaxhimi i memories dhe i ciklit tĂ« jetĂ«s Ă«shtĂ« pĂ«rgjegjĂ«s WebAssembly.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r referencat e tipizuara, tĂ« cilat mund tĂ« pĂ«rshkruajnĂ« strukturĂ«n e saktĂ« tĂ« vlerĂ«s, ndaj tĂ« cilĂ«s referenca tregon, duke shmangur kĂ«shtu verifikimet shtesĂ« gjatĂ« ekzekutimit. MbĂ«shteten nĂ«n-tipi, recursioni e tipeve dhe mundĂ«sia e pĂ«rdorimit tĂ« sigurt tĂ« referencave nĂ« funksione, pa pasur nevojĂ« pĂ«r verifikim tĂ« tipeve dhe kufijve gjatĂ« ekzekutimit.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r thirrjet e bishtit (Tail call), kur funksioni aktual pĂ«rfundon menjĂ«herĂ« pas thirrjes sĂ« njĂ« funksioni tjetĂ«r, pa harxhuar hapĂ«sirĂ« nĂ« stack.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r trajtimin e pĂ«rjashtimeve.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r instrukcionet SIMD tĂ« "relaksuar", tĂ« cilat lejojnĂ« arritjen e njĂ« performancĂ« mĂ« tĂ« lartĂ« pĂ«rmes heqjes sĂ« mbikĂ«qyrjes strikte tĂ« semantikĂ«s nĂ« tĂ« gjitha platforma harduerike.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r profilin deterministik tĂ« ekzekutimit, 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Ă« flutuese, kthimi i vlerĂ«s NaN, instruksionet e dobĂ«suara vektoriale). Kur zgjidhet ky profil, Wasm siguron sjellje deterministe, riprodhueshmĂ«ri dhe transportueshmĂ«ri.
- ĂshtĂ« shtuar sintaksa pĂ«r tĂ« krijuar annotime tĂ« personalizuara, duke lejuar bashkimin e informacionit shtesĂ« me kodin WebAssembly. MĂ« parĂ«, mbĂ«shtetje pĂ«r seksione tĂ« personalizuara, qĂ« lejojnĂ« ruajtjen e informacionit tĂ« rastĂ«sishĂ«m, ekzistonte nĂ« formatin binar tĂ« WebAssembly, por mungonte nĂ« formatin tekstual tĂ« WebAssembly. Tani ka mundĂ«si tĂ« shtohet ky informacion nĂ« njĂ« formĂ« tĂ« lexueshme dhe tĂ« redaktueshme.
- Në API-në JavaScript janë shtuar funksione të ndërtuara për punën me strings. Më parë, strings e JavaScript mund të kaloheshin në WebAssembly vetëm si referenca të jashtme, ndërsa tani mund të referoheni direkt në strings dhe të manipuloni ato brenda WebAssembly.
Burimi: opennet.ru
