Cloudflare, Mozilla ma Facebook e atiaʻe le BinaryAST e faʻavavevave ai le utaina o le JavaScript

Inisinia mai Cloudflare, Mozilla, Facebook ma Bloomberg ofoina faatulagaga fou binaryAST e faatelevave ai le tu'uina atu ma le fa'agaioiga o le code JavaScript pe a tatalaina nofoaga i totonu o se su'esu'ega. BinaryAST fa'agasolo le vaega fa'avasega i le itu o le 'au'aunaga ma tu'uina atu se la'au fa'asologa fa'apitoa (AST). I le mauaina o se BinaryAST, e mafai ona fa'agasolo loa le su'esu'ega i le tulaga tu'ufa'atasia, e ala i le fa'asalaina o le Javascript source code.

Mo suʻega saunia fa'atinoga fa'asino sa tu'uina atu i lalo ole laisene MIT. O vaega o le Node.js o loʻo faʻaaogaina mo le faʻavasegaina, ma o le code mo le faʻaleleia ma le AST generation o loʻo tusia i le Rust. Lagolago itu su'esu'e
BinaryAST ua uma ona maua i totonu fau i po Firefox. O le encoder i le BinaryAST e mafai ona fa'aoga uma i le tulaga pito i luga o meafaigaluega ma mo fa'amaumauga fa'apipi'i o nofoaga i fafo i le itu o se sui po'o feso'ota'iga tu'uina atu mea. I le taimi nei, o le faʻagasologa o le faʻavasegaina o le BinaryAST e le vaega faigaluega ua uma ona amata ECMA TC39, a maeʻa lea o le a mafai ai e le faʻatulagaga ona ola faʻatasi ma metotia faʻapipiʻi o loʻo i ai, e pei o le gzip ma le brotli.

Cloudflare, Mozilla ma Facebook e atiaʻe le BinaryAST e faʻavavevave ai le utaina o le JavaScript

Cloudflare, Mozilla ma Facebook e atiaʻe le BinaryAST e faʻavavevave ai le utaina o le JavaScript

A'o fa'agaioiina le Javascript, e tele le taimi e fa'aalu i le utaina ma le fa'avasegaina o le code. Mafaufau o le tele o le siiina o le JavaScript i luga o le tele o nofoaga lauiloa e latalata ile 10 MB (mo se faʻataʻitaʻiga, mo LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), o le uluai faagasologa o le JavaScript e faʻaalia ai se tuai tele. O le faʻasologa o le vaega i luga o le browser e faʻagesegese foi ona o le le mafai ona fausia atoatoa le AST i luga o le lele aʻo uta le code (e tatau i le browser ona faʻatali mo poloka poloka e faʻamaeʻa ai le utaina, e pei o le faaiuga o galuega, e maua ai. le faʻamatalaga o loʻo misi e faʻavasega ai elemene o loʻo iai nei).

O loʻo latou taumafai e foʻia se vaega o le faʻafitauli e ala i le tufatufaina o le code i se faʻaititia ma faʻapipiʻi fomu, faʻapea foʻi ma le faʻaogaina o le bytecode na gaosia e le browser. I luga o nofoaga faʻaonaponei, o le code e faʻafouina i taimi uma, o le mea lea e naʻo se vaega e foia ai le faʻafitauli. O le WebAssembly e mafai ona avea ma fofo, ae e manaʻomia le taina manino i totonu o le code ma e le fetaui lelei mo le faʻavaveina o le gaioiga o le code JavaScript o iai.

O le isi filifiliga o le tuʻuina atu lea o le bytecode tuʻufaʻatasia ua saunia ae le o faʻamaumauga a le JavaScript, ae o loʻo tetee e le au atinaʻe masini suʻesuʻe ona o le tolu-vaega bytecode e faigata ona faʻamaonia, o lona gaioiga tuusaʻo e mafai ona oʻo atu ai i luga ole laiga i luga ole laiga, faʻalavelave faʻalavelave faʻaopoopo e tulaʻi mai, ma le atinaʻeina o e mana'omia se faatulagaga bytecode lautele.

BinaryAST e fa'atagaina oe e fa'afetaui i lau fa'ata'ita'iga o le fa'atupuina ma le fa'ata'ita'iga o lo'o iai nei e aunoa ma le faia o le bytecode fou po'o le suia o le gagana JavaScript. Ole tele o fa'amaumauga ile BinaryAST fa'atulagaina e fa'atusaina i le fa'apipi'iina o le code JavaScript, ma o le saosaoa o le fa'agaioiga e ala i le fa'ate'aina o le fa'apogai o le fa'avasegaina o tusitusiga e fa'atupula'ia. E le gata i lea, o le faatulagaga e mafai ai ona tuʻufaʻatasia i le bytecode aʻo utaina le BinaryAST, e aunoa ma le faʻatali mo faʻamaumauga uma e faʻamaeʻa. E le gata i lea, o le faʻasalalau i luga o le itu o le server e mafai ai ona e faʻaaogaina galuega e le faʻaaogaina ma le code le manaʻomia mai le toe faafoiina o le BinaryAST, lea, pe a faʻasalalau i luga o le itu suʻesuʻe, e faʻaumatia le taimi e lua e faʻasalalau ma faʻasalalau atu fefaʻatauaiga le talafeagai.

O se vaega o le BinaryAST o le mafai foʻi lea ona toe faʻafoʻisia le JavaScript e mafai ona faitau e le tutusa lelei ma le uluai kopi, ae e tutusa tutusa ma e aofia ai igoa tutusa o fesuiaiga ma galuega (BinaryAST e faʻasaoina igoa, ae le faʻasaoina faʻamatalaga e uiga i tulaga i le code, faʻatulagaina ma faʻamatalaga). O le isi itu o le tupe siliva o le tulaʻi mai lea o ni osofaʻiga fou, ae e tusa ai ma le au atiaʻe, e sili atu ona laʻititi ma sili atu ona faʻatonutonuina nai lo le faʻaaogaina o isi mea, e pei o le tufatufaina o le bytecode.

O suʻega o le facebook.com code na faʻaalia ai o le faʻaogaina o le JavaScript e faʻaaogaina ai le 10-15% o punaʻoa CPU ma faʻasalalau e manaʻomia le tele o le taimi nai lo le faʻatupuina o le bytecode ma le faʻatupuina o tulafono mo le JIT. I le afi SpiderMonkey, o le taimi e fausia atoa ai se AST e manaʻomia le 500-800 ms, ma o le faʻaogaina o le BinaryAST ua faʻaititia ai lenei fuainumera e 70-90%.
I se tulaga lautele, mo le tele o afi i luga ole laiga, pe a faʻaogaina le BinaryAST, faʻaititia le taimi o le JavaScript e 3-10% i le faiga e aunoa ma le faʻaogaina ma le 90-97% pe a mafai le faiga o le le amanaiaina o galuega e le faʻaaogaina.
Pe a faʻatautaia se seti suʻega JavaScript 1.2 MB, faʻaaoga BinaryAST faʻatagaina le taimi amata e faʻavave mai le 338 i le 314 ms i luga o le komepiuta (Intel i7) ma mai le 2019 i le 1455 ms i luga o se masini feaveaʻi (HTC One M8).

puna: opennet.ru

Faaopoopo i ai se faamatalaga