Forbraíonn Cloudflare, Mozilla agus Facebook BinaryAST chun luchtú JavaScript a bhrostú

Innealtóirí ó Cloudflare, Mozilla, Facebook agus Bloomberg a thairiscint formáid nua Dénártha chun seachadadh agus próiseáil cód JavaScript a bhrostú nuair a osclaítear suíomhanna i mbrabhsálaí. Bogann BinaryAST an phas parsála go taobh an fhreastalaí agus soláthraíonn sé crann comhréire teibí ginte cheana (AST). Tar éis dó BinaryAST a fháil, is féidir leis an mbrabhsálaí dul ar aghaidh láithreach chuig an gcéim tiomsaithe, gan pharsáil a dhéanamh ar chód foinse JavaScript.

Le haghaidh tástála ullmhaithe cur chun feidhme tagartha arna sholáthar faoi cheadúnas MIT. Úsáidtear comhpháirteanna Node.js le haghaidh parsála, agus tá an cód le haghaidh uasmhéadú agus giniúint AST scríofa i Rust. Tacaíocht Brabhsálaí-taobh
Tá BinaryAST ar fáil cheana féin i tógálacha oíche Firefox. Is féidir an t-ionchódóir in BinaryAST a úsáid ag leibhéal uirlisí an láithreáin dheiridh agus chun scripteanna a phacáistiú ar shuíomhanna seachtracha ar thaobh seachfhreastalaí nó líonra seachadta inneachair. Faoi láthair, tá tús curtha cheana féin le próiseas caighdeánaithe BinaryAST ag an ngrúpa oibre ECMA TC39, ina dhiaidh sin beidh an fhormáid in ann taobh le modhanna comhbhrú ábhar atá ann cheana féin, mar shampla gzip agus brotli.

Forbraíonn Cloudflare, Mozilla agus Facebook BinaryAST chun luchtú JavaScript a bhrostú

Forbraíonn Cloudflare, Mozilla agus Facebook BinaryAST chun luchtú JavaScript a bhrostú

Agus JavaScript á phróiseáil, caitear cuid mhór ama i gcéim luchtaithe agus parsála an chóid. Ós rud é go bhfuil líon na n-íoslódálacha JavaScript ar go leor suíomhanna tóir gar do 10 MB (mar shampla, le haghaidh LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), cuireann próiseáil tosaigh JavaScript isteach moill shuntasach. Moillítear an chéim parsála ar thaobh an bhrabhsálaí freisin mar gheall ar an neamhábaltacht an AST a thógáil go hiomlán ar an eitilt mar go bhfuil an cód luchtaithe (caithfidh an brabhsálaí fanacht le bloic cód chun an luchtú a chomhlánú, mar shampla deireadh feidhmeanna, a fháil an fhaisnéis atá in easnamh chun na heilimintí reatha a pharsáil).

Tá siad ag iarraidh an fhadhb a réiteach go páirteach tríd an gcód a dháileadh i bhfoirm íoslaghdaithe agus comhbhrúite, chomh maith leis an seachchód a ghineann an brabhsálaí a thaisceadh. Ar láithreáin nua-aimseartha, déantar an cód a nuashonrú go minic, agus mar sin ní réitíonn taisceadh an fhadhb ach go páirteach. D’fhéadfadh gur réiteach é WebAssembly, ach teastaíonn clóscríobh follasach sa chód agus níl sé oiriúnach go maith chun próiseáil an chóid JavaScript atá ann cheana a bhrostú.

Rogha eile is ea bytecode tiomsaithe réamhdhéanta a sheachadadh in ionad scripteanna JavaScript, ach tá forbróirí inneall brabhsálaí ina choinne toisc go bhfuil sé deacair bytecode tríú páirtí a fhíorú, go bhféadfadh srathú Gréasáin a bheith mar thoradh ar a phróiseáil dhíreach, eascraíonn rioscaí slándála breise, agus forbairt na tá formáid uilíoch bytecode ag teastáil.

Ligeann BinaryAST duit luí isteach ar do mhúnla forbartha agus seachadta cód reatha gan bytecode nua a chruthú nó teanga JavaScript a athrú. Tá méid na sonraí i bhformáid BinaryAST inchomparáide le cód comhbhrúite mionaithe JavaScript, agus méadaíonn an luas próiseála trí dheireadh a chur le céim parsála an téacs foinseach go suntasach. Ina theannta sin, ceadaíonn an fhormáid tiomsú go bytecode mar BinaryAST luchtaithe, gan fanacht ar na sonraí go léir a chur i gcrích. Ina theannta sin, ceadaíonn parsáil ar thaobh an fhreastalaí duit feidhmeanna neamhúsáidte agus cód neamhriachtanach a eisiamh ón ionadaíocht BinaryAST ar ais, rud a chuireann amú am parsáil agus tarchur tráchta neamhriachtanach nuair a bhíonn tú ag parsáil ar thaobh an bhrabhsálaí.

Gné de BinaryAST freisin is ea an cumas JavaScript inléite a athbhunú nach bhfuil díreach mar an gcéanna leis an mbunleagan, ach atá coibhéiseach go semantach agus a chuimsíonn ainmneacha na n-athróg agus na bhfeidhmeanna céanna (sábhálann BinaryAST ainmneacha, ach ní shábhálann sé faisnéis faoi phoist sa cód, formáidiú agus tuairimí). Is é an taobh eile den bhoinn ná teacht chun cinn veicteoirí ionsaí nua, ach de réir na bhforbróirí, tá siad i bhfad níos lú agus níos rialaithe ná nuair a bhíonn roghanna eile á n-úsáid, mar shampla dáileadh bytecode.

Léirigh tástálacha ar an gcód facebook.com go n-ídíonn parsáil JavaScript 10-15% d’acmhainní LAP agus go dtógann parsáil níos mó ama ná mar a ghintear bytecode agus giniúint cód tosaigh do JIT. San inneall SpiderMonkey, tógann an t-am chun AST a thógáil go hiomlán 500-800 ms, agus laghdaigh úsáid BinaryAST an figiúr seo 70-90%.
Go ginearálta, don chuid is mó de thinte ealaíne gréasáin, nuair a bhíonn BinaryAST á úsáid, laghdaítear am parsála JavaScript 3-10% sa mhodh gan leas iomlán a bhaint agus 90-97% nuair a chumasaítear an modh neamhaird a dhéanamh ar fheidhmeanna neamhúsáidte.
Nuair a bhí sraith tástála JavaScript 1.2 MB á rith, cheadaigh úsáid BinaryAST an t-am tosaithe chun dlús a chur ó 338 go 314 ms ar chóras deisce (Intel i7) agus ó 2019 go 1455 ms ar ghléas soghluaiste (HTC One M8).

Foinse: oscailtenet.ru

Add a comment