Cloudflare, Mozilla iyo Facebook waxay horumariyaan BinaryAST si ay u dedejiyaan rarka JavaScript

Injineerada Cloudflare, Mozilla, Facebook iyo Bloomberg la bixiyo qaab cusub binaryAST si loo dedejiyo gaarsiinta iyo habaynta koodhka JavaScript marka la furayo goobaha browserka. BinaryAST waxay u wareejisaa marxaladda kala shaandheynta dhinaca server-ka waxayna siisaa geed syntax oo hore loo soo saaray (AST). Marka la helo BinaryAST, browserku wuxuu isla markiiba u gudbi karaa heerka isku-dubbaridka, isaga oo ka gudbaya falanqaynta koodhka isha JavaScript.

Imtixaan diyaarisay hirgelinta tixraaca oo lagu bixiyo shatiga MIT. Qaybaha Node.js waxa loo isticmaalaa falanqaynta, iyo koodhka tayaynta iyo jiilka AST waxa lagu qoray Rust. Taageerada dhinaca browserka
BinaryAST waa laga helay kulanka habeenimo Firefox. Codeeyaha ku jira BinaryAST waxaa loo isticmaali karaa labadaba heerka ugu dambeeya ee qalabaynta goobta iyo baakadaha qoraallada goobaha dibadda ee dhinaca wakiilka ama shabakadda gudbinta nuxurka. Waqtigan xaadirka ah, habka jaangooyooyinka BinaryAST ee kooxda shaqada ayaa mar hore bilowday ECMA TC39, ka dib qaabku wuxuu awood u yeelan doonaa inuu la noolaado hababka hadda jira ee cadaadiska, sida gzip iyo brotli.

Cloudflare, Mozilla iyo Facebook waxay horumariyaan BinaryAST si ay u dedejiyaan rarka JavaScript

Cloudflare, Mozilla iyo Facebook waxay horumariyaan BinaryAST si ay u dedejiyaan rarka JavaScript

Marka la farsameynayo JavaScript, wakhti aad u badan ayaa lagu kharash gareeyaa soo dejinta iyo kala saarista koodka. Iyadoo la tixgelinayo in mugga JavaScript ee lagala soo degay goobo badan oo caan ah uu ku dhow yahay 10 MB (tusaale ahaan, LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), habka bilowga ah ee JavaScript wuxuu soo bandhigayaa dib u dhac weyn. Marxaladda falanqaynta ee dhinaca biraawsarka ayaa sidoo kale hoos loo dhigaa sababtoo ah awood la'aanta in si buuxda loo dhiso AST-da duullimaadyada maaddaama koodka la rakibay ( browserku waa inuu sugo koodka koodka si uu u dhamaystiro loading, sida dhammaadka hawlaha, si loo helo xogta maqan si loo kala saaro waxyaabaha hadda jira).

Waxay isku dayayaan inay qayb ahaan xaliyaan dhibaatada iyagoo u qaybinaya koodka qaab la yareeyey oo la cufan, iyo sidoo kale inay kaydiyaan bytecode-ka uu sameeyay browserka. Goobaha casriga ah, koodka marar badan ayaa la cusboonaysiiyaa, marka kaydinta qayb ahaan ayaa xallisa dhibaatada. WebAssembly waxay noqon kartaa xal, laakiin waxay u baahan tahay ku qorida koodka oo si cad uguma habboona dedejinta habaynta koodka JavaScript ee jira.

Ikhtiyaar kale ayaa ah in la keeno bytecode diyaarsan oo la diyaariyay halkii laga heli lahaa qoraallada JavaScript, laakiin kuwa soo saarayaasha mashiinka browserka ayaa ka soo horjeeda sababta oo ah bytecode-ka dhinac saddexaad way adagtahay in la xaqiijiyo, habaynteeda tooska ah waxay u horseedi kartaa shaandhaynta shabakadda, khataro amni oo dheeri ah ayaa soo baxa, iyo horumarinta qaab bytecode caalami ah ayaa loo baahan yahay.

BinaryAST wuxuu kuu ogolaanayaa inaad ku haboonaato qaabka koodhkaaga hadda jira adiga oo aan abuurin bytecode cusub ama bedelin luqadda JavaScript. Cabbirka xogta ee qaabka BinaryAST waxay la mid tahay koodhka JavaScript ee la yareeyey ee la cufan, iyo xawaaraha habaynta iyadoo meesha laga saarayo wejiga kala saaridda qoraalka isha ayaa si muuqata u kordheysa. Intaa waxaa dheer, qaabku wuxuu u ogolaanayaa in la isku daro bytecode sida BinaryAST la raray, iyada oo aan la sugin dhammaan xogta si loo dhamaystiro. Intaa waxaa dheer, falanqaynta dhinaca server-ka waxay kuu ogolaaneysaa inaad ka saarto shaqooyinka aan la isticmaalin iyo koodka aan loo baahnayn ee ka mid ah matalaadda BinaryAST ee soo laabtay, taas oo, marka la eego dhinaca browserka, waxay lumisaa wakhti labadaba labadaba iyo gudbinta gaadiidka aan loo baahnayn.

Muuqaalka BinaryAST sidoo kale waa awooda dib u soo celinta JavaScript la akhrin karo oo aan la mid ahayn nuqulkii asalka ahaa, laakiin si macno ahaan u dhigma oo ay ku jiraan isla magacyo doorsoomayaal iyo shaqooyin (BinaryAST waxay kaydisaa magacyada, laakiin ma kaydiso macluumaadka ku saabsan jagooyinka code, qaabaynta iyo faallooyinka). Dhinaca kale ee qadaadiicdu waa soo ifbaxa vectors cusub oo weerar ah, laakiin sida laga soo xigtay horumariyayaashu, aad ayay uga yar yihiin oo waa la koontarooli karaa marka loo eego marka la isticmaalayo beddelka, sida qaybinta bytecode.

Tijaabooyin lagu sameeyay koodhka facebook.com ayaa muujiyay in kala saarista JavaScript ay cunayso 10-15% ee agabka CPU iyo falanqaynta ay qaadanayso wakhti ka badan soo saarista bytecode iyo jiilka koodhka bilowga ah ee JIT. Matoorka SpiderMonkey, wakhtiga si buuxda loo dhiso AST waxay qaadataa 500-800 ms, isticmaalka BinaryAST ayaa hoos u dhigtay tiradan 70-90%.
Guud ahaan, inta badan rashka webka, marka la isticmaalayo BinaryAST, wakhtiga falanqaynta JavaScript waxaa la dhimay 3-10% qaabka iyada oo aan la hagaajin iyo 90-97% marka habka iska indhatirka hawlaha aan la isticmaalin la kartiyeeyo.
Markaad wado 1.2 MB ee tijaabada JavaScript, adoo isticmaalaya BinaryAST waxay u ogolaatay wakhtiga bilawga inuu ka dedejiyo 338 ilaa 314 ms nidaamka miiska (Intel i7) iyo min 2019 ilaa 1455 ms aaladda mobaylka (HTC One M8).

Source: opennet.ru

Add a comment