Mozilla, Fastly, Intel ndi Red Hat amalimbikitsa WebAssembly ngati nsanja yogwiritsidwa ntchito padziko lonse lapansi

Mozilla, Fastly, Intel ndi Red Hat ogwirizana kuyesetsa kwake kupanga matekinoloje omwe amathandizira kuti WebAssembly ikhale nsanja yapadziko lonse lapansi yosungitsa ma code pazipangizo zilizonse, makina ogwiritsira ntchito, kapena chipangizo chilichonse. Gulu lakhazikitsidwa kuti pakhale chitukuko chogwirizana cha nthawi yothamanga ndi ma compilers omwe amalola kugwiritsa ntchito WebAssembly osati pakusakatula masamba okha. Bytecode Alliance.

Kuti mupange mapulogalamu osunthika operekedwa mumtundu wa WebAssembly omwe atha kuchitidwa kunja kwa msakatuli, tikupangira kugwiritsa ntchito API. WASI (WebAssembly System Interface), yomwe imapereka mapulogalamu olumikizirana mwachindunji ndi makina ogwiritsira ntchito (POSIX API yogwira ntchito ndi mafayilo, sockets, etc.). Chodziwika bwino cha machitidwe ogwiritsira ntchito pogwiritsa ntchito WASI ndikuti amayenda m'malo a sandbox kuti adzilekanitse ndi dongosolo lalikulu ndikugwiritsa ntchito njira yachitetezo potengera kuthekera kochitapo kanthu ndi chilichonse (mafayilo, maulalo, soketi, mafoni amtundu uliwonse). , ndi zina zotero) ntchitoyo iyenera kupatsidwa zilolezo zoyenera (kufikira kokha kwa zomwe zalengezedwa zimaperekedwa).

M'modzi wa zolinga Mgwirizano wopangidwa ndi njira yothetsera vuto la kugawa mapulogalamu amakono a modular omwe ali ndi zodalira zambiri. Muzochita zotere, kudalira kulikonse kumatha kukhala gwero lachiwopsezo kapena kuwukira. Kuwongolera kudalira kumakupatsani mwayi wowongolera mapulogalamu onse okhudzana nawo. Kukhulupirira mukugwiritsa ntchito kumangotanthauza kudalira zodalira zonse, koma kudalira nthawi zambiri kumapangidwa ndikusamalidwa ndi magulu ena omwe zochita zawo sizingathe kuyendetsedwa. Mamembala a Bytecode Alliance akufuna kupereka yankho lokwanira kuti agwiritse ntchito motetezeka mapulogalamu a WebAssembly omwe sadali odalirika.

Kuti atetezedwe, akuyenera kugwiritsa ntchito lingaliro la nanoprocesses, momwe gawo lililonse lodalira limapatulidwa kukhala gawo lapadera la WebAssembly, lomwe mphamvu zake zimakhazikitsidwa molingana ndi gawo ili (mwachitsanzo, laibulale yopangira zingwe sizingachitike. athe kutsegula soketi ya netiweki kapena fayilo). Mosiyana ndi kulekanitsa ndondomeko, ogwira ntchito pa WebAssembly ndi opepuka ndipo amafuna pafupifupi palibe zowonjezera zowonjezera - kuyanjana pakati pa ogwira ntchito sikuchedwa kwambiri kusiyana ndi kuyitana ntchito wamba. Kupatukana sikungachitike kokha pamlingo wa ma module, komanso pamlingo wamagulu a ma module omwe, mwachitsanzo, amafunikira kugwira ntchito ndi malo omwe amakumbukiridwa.

Mphamvu zomwe zapemphedwa zitha kuzindikirika pamlingo wodalira okha ndikuperekedwa kuzinthu zodalira pa unyolo ndi ma module a makolo (zothandizira mu WASI zimalumikizidwa ndi mtundu wapadera wofotokozera - kuthekera). Mwachitsanzo, gawoli likhoza kupatsidwa mwayi wopeza bukhu linalake ndi mafoni a dongosolo, ndipo ngati chitukuko cha chitukuko cha modules chikusokonezedwa kapena chiwopsezo chikudziwika, panthawi ya chiwonongeko, mwayi wopezeka udzangokhala pazinthu izi zokha. Kulengeza kwa zothandizira ndi omwe amapanga ma module kumatha kukhala chizindikiro cha zochitika zokayikitsa, monga pamene gawo lokonzekera malemba likupempha chilolezo kuti mutsegule intaneti. Zilolezo zokhazikitsidwa poyamba zimafufuzidwa ndipo ngati zisintha, kutsitsa kudalira kumakanidwa mpaka siginecha yakomweko isinthidwa.

Kwa chitukuko chogwirizana pansi pa phiko la Bytecode Alliance kumasuliridwa zambiri zokhudzana ndi WebAssembly ntchito, yomwe idapangidwa kale mosiyana ndi makampani omwe adayambitsa mgwirizanowu:

  • Nthawi yachisanu - nthawi yogwiritsira ntchito WebAssembly ndi zowonjezera za WASI ngati ntchito zodziyimira zokha. Imathandizira kukhazikitsidwa kwa WebAssembly bytecode pogwiritsa ntchito mzere wapadera wamalamulo ndikulumikiza mafayilo okonzekera okonzeka (wasmtime imapangidwa mu pulogalamuyi ngati laibulale). Wasmtime ili ndi mawonekedwe osinthika omwe amakulolani kuti muwongolere nthawi yoyendetsera ntchito zosiyanasiyana, mwachitsanzo, mutha kupanga mtundu wovumbulutsidwa wa zida zomwe zili ndi zinthu zochepa;
  • Icho chimawala - wolemba ndi nthawi yogwiritsira ntchito mapulogalamu mumtundu wa WebAssembly. Wosiyana mbali Lucet ndikugwiritsa ntchito kuphatikiza koyembekezeka kwathunthu (AOT, pasadakhale) m'malo mwa JIT kukhala makina amakina oyenera kuphedwa mwachindunji. Pulojekitiyi idapangidwa ndi Fastly ndipo imakonzedwa kuti igwiritse ntchito zinthu zochepa ndikuyambitsa zatsopano mwachangu (Mwachangu imagwiritsa ntchito Lucet mumtambo wamtambo wamtambo womwe umagwiritsa ntchito WebAssembly kwa othandizira omwe akhazikitsidwa pa pempho lililonse). Monga gawo la polojekitiyi, wopanga Lucet akukonzekera kusinthidwa kuti agwiritse ntchito Wasmtime ngati maziko;
  • WAMR (WebAssembly Micro Runtime) ndi nthawi ina yoyendetsera WebAssembly, yomwe idapangidwa ndi Intel kuti igwiritsidwe ntchito pazida za Internet of Things. WAMR imakonzedwa kuti isagwiritsidwe ntchito pang'ono ndipo itha kugwiritsidwa ntchito pazida zokhala ndi RAM yochepa. Pulojekitiyi ikuphatikizapo womasulira ndi makina enieni ogwiritsira ntchito WebAssembly bytecode, API (kagawo kakang'ono ka Libc) ndi zipangizo zoyendetsera ntchito zamphamvu;
  • Kulimbana - jenereta yamakina yomwe imamasulira chiwonetsero chapakatikati chodziyimira pawokha pamapangidwe a Hardware kukhala makina ogwiritsiridwa ntchito omwe amakonzedwa pamapulatifomu enaake. Cranelift imathandizira kuphatikizika kwa kuphatikizika kwa ntchito kuti ikhale yofulumira kwambiri, yomwe imalola kuti igwiritsidwe ntchito popanga opanga ma JIT (JIT yochokera ku Cranelift imagwiritsidwa ntchito mu makina a Wasmtime virtual);
  • WASI wamba - kukhazikitsidwa kosiyana kwa WASI (WebAssembly System Interface) API pokonzekera kuyanjana ndi machitidwe opangira;
  • katundu-wasi - gawo la woyang'anira phukusi la Cargo lomwe limakhazikitsa lamulo lopanga Rust code mu WebAssembly bytecode pogwiritsa ntchito mawonekedwe a WASI pogwiritsira ntchito WebAssembly kunja kwa msakatuli;
  • Wat ΠΈ wasmparser - magawo ofotokozera (WAT, WAST) ndi zoyimira za binary za WebAssembly bytecode.

Kubwereza, WebAssembly ndi yofanana ndi Asm.js, koma chosiyana chifukwa ndi mtundu wa binary womwe sunamangidwe ku JavaScript ndipo umalola ma code otsika apakati omwe amapangidwa kuchokera kuzilankhulo zosiyanasiyana zamapulogalamu kuti achitidwe mumsakatuli. WebAssembly sichifuna wotolera zinyalala chifukwa imagwiritsa ntchito kasamalidwe koyenera kukumbukira. Pogwiritsa ntchito JIT ya WebAssembly, mutha kukwaniritsa magwiridwe antchito pafupi ndi ma code anu. Zina mwazolinga zazikulu za WebAssembly ndikuwonetsetsa kusuntha, machitidwe odziwikiratu komanso ma code ofanana pamapulatifomu osiyanasiyana.

Source: opennet.ru

Kuwonjezera ndemanga