W3C կոնսորցիումը WebAssembly տեխնոլոգիայի առաջարկվող ստանդարտի կարգավիճակ ստանալու մասին։ WebAssembly-ն տրամադրում է բրաուզերից անկախ համընդհանուր ցածրի մակարդակի միջանկյալ կոդ՝ տարբեր ծրագրավորման լեզուներից ներարկված դիմումների իրականացնելու համար։ WebAssembly-ն ներկայացվում է ավելի խոստումնալից և բրաուզերների միջև տեղափոխելի տեխնոլոգիա բարձր արդյունավետ web-դիմումների ստեղծման համար։ WebAssembly-ն կարող է օգտագործվել բարձր արտադրողականություն պահանջող խնդիրների լուծման համար, օրինակ՝ տեսանյութի կոդավորում, ձայնի մշակում, գծապատկերով ու 3D-ով манипуляция, խաղերի մշակում, крипտոգրաֆիկ գործողություններ, մաթեմատիկական հաշվարկներ և ծրագրերի լեզուների տեղափոխելի իրականացման ստեղծում։
WebAssembly-ն շատ է նման Asm.js-ին, սակայն տարբերվում է նրանով, որ դա բինարային ֆորմատ է, որն անջատված է JavaScript-ից։ WebAssembly-ում չի պահանջվում աղբյուրի հավաքիչի օգտագործումը, քանի որ կիրառվում է հիշողության զգալի կառավարում։ JIT-ի կիրառության շնորհիվ WebAssembly-ն կարող է հասնել բնօրինակ կոդի հետ համադրելի կատարողական մակարդակի։ WebAssembly-ի հիմնական խնդիրներից մեկը հայտնի է տեղափոխելիությունը, վարքի կանխատեսելիությունը և կոնկրետ կոդերի կատարման նույնականությունը տարբեր հարթակներում։ Վերջին ժամանակներս WebAssembly-ն նաև բազմաթիվ ենթակառուցվածքներում, օպերացիոն համակարգերում և սարքերում կատարված կոդի ապահովված կատարման համար նախատեսված համընդհանուր պլատֆորմի, առանց սահմանափակվելու բրաուզերներով։
W3C-ն ստանդարտավորել է WebAssembly-ին առնչվող երեք մանրամասնություն։
- — նկարագրում է ցածրի մակարդակի վիրտուալ մեքենա WebAssembly միջանկյալ կոդի կատարմամբ։ WebAssembly-ի հետ կապված ռեսուրսները տրամադրվում են «.wasm» ձևաչափով, որը նման է «.class» ֆայլի Java-ում և պարունակում է ստատիկ տվյալներ և կոդի հատվածներ դրանց հետ աշխատանք կատարելու համար։
- — սահմանում է ծրագիր՝ հիմնված խոստման մեխանիզմի վրա՝ «.wasm» ռեսուրսները հայտնելու և կատարելու համար։ WebAssembly ռեսուրսների ձևաչափը օպտիմիզացված է իրականացման համար՝ առանց ֆայլի ամբողջական ներբեռնելու սպասելու, ինչը թույլ է տալիս բարելավել web-դիմումների արձագանքությունը։
- — տրամադրում է API JavaScript-ի հետ ինտեգրման համար։ Գրանցված արժեքներ ստանալու և WebAssembly-ի ֆունկցիաներ փոխանցելու հնարավորություն է տալիս։ WebAssembly-ի կատարման ընթացքում անվտանգության մոդելը համապատասխանեցված է JavaScript-ին, և հիմնական համակարգի հետ ողջ փոխգործակցությունը կատարվում է JavaScript-ի կոդի կատարմանը համապատասխան։
Հաշվի առնելով ապագայում նախատեսվում է սահմանել WebAssembly-ի համար նման հնարավորությունները, ինչպես.
- Ամփոփված բազմաթիվ թղթապանակություն՝ կիսված հիշողության և ատոմային հիշողության հասանելիությամբ;
- SIMD հիմքով վեկտորային գործողություններ, որոնք թույլ են տալիս զուգահեռացնել ցիկլերի կատարումը;
- Մոդելային տիպեր՝ WebAssembly կոդից օբյեկտներին անմիջական հղումների համար;
- Հնարավորություն ֆունկցիաներ կանչել առանց լրացուցիչ տարածքի ծախսի սանդղակում;
- ECMAScript — WebAssembly-ի կոդը JavaScript-ով որպես ECMAScript 6-ի համապատասխան մոդուլներ բեռնելու հնարավորություն;
- Մաքրող հավաքողի աշխատանքային ռեժիմ;
- Դիագնոստիկային ուղված ինտերֆեյսներ;
- (WebAssembly System Interface) — օպերացիոն համակարգի հետ (POSIX API ֆայլերի, սոկետների և այլնի համար) ուղղակի փոխազդեցության API-ի համակարգ;
Ընտանիք: opennet.ru
