Mozilla, Fastly, Intel na Red Hat hutangaza WebAssembly kama jukwaa la matumizi ya ulimwengu wote

Mozilla, Fastly, Intel, na Red Hat umoja Tumejitolea kutengeneza teknolojia zitakazosaidia kubadilisha WebAssembly kuwa jukwaa la ulimwengu wote la utekelezaji salama wa msimbo katika miundombinu yote, mifumo ya uendeshaji, na vifaa. Jumuiya imeundwa ili kuunda kwa pamoja nyakati za uendeshaji na vikusanyaji ambavyo vitawezesha WebAssembly kutumika katika zaidi ya vivinjari vya wavuti tu. Muungano wa Bytecode.

Ili kuunda programu zinazoweza kubebeka zinazotolewa katika umbizo la WebAssembly ambazo zinaweza kutekelezwa nje ya kivinjari, inapendekezwa kutumia API WASI (Kiolesura cha Mfumo wa WebAssembly), ambacho hutoa violesura vya programu kwa ajili ya mwingiliano wa moja kwa moja na mfumo endeshi (API ya POSIX kwa ajili ya kufanya kazi na faili, soketi, n.k.). Kipengele tofauti cha mfumo wa utekelezaji wa WASI ni kwamba programu huendeshwa katika mazingira ya sandbox kwa ajili ya kutengwa na mfumo mkuu na hutumia utaratibu wa usalama kulingana na usimamizi wa uwezo—ili kufikia kila rasilimali (faili, saraka, soketi, simu za mfumo, n.k.), programu lazima ipewe ruhusa zinazofaa (ufikiaji wa utendaji uliotangazwa pekee ndio unaotolewa).

Moja ya malengo Madhumuni ya muungano ni kushughulikia tatizo la kusambaza programu za kisasa za moduli zenye utegemezi mwingi. Katika programu kama hizo, kila utegemezi unaweza kuwa chanzo kinachowezekana cha udhaifu au mashambulizi. Kupata udhibiti wa utegemezi huruhusu udhibiti wa programu zote zinazohusiana nayo. Kuamini programu moja kwa moja kunamaanisha uaminifu katika utegemezi wake wote, lakini utegemezi huu mara nyingi hutengenezwa na kudumishwa na timu za wahusika wengine ambazo shughuli zao haziwezi kudhibitiwa. Wanachama wa Bytecode Alliance wanakusudia kuunda suluhisho kamili kwa ajili ya utekelezaji salama wa programu za WebAssembly, ambazo kwa asili haziaminiki.

Ili kulinda dhidi ya hili, tunapendekeza kutumia dhana ya michakato midogo, ambapo kila moduli ya utegemezi imegawanywa katika moduli tofauti, iliyotengwa ya WebAssembly, ambayo ruhusa zake zinafafanuliwa tu kwa moduli hiyo (kwa mfano, maktaba ya usindikaji wa kamba haiwezi kufungua soketi ya mtandao au faili). Tofauti na utenganishaji wa michakato, vidhibiti vya WebAssembly ni vyepesi na havihitaji rasilimali za ziada—mwingiliano kati ya vidhibiti si polepole sana kuliko kuita vitendakazi vya kawaida. Utenganishaji unaweza kutekelezwa si tu katika kiwango cha moduli za kibinafsi, lakini pia katika kiwango cha vikundi vya moduli ambavyo, kwa mfano, vinahitaji kufanya kazi na maeneo ya kumbukumbu yaliyoshirikiwa.

Ruhusa zilizoombwa zinaweza kufafanuliwa katika kiwango cha utegemezi na kukabidhiwa kwa utegemezi wa juu na moduli mama (rasilimali katika WASI zinahusishwa na aina maalum ya maelezo ya faili, uwezo). Kwa mfano, moduli inaweza kukabidhiwa uwezo wa kufikia saraka maalum na kupiga simu za mfumo. Ikiwa miundombinu ya uundaji wa moduli imeathiriwa au udhaifu umegunduliwa, ufikiaji utapunguzwa kwa rasilimali hizi wakati wa shambulio. Matamko ya rasilimali na waundaji wa moduli yanaweza kuwa kiashiria cha shughuli ya kutiliwa shaka, kwa mfano, wakati moduli ya usindikaji wa maandishi inaomba ruhusa ya kufungua muunganisho wa mtandao. Ruhusa zilizopewa hapo awali hukaguliwa, na ikiwa zitabadilika, utegemezi hukataliwa hadi sahihi ya ndani ya moduli isasishwe.

Kwa ajili ya maendeleo ya pamoja chini ya mrengo wa Muungano wa Bytecode kutafsiriwa WebAssembly kadhaa zinazohusiana miradi, ambayo hapo awali ilitengenezwa kando na makampuni ya waanzilishi wa muungano:

  • Wakati wa Wasm — muda wa utekelezaji wa kutekeleza programu za WebAssembly zenye viendelezi vya WASI kama programu za kawaida zinazojitegemea. Zote mbili zinazoendesha msimbo wa byte wa WebAssembly kwa kutumia huduma maalum ya mstari wa amri na kujenga faili zinazoweza kutekelezwa zilizotengenezwa tayari (wasmtime imepachikwa kwenye programu kama maktaba) zinaungwa mkono. Wasmtime ina muundo rahisi na wa moduli unaoruhusu muda wa utekelezaji kupimwa kwa programu mbalimbali; kwa mfano, toleo lililopunguzwa linaweza kuundwa kwa vifaa vyenye rasilimali chache.
  • Lucet — mkusanyiko na muda wa utekelezaji wa programu katika umbizo la WebAssembly. Tofauti kipengele Lucet ni utekelezaji unaotegemea JIT wa mkusanyiko kamili wa kabla ya wakati (AOT) katika msimbo asilia wa mashine unaofaa kwa utekelezaji wa moja kwa moja. Mradi huo ulitengenezwa na Fastly na umeboreshwa kwa matumizi madogo ya rasilimali na uanzishaji wa haraka sana wa mifano mipya (Fastly hutumia Lucet katika injini yake ya kompyuta ya wingu, ambayo hutumia WebAssembly kwa washughulikiaji wa kila ombi). Kama sehemu ya mradi wa ushirikiano, mkusanyiko wa Lucet umepangwa kuhamishwa ili kutumia Wasmtime kama msingi;
  • WAMR (WebAssembly Micro Runtime) ni muda mwingine wa uendeshaji wa WebAssembly, uliotengenezwa awali na Intel kwa ajili ya matumizi katika vifaa vya IoT. WAMR imeboreshwa kwa matumizi madogo ya rasilimali na inaweza kutumika kwenye vifaa vyenye RAM ndogo. Mradi huu unajumuisha mkalimani na mashine pepe ya kutekeleza msimbo wa byte wa WebAssembly, API (seti ndogo ya Libc), na zana za usimamizi wa programu unaobadilika.
  • Cranelift — jenereta ya msimbo ambayo hutafsiri uwakilishi wa kati usiotegemea vifaa kuwa msimbo wa mashine unaoweza kutekelezwa ulioboreshwa kwa majukwaa maalum ya vifaa. Cranelift inasaidia mkusanyiko wa vitendakazi sambamba kwa ajili ya uzalishaji wa matokeo ya haraka sana, na kuifanya iweze kufaa kwa kuunda vikusanyaji vya wakati unaofaa (JIT) (JIT inayotegemea Cranelift inatumika katika mashine pepe ya Wasmtime);
  • WASI ya kawaida — utekelezaji tofauti wa API ya WASI (WebAssembly System Interface) kwa ajili ya kupanga mwingiliano na mfumo endeshi;
  • mizigo-wasi — moduli ya meneja wa kifurushi cha Cargo inayotekeleza amri ya kukusanya msimbo wa Rust katika msimbo wa byte wa WebAssembly kwa kutumia kiolesura cha WASI kwa kutumia WebAssembly nje ya kivinjari;
  • wat и wasmparser — vichanganuzi vya kuchanganua maandishi (WAT, WAST) na uwakilishi wa binary wa msimbo wa byte wa WebAssembly.

Kama ukumbusho, WebAssembly inafanana sana na Asm.js, lakini mbalimbali WebAssembly ni umbizo la binary lisilotegemea JavaScript, linaloruhusu msimbo wa kati wa kiwango cha chini uliokusanywa kutoka lugha mbalimbali za programu kutekelezwa katika kivinjari. WebAssembly huondoa hitaji la ukusanyaji wa takataka, kwani hutumia usimamizi dhahiri wa kumbukumbu. Kwa kutumia injini ya Just-in-Time (JIT), WebAssembly inaweza kufikia viwango vya utendaji karibu na msimbo asilia. Miongoni mwa malengo makuu ya WebAssembly ni urahisi wa kubebeka, tabia inayoweza kutabirika, na utekelezaji thabiti wa msimbo katika mifumo tofauti.

Chanzo: opennet.ru

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster