Konsorciumi W3C publikoi draftin e specifikimit të ri, që standardizon kodin e mesëm WebAssembly 2.0 dhe API-në e lidhur, duke lejuar krijimin e aplikacioneve me performancë të lartë, të transferueshme midis shfletuesve dhe platformave harduerike. WebAssembly ofron një kod të përgjithshëm të ulët, të pavarur nga shfletuesi, për ekzekutimin e aplikacioneve të komiluara nga gjuhë të ndryshme programimi. Duke shfrytëzuar JIT për WebAssembly, mund të arrihet një nivel performance afër kodit natyror.
Teknologjia WebAssembly mund të përdoret për ekzekutimin në shfletues të detyrave që kërkojnë performancë të lartë, si kodimi i videove, përpunimi i zërit, manipulimi me grafikë dhe 3D, zhvillimi i lojrave, operacioneve kriptografike dhe llogaritjeve matematikore përmes organizimit të ekzekutimit të kodit në shfletues, të shkruara në gjuhë të komiluara, si C/C++.
Mes detyrave kryesore të WebAssembly, spikasin sigurimi i transferueshmërisë, parashikueshmërisë së sjelljes dhe identitetit të ekzekutimit të kodit në platforma të ndryshme. Së fundmi, WebAssembly po promovohen gjithashtu si një platformë universale për ekzekutimin e sigurt të kodit në çdo infrastrukturë, sisteme operative dhe pajisje, pa u kufizuar vetëm në shfletues.
W3C publikoi tri specifikime paraprake të WebAssembly 2.0:
- 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 Interface â ofron API pĂ«r integrim me JavaScript. Lejon marrjen e vlerave dhe transmetimin e parametrave nĂ« funksionet e WebAssembly. Ekzekutimi i WebAssembly i pĂ«rputhet me modelin e sigurisĂ« sĂ« JavaScript dhe e gjithĂ« ndĂ«rveprimi me sistemin e bazĂ«s realizohet siç ndodh 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.
Ndryshimet kryesore në WebAssembly 2.0 në krahasim me versionin e parë të standardit:
- Mbështetje për llojin e vektorit v128 dhe instruksionet e lidhura vektoriale, të cilat lejojnë ekzekutimin paralel të veprimeve mbi disa vlera numerike (SIMD, instruksion i vetëme shumë të dhëna).
- Mundësia e importeve dhe eksporteve të variablave globalë të ndryshueshëm (mutable), duke lejuar aplikimin e lidhjes globale për vlera të tilla si treguesit e stack-ut në C++.
- Instruksione të reja për konvertimin e llojit float në int, të cilat në vend të gjenerimit të një përjashtimi në rast mbingarkese të rezultatit, kthejnë vlerën minimale ose maksimale të mundshme (e nevojshme për SIMD).
- Instruksione për zgjerimin e shenjës së numrave të plotë (rritja e numrit në bit me ruajtjen e shenjës dhe vlerës).
- Mbështetje për kthimin e disa vlerave nga blloqet dhe funksionet (përveç kalimit të disa parametrave në funksione).
- Realizimi i funksioneve JavaScript BigInt64Array dhe BigUint64Array për konvertimin midis llojit BigInt të JavaScript-it dhe përfaqësimit të numrave të plotë 64-bit në WebAssembly.
- Mbështetje për lloje referencash (funcref dhe externref) dhe instruksionet e lidhura (select, ref.null, ref.func dhe ref.is_null).
- Instruksione memory.copy, memory.fill, memory.init dhe data.drop për kopjimin e të dhënave mes hapësirave të memories dhe pastrojnë rajone të memories.
- Instruksione për akses dhe ndryshim të drejtpërdrejtë të tabelave (table.set, table.get, table.size, table.grow). Mundësia e krijimit, importit dhe eksportit të disa tabelave në një modul. Funksione për kopjimin/përmbushjen e tabelave në mënyrë të paketuar (table.copy, table.init dhe elem.drop).
Burimi: opennet.ru
