Հասանելի է WebAssembly 2.0 ստանդարտ նախադիտում

W3C-ը հրապարակել է նոր բնութագրի նախագիծ, որը ստանդարտացնում է WebAssembly 2.0-ի միջին ծրագիրը և դրա հետ կապված API-ը՝ հնարավորություն տալով ստեղծել բարձր արդյունավետությամբ հավելվածներ, որոնք շարժական են բրաուզերների և ապարատային հարթակներում: WebAssembly-ն ապահովում է բրաուզերից անկախ, ունիվերսալ, ցածր մակարդակի միջանկյալ կոդ՝ տարբեր ծրագրավորման լեզուներից կազմված հավելվածների գործարկման համար: Օգտագործելով JIT WebAssembly-ի համար, դուք կարող եք հասնել տեղական կոդի մոտ կատարման մակարդակի:

WebAssembly տեխնոլոգիան կարող է օգտագործվել բրաուզերում բարձր կատարողական առաջադրանքներ կատարելու համար, ինչպիսիք են վիդեո կոդավորումը, աուդիո մշակումը, գրաֆիկան և 3D մանիպուլյացիաները, խաղերի մշակումը, գաղտնագրման գործողություններ և մաթեմատիկական հաշվարկներ՝ թույլ տալով կոդ գրված կոմպիլացված լեզուներով, ինչպիսիք են C/C++-ը: .

WebAssembly-ի հիմնական նպատակներից է տարբեր հարթակներում շարժականության, կանխատեսելի վարքագծի և կոդի նույնական կատարման ապահովումը: Վերջերս WebAssembly-ն նաև գովազդվել է որպես ունիվերսալ հարթակ՝ ցանկացած ենթակառուցվածքի, օպերացիոն համակարգի և սարքի վրա կոդի անվտանգ կատարման համար՝ չսահմանափակվելով բրաուզերներով:

W3C-ը հրապարակել է WebAssembly 2.0-ի երեք բնութագրերի նախագիծ.

  • WebAssembly Core - Նկարագրում է ցածր մակարդակի վիրտուալ մեքենա WebAssembly միջանկյալ կոդը գործարկելու համար: WebAssembly-ի հետ կապված ռեսուրսները տրամադրվում են «.wasm» ձևաչափով, որը նման է Java-ի «.class» ֆայլերին, որոնք պարունակում են ստատիկ տվյալներ և կոդերի հատվածներ այդ տվյալների հետ աշխատելու համար:
  • WebAssembly JavaScript ինտերֆեյս - ապահովում է API JavaScript-ի հետ ինտեգրվելու համար: Թույլ է տալիս արժեքներ ստանալ և պարամետրեր փոխանցել WebAssembly ֆունկցիաներին: WebAssembly-ի կատարումը հետևում է JavaScript-ի անվտանգության մոդելին, և հիմնական համակարգի հետ բոլոր փոխազդեցություններն իրականացվում են այնպես, ինչպես JavaScript-ի կոդի գործարկումը:
  • WebAssembly Web API - Սահմանում է ծրագրավորման միջերես, որը հիմնված է Promise մեխանիզմի վրա՝ «.wasm» ռեսուրսներ պահանջելու և գործարկելու համար: WebAssembly ռեսուրսի ձևաչափը օպտիմիզացված է գործարկումը սկսելու համար՝ չսպասելով ֆայլի լրիվ բեռնմանը, ինչը բարելավում է վեբ հավելվածների պատասխանունակությունը:

WebAssembly 2.0-ի հիմնական փոփոխությունները ստանդարտի առաջին տարբերակի համեմատ.

  • Աջակցություն v128 վեկտորի տիպին և հարակից վեկտորի հրահանգներին, որոնք թույլ են տալիս կատարել գործողություններ մի քանի թվային արժեքների վրա զուգահեռ (SIMD, մեկ հրահանգի բազմաթիվ տվյալներ):
  • Փոփոխական գլոբալ փոփոխականներ ներմուծելու և արտահանելու ունակություն, ինչը թույլ է տալիս գլոբալ կապել այնպիսի արժեքների համար, ինչպիսիք են ցուցիչները C++-ում:
  • Նոր float to int փոխակերպման հրահանգներ, որոնք, փոխանակ բացառություն գցելու, երբ արդյունքը լցվում է, վերադարձնում է նվազագույն կամ առավելագույն հնարավոր արժեքը (անհրաժեշտ է SIMD-ի համար):
  • Ամբողջ թվերի նշանների ընդլայնման հրահանգներ (թվի բիթային խորության մեծացում՝ պահպանելով նշանն ու արժեքը):
  • Աջակցություն բազմաթիվ արժեքներ վերադարձնող բլոկների և գործառույթների համար (ի լրումն գործառույթներին բազմաթիվ պարամետրեր փոխանցելու):
  • BigInt64Array և BigUint64Array JavaScript ֆունկցիաների իրականացում BigInt JavaScript տիպի և 64-բիթանոց ամբողջ թվերի WebAssembly ներկայացման միջև փոխակերպման համար:
  • Աջակցություն հղման տեսակներին (funcref և externref) և դրանց հետ կապված հրահանգներին (select, ref.null, ref.func և ref.is_null):
  • Memory.copy, memory.fill, memory.init և data.drop հրահանգներ՝ հիշողության շրջանների միջև տվյալների պատճենման և հիշողության շրջանները մաքրելու համար:
  • Աղյուսակներն ուղղակիորեն մուտք գործելու և փոփոխելու հրահանգներ (table.set, table.get, table.size, table.grow): Մի մոդուլում բազմաթիվ աղյուսակներ ստեղծելու, ներմուծելու և արտահանելու ունակություն: Սեղանները խմբաքանակով պատճենելու/լրացնելու գործառույթներ (table.copy, table.init և elem.drop):

Source: opennet.ru

Добавить комментарий