Mozilla, Fastly, Intel û Red Hat WebAssembly wekî platformek ji bo karanîna gerdûnî pêşve dikin

Mozilla, Fastly, Intel û Red Hat yekbû hewildanên wê yên di pêşvebirina teknolojiyên ku ji WebAssembly re dibe alîkar ku WebAssembly bibe platformek gerdûnî ya ji bo pêkanîna koda ewledar li her binesaziyek, pergala xebitandinê, an cîhazê. Civatek ji bo pêşkeftina hevbeş a dema xebitandinê û berhevkeran hate damezrandin ku destûrê dide karanîna WebAssembly ne tenê di gerokên malperê de Hevbendiya Bytecode.

Ji bo afirandina bernameyên gerguhêz ên ku di formata WebAssembly de têne radest kirin ku dikarin li derveyî gerokê bêne darve kirin, em pêşniyar dikin ku API-yê bikar bînin. WASI (Interface Pergala WebAssembly), ku ji bo danûstendina rasterast bi pergala xebitandinê re navgînên nermalavê peyda dike (POSIX API ji bo xebata bi pelan, soketan, hwd.). Taybetmendiyek cihêreng a modela darvekirinê ya serîlêdanên ku WASI bikar tînin ev e ku ew di hawîrdorek sandboxê de ji bo veqetandina ji pergala sereke dimeşin û mekanîzmayek ewlehiyê ya li ser bingeha rêveberiya kapasîteyê ji bo çalakiyên bi her yek ji çavkaniyan (pel, peldank, soket, bangên pergalê) bikar tînin. , û hwd.) Pêdivî ye ku destûrnameyên guncan werin dayîn (tenê gihîştina fonksiyona diyarkirî tê peyda kirin).

Yek ji armancên Hevalbendiya çêkirî çareseriyek e ji bo pirsgirêka belavkirina serîlêdanên modular ên nûjen ên bi hejmareke mezin ve girêdayî ye. Di serîlêdanên weha de, her girêdayîbûn dikare bibe çavkaniyek potansiyel a qelsî an êrîşan. Kontrolkirina pêwendiyek dihêle hûn hemî serîlêdanên ku bi wê ve girêdayî ne kontrol bikin. Baweriya bi serîlêdanê bixweber pêbaweriya bi hemî pêwendiyan re vedibêje, lê girêdayî bi gelemperî ji hêla tîmên sêyemîn ên ku çalakiyên wan nayên kontrol kirin têne pêşve xistin û domandin. Endamên Hevbendiya Bytecode armanc dikin ku ji bo pêkanîna ewledar a serîlêdanên WebAssembly ku bi xwezayî ne pêbawer in, çareseriyek tevhev peyda bikin.

Ji bo parastinê, tê pêşniyar kirin ku têgîna nanopêvajoyan were bikar anîn, ku tê de her modulek girêdayîbûnê di modulek WebAssembly-ya veqetandî ya veqetandî de tê veqetandin, ku hêzên wê tenê bi vê modulê re têkildar têne danîn (mînak, pirtûkxaneyek ji bo hilanîna rêzan dê ne bikaribe soketek torê an pelek veke). Berevajî veqetandina pêvajoyê, rêvebirên WebAssembly sivik in û hema bêje ti çavkaniyên din hewce nake - danûstendina di navbera hilkêşan de ji bangkirina fonksiyonên asayî ne pir hêdîtir e. Veqetandin ne tenê di asta modulên kesane de, lê di heman demê de di asta komên modulan de jî dikare were kirin ku, mînakî, hewce ne ku bi deverên bîranîna hevpar re bixebitin.

Hêzên daxwazkirî hem di asta pêwendiyan de bi xwe ve têne destnîşankirin û hem jî ji hêla modulên dêûbav ve ji girêdanên li ser zincîrê re têne şandin (çavkaniyên di WASI de bi celebek taybetmendiya pelê - kapasîteyê ve girêdayî ne). Mînakî, modulek dikare jêhatîbûna gihîştina pelrêçek taybetî û bangên pergalê were veguheztin, û heke binesaziya pêşkeftina modulê têk bibe an xisarek were nas kirin, di dema êrîşê de, gihîştin dê tenê ji van çavkaniyan re sînordar be. Daxuyaniyên çavkaniyê ji hêla afirînerên modulê ve dibe ku nîşanek çalakiya gumanbar be, wek mînak dema ku modulek hilberandina nivîsê destûr bixwaze ku pêwendiyek torê veke. Destûrên ku di destpêkê de hatine danîn têne kontrol kirin û ger ew biguhezin, heya ku îmzeya modula herêmî neyê nûve kirin, barkirina girêdayîbûnê tê red kirin.

Ji bo pêşveçûna hevbeş di bin baskê Hevbendiya Bytecode de wergerandin gelek bi WebAssembly ve girêdayî ne projeyên, berê ji hêla pargîdaniyên damezrîner ên hevalbendê ve ji hev cuda hatî pêşve xistin:

  • Wextê wextê - Dema xebitandinê ji bo xebitandina sepanên WebAssembly bi pêvekên WASI wekî serîlêdanên xweser ên birêkûpêk. Ew hem destpêkirina WebAssembly bytecode bi karanîna karûbarek rêzika fermanê ya taybetî hem jî girêdana pelên darvekirî yên amade piştgirî dike (wasmtime wekî pirtûkxaneyek di serîlêdanê de hatî çêkirin). Wasmtime xwedan avahiyek modular a maqûl e ku dihêle hûn dema xebitandinê ji bo serîlêdanên cihêreng mezin bikin, mînakî, hûn dikarin guhertoyek jêkirî ji bo cîhazên bi çavkaniyên tixûbdar biafirînin;
  • Lucet - Berhevkar û dema xebitandinê ji bo pêkanîna bernameyan di formata WebAssembly de. Distinctive taybetî Lucet li şûna JIT-ê di koda makîneyê de ku ji bo darvekirina rasterast maqûl e, berhevoka pêşbirkê ya bêkêmasî (AOT, pêş-dem) bikar tîne. Proje ji hêla Fastly ve hatî pêşve xistin û xweşbîn e ku çavkaniyên hindiktirîn bikar bîne û mînakên nû pir zû dest pê bike (Fastly Lucet di motorek hesabkeriya ewr de bikar tîne ku WebAssembly-ê ji bo rêvebirên ku li ser her daxwazê ​​hatî destpêkirin bikar tîne). Wekî beşek ji projeya hevbeş, berhevkarê Lucet tê plan kirin ku were veguheztin da ku Wasmtime wekî bingehek bikar bîne;
  • WAM (WebAssembly Micro Runtime) ji bo pêkanîna WebAssembly demek din e, ku bi eslê xwe ji hêla Intel ve ji bo karanîna di cîhazên Înternetê yên Tiştan de hatî pêşve xistin. WAMR ji bo xerckirina çavkaniya hindiktirîn xweşbîn e û dikare li ser cîhazên bi mîqdarek piçûk RAM-ê were bikar anîn. Proje wergerek û makîneyek virtual ji bo darvekirina WebAssembly bytecode, API (binkomek Libc) û amûrên ji bo rêveberiya serîlêdana dînamîkî vedihewîne;
  • crane lift - jeneratorek kodê ku nûneriyek navîn a serbixwe ji mîmariya hardware vediguhezîne koda makîneya îcrakar a ku ji bo platformên hardware yên taybetî xweşbînkirî ye. Cranelift paralelkirina berhevkirina fonksiyonê ji bo hilberîna encamên pir bilez piştgirî dike, ku dihêle ku ew ji bo afirandina berhevkarên JIT-ê were bikar anîn (JIT-based Cranelift di makîneya virtual ya Wasmtime de tê bikar anîn);
  • WASI hevpar - Ji bo organîzekirina danûstendinê bi pergala xebitandinê re pêkanîna cûda ya API-ya WASI (WebAssembly System Interface);
  • cargo-wasi - modulek ji bo rêvebirê pakêtê Cargo ku fermanek ji bo berhevkirina koda Rust li WebAssembly bytecode bi karanîna navbeynkariya WASI ji bo karanîna WebAssembly li derveyî gerokê bicîh tîne;
  • wat и wasmparser - parserên ji bo parkirina nivîsê (WAT, WAST) û temsîlên binary yên WebAssembly bytecode.

Ji nû ve, WebAssembly pir mîna Asm.js e, lê cuda ye di wê de ku ew formatek binar e ku bi JavaScript-ê ve ne girêdayî ye û dihêle ku koda navîn a asta nizm a ku ji zimanên cûrbecûr bernamesaziyê hatî berhev kirin di gerokê de were darve kirin. WebAssembly hewceyê berhevkarek çopê nake ji ber ku ew rêveberiya bîranîna eşkere bikar tîne. Bi karanîna JIT-ê ji bo WebAssembly, hûn dikarin astên performansê yên nêzî koda xwemalî bi dest bixin. Di nav mebestên sereke yên WebAssembly de ew e ku li ser platformên cihêreng veguheztin, behremendiya pêşbînîkirî û pêkanîna kodê ya wekhev peyda bike.

Source: opennet.ru

Add a comment