Ka whakawhanakehia e Cloudflare, Mozilla me Facebook te BinaryAST hei tere ake i te utaina o JavaScript

Nga miihini mai i Cloudflare, Mozilla, Facebook me Bloomberg whakaaro whakatakotoranga hou ruaAST kia tere ake te tuku me te tukatuka o te waehere JavaScript i te whakatuwheratanga o nga waahi i roto i te tirotiro. Ka nukuhia e BinaryAST te wahanga poroporoaki ki te taha tūmau me te whakarato i tetahi rakau wetereo waitara kua oti te hanga (AST). I te whiwhinga i te BinaryAST, ka taea e te kaitirotiro te haere tonu ki te waahanga whakahiato, ma te kore e tarai i te waehere puna JavaScript.

Mo te whakamatau kua rite whakatinanatanga tohutoro i tukuna i raro i te raihana MIT. Ka whakamahia nga waahanga Node.js mo te poroporoaki, ka tuhia te waehere mo te arotautanga me te whakatipuranga AST ki Rust. Tautoko taha tirotiro
Kei te waatea kē a BinaryAST hanga po Firefox. Ka taea te whakamahi i te encoder i BinaryAST i te taumata taputapu pae mutunga me nga tuhinga whakauru o nga waahi o waho kei te taha o te takawaenga, whatunga tuku ihirangi ranei. I tenei wa, kua timata te tukanga o te paerewa o BinaryAST na te roopu mahi ECMA TC39, ka mutu ka noho tahi te whakatakotoranga me nga tikanga taapiri ihirangi o naianei, penei i te gzip me te brotli.

Ka whakawhanakehia e Cloudflare, Mozilla me Facebook te BinaryAST hei tere ake i te utaina o JavaScript

Ka whakawhanakehia e Cloudflare, Mozilla me Facebook te BinaryAST hei tere ake i te utaina o JavaScript

I te wa e tukatuka ana i te JavaScript, he nui te wa e pau ana i roto i te waahanga uta me te waahi o te waehere. Ki te whakaaro ko te nui o te JavaScript kua tangohia i runga i nga waahi rongonui maha e tata ana ki te 10 MB (hei tauira, mo LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), ko te tukatuka tuatahi o JavaScript ka whakaatu i te roa nui. Ko te wahanga parsing i te taha o te kaitirotiro ka puhoi hoki na te kore e kaha ki te hanga katoa i te AST i runga i te rere i te wa e utaina ana te waehere (me tatari te kaitirotiro mo nga poraka waehere kia oti te uta, penei i te mutunga o nga mahi, kia whiwhi kei te ngaro nga korero hei whakamaarama i nga huānga o naianei).

E ngana ana ratou ki te whakaoti i tetahi waahanga o te raru ma te tohatoha i te waehere i roto i te ahua iti me te kopiri, me te keteroki i te bytecode hangaia e te kaitirotiro. I runga i nga waahi hou, he maha nga wa ka whakahouhia te waehere, no reira ko te keteroki anake te whakaoti i te raru. He otinga pea a WebAssembly, engari me tino patopato i roto i te waehere, kaore i te pai mo te tere ake i te tukatuka o te waehere JavaScript.

Ko tetahi atu whiringa ko te tuku bytecode kua oti te hanga hei utu mo nga tuhinga JavaScript, engari kei te whakahee nga kaiwhakawhanake miihini tirotiro na te mea he uaua ki te manatoko te bytecode-tuatoru, ko tana tukatuka tika ka arahi ki te whakarōpūtanga Tukutuku, ka ara ake etahi atu tupono haumarutanga, me te whanaketanga o ka hiahiatia he whakatakotoranga bytecode.

Ko te BinaryAST ka taea e koe te whakauru ki to tauira whanaketanga waehere me to tauira tuku me te kore e hanga i te bytecode hou, te whakarereke ranei i te reo JavaScript. Ko te rahi o nga raraunga i roto i te whakatakotoranga BinaryAST he rite ki te waehere JavaScript iti kua whakakopekehia, a ko te tere o te tukatuka ma te whakakore i te waahanga panui tuhinga ka tino piki ake. I tua atu, ka taea e te whakatakotoranga te whakahiato ki te bytecode i te mea ka utaina a BinaryAST, me te kore e tatari kia oti nga raraunga katoa. I tua atu, ko te panui i te taha o te tūmau ka taea e koe te whakakore i nga mahi kaore i whakamahia me te waehere kore mai i te tohu BinaryAST kua whakahokia mai, na, i te wa e paopao ana ki te taha tirotiro, ka pau te wa e rua ki te tarai me te tuku i nga waka koretake.

Ko tetahi ahuatanga o BinaryAST ko te kaha ki te whakahoki i te JavaScript ka taea te panui kaore i te rite ki te putanga taketake, engari he rite tonu te ahua me te whakauru i nga ingoa o nga taurangi me nga mahi (Ka tiakina e BinaryAST nga ingoa, engari kaore e tiakina nga korero mo nga tuunga i roto i te waehere, whakatakotoranga me nga korero). Ko tetahi atu taha o te moni ko te putanga o nga vectors whakaeke hou, engari e ai ki nga kaihanga, he iti ake, he kaha ake te whakahaere i te wa e whakamahi ana i nga waahanga rereke, penei i te tohatoha bytecode.

Ko nga whakamatautau o te waehere facebook.com i whakaatu ko te poroporo JavaScript ka pau te 10-15% o nga rauemi CPU me te porotiti ka nui ake te wa atu i te whakaputa bytecode me te whakangao waehere tuatahi mo JIT. I roto i te miihini SpiderMonkey, ko te wa ki te hanga katoa i te AST e 500-800 ms, me te whakamahi i te BinaryAST kua whakahekehia tenei ahua e 70-90%.
I te nuinga o te waa, mo te nuinga o nga paahitanga tukutuku, i te wa e whakamahi ana i te BinaryAST, ka whakahekehia te wa porotiti JavaScript e 3-10% i roto i te aratau kaore he arotautanga me te 90-97% ka whakahohehia te aratau o te wareware i nga mahi kaore i whakamahia.
I te wa e whakahaere ana i te huinga whakamatautau JavaScript 1.2 MB, ma te whakamahi i te BinaryAST i whakaaetia te wa whakaoho kia tere ake i te 338 ki te 314 ms i runga i te punaha papamahi (Intel i7) me te 2019 ki te 1455 ms i runga i te taputapu pūkoro (HTC One M8).

Source: opennet.ru

Tāpiri i te kōrero