Ofrohet Pamja paraprake standarde WebAssembly 2.0

W3C ka publikuar një draft të një specifikimi të ri që standardizon softuerin e mesëm WebAssembly 2.0 dhe API-në e lidhur me të, duke mundësuar krijimin e aplikacioneve me performancë të lartë që janë të lëvizshëm nëpër shfletues dhe platforma harduerike. WebAssembly ofron kod të ndërmjetëm universal, të pavarur nga shfletuesi, të nivelit të ulët për ekzekutimin e aplikacioneve të përpiluara nga gjuhë të ndryshme programimi. Duke përdorur JIT për WebAssembly, mund të arrini nivele të performancës afër kodit vendas.

Teknologjia WebAssembly mund të përdoret për të kryer detyra me performancë të lartë në shfletues, të tilla si kodimi i videos, përpunimi audio, grafika dhe manipulimi 3D, zhvillimi i lojës, operacionet kriptografike dhe llogaritjet matematikore duke lejuar kodin e shkruar në gjuhë të përpiluara si C/C++ .

Ndër qëllimet kryesore të WebAssembly është sigurimi i transportueshmërisë, sjelljes së parashikueshme dhe ekzekutimit identik të kodit në platforma të ndryshme. Kohët e fundit, WebAssembly është promovuar gjithashtu si një platformë universale për ekzekutimin e sigurt të kodit në çdo infrastrukturë, sistem operativ dhe pajisje, pa u kufizuar në shfletues.

W3C ka publikuar tre draft specifikime për WebAssembly 2.0:

  • 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 shpërndahen në një format ".wasm", të ngjashëm me skedarët ".class" në Java, që përmbajnë të dhëna statike dhe segmente kodi për të punuar me ato të dhëna.
  • Ndërfaqja JavaScript WebAssembly - Ofron një API për integrim me JavaScript. Ju lejon të merrni vlera dhe të kaloni parametra në funksionet WebAssembly. Ekzekutimi i WebAssembly ndjek modelin e sigurisë JavaScript dhe i gjithë ndërveprimi me sistemin kryesor kryhet në të njëjtën mënyrë si ekzekutimi i kodit JavaScript.
  • WebAssembly Web API - Përcakton një ndërfaqe programimi bazuar në mekanizmin Promise për kërkimin dhe ekzekutimin e burimeve ".wasm". Formati i burimit WebAssembly është optimizuar për të filluar ekzekutimin pa pritur që skedari të ngarkohet plotësisht, gjë që përmirëson reagimin e aplikacioneve në ueb.

Ndryshimet kryesore në WebAssembly 2.0 në krahasim me versionin e parë të standardit:

  • Mbështetje për llojin e vektorit v128 dhe udhëzimet përkatëse të vektorit që ju lejojnë të kryeni veprime në vlera të shumta numerike paralelisht (SIMD, të dhëna të shumta me një udhëzim të vetëm).
  • Aftësia për të importuar dhe eksportuar variabla globale të ndryshueshme, duke lejuar lidhjen globale për vlera të tilla si tregues të stivës në C++.
  • Udhëzime të reja konvertimi float në int që, në vend që të hedhin një përjashtim kur rezultati tejmbushet, kthejnë vlerën minimale ose maksimale të mundshme (të nevojshme për SIMD).
  • Udhëzime për zgjerimin e shenjave të numrave të plotë (rritja e thellësisë së bitit të një numri duke ruajtur shenjën dhe vlerën).
  • Mbështetje për blloqe dhe funksione që kthejnë vlera të shumta (përveç kalimit të parametrave të shumëfishtë në funksione).
  • Zbatimi i funksioneve BigInt64Array dhe BigUint64Array JavaScript për konvertimin ndërmjet tipit BigInt JavaScript dhe përfaqësimit WebAssembly të numrave të plotë 64-bit.
  • Mbështetje për llojet e referencës (funcref dhe externref) dhe udhëzimet e lidhura me to (select, ref.null, ref.func dhe ref.is_null).
  • Memory.copy, memory.fill, memory.init dhe data.drop instruksionet për kopjimin e të dhënave ndërmjet rajoneve të memories dhe pastrimin e rajoneve të memories.
  • Udhëzime për aksesin dhe modifikimin e drejtpërdrejtë të tabelave (tabelë.set, table.get, table.size, table.grow). Aftësia për të krijuar, importuar dhe eksportuar tabela të shumta në një modul. Funksionet për kopjimin/mbushjen e tabelave në modalitetin batch (tabela.kopje, tabelë.init dhe elem.drop).

Burimi: opennet.ru

Shto një koment