WebAssembly 2.0 Norma Antaŭrigardo Havebla

La W3C publikigis skizon de nova specifo kiu normigas WebAssembly 2.0-mezvaron kaj ĝian rilatan API, ebligante la kreadon de alt-efikecaj aplikoj kiuj estas porteblaj tra retumiloj kaj aparatarplatformoj. WebAssembly disponigas retumilon-sendependan, universalan, malaltnivelan mezan kodon por ruli aplikojn kompilitajn de diversaj programlingvoj. Uzante JIT por WebAssembly, vi povas atingi rendimentajn nivelojn proksimajn al denaska kodo.

WebAssembly-teknologio povas esti uzata por plenumi alt-efikecajn taskojn en la retumilo, kiel videokodigado, audio-prilaborado, grafiko kaj 3D-manipulado, lud-disvolviĝo, kriptografiaj operacioj kaj matematikaj kalkuloj permesante kodon skribitan en kompilitaj lingvoj kiel C/C++. .

Inter la ĉefaj celoj de WebAssembly estas certigi porteblon, antaŭvideblan konduton kaj identan kodekzekuton sur malsamaj platformoj. Lastatempe, WebAssembly ankaŭ estis antaŭenigita kiel universala platformo por sekure ekzekuti kodon tra ajna infrastrukturo, operaciumo kaj aparato, ne limigita al retumiloj.

La W3C publikigis tri skizajn specifojn por WebAssembly 2.0:

  • WebAssembly Core - Priskribas malaltnivelan virtualan maŝinon por ruli WebAssembly mezan kodon. Rimedoj asociitaj kun WebAssembly estas liveritaj en ".wasm" formato, simila al ".class" dosieroj en Java, enhavantaj senmovajn datenojn kaj kodsegmentojn por labori kun tiuj datenoj.
  • WebAssembly JavaScript Interface - Provizas API por integriĝo kun JavaScript. Ebligas al vi akiri valorojn kaj transdoni parametrojn al WebAssembly-funkcioj. Ekzekuto de WebAssembly sekvas la JavaScript-sekurecan modelon kaj ĉiu interago kun la ĉefsistemo estas efektivigita en la sama maniero kiel ekzekuti JavaScript-kodon.
  • WebAssembly Web API - Difinas programan interfacon bazitan sur la Promise-mekanismo por peti kaj ekzekuti ".wasm" rimedojn. La formato de rimedo WebAssembly estas optimumigita por komenci ekzekuton sen atendi ke la dosiero plene ŝarĝos, kio plibonigas la respondecon de TTT-aplikoj.

La ĉefaj ŝanĝoj en WebAssembly 2.0 kompare kun la unua versio de la normo:

  • Subteno por la v128 vektora tipo kaj rilataj vektoraj instrukcioj, kiuj ebligas al vi plenumi agojn sur multoblaj nombraj valoroj paralele (SIMD, unuopa instrukcia multoblaj datumoj).
  • Kapablo importi kaj eksporti ŝanĝeblajn tutmondajn variablojn, permesante tutmondan ligadon por valoroj kiel stakmontriloj en C++.
  • Novaj instrukcioj de konvertiĝo float al int, kiuj anstataŭ ĵeti escepton kiam la rezulto superfluas, redonas la minimuman aŭ maksimuman eblan valoron (necesa por SIMD).
  • Instrukcioj por signo-vastigo de entjeroj (pliigante la bitprofundon de nombro konservante signon kaj valoron).
  • Subteno por blokoj kaj funkcioj redonantaj multoblajn valorojn (krom pasi plurajn parametrojn al funkcioj).
  • Efektivigo de la BigInt64Array kaj BigUint64Array JavaScript-funkcioj por konverti inter la BigInt JavaScript-tipo kaj la WebAssembly-reprezentado de 64-bitaj entjeroj.
  • Subteno por referencaj tipoj (funcref kaj externref) kaj iliaj rilataj instrukcioj (select, ref.null, ref.func kaj ref.is_null).
  • Memory.copy, memory.fill, memory.init, kaj data.drop instrukcioj por kopii datumojn inter memorregionoj kaj purigi memorregionojn.
  • Instrukcioj por rekte aliri kaj modifi tabelojn (table.set, table.get, table.size, table.grow). Kapablo krei, importi kaj eksporti plurajn tabelojn en unu modulo. Funkcioj por kopii/plenigi tabelojn en bata reĝimo (table.copy, table.init kaj elem.drop).

fonto: opennet.ru

Aldoni komenton