Facebook tuwhera puna Hermes JavaScript engine

Facebook tuwhera puna marama JavaScript pūkaha Merekurai, kua arotauhia mo te whakahaere tono i runga i te angamahi Tauiwi Maori i runga i te turanga Android. Tautoko Hermes hanga-i roto i React Native timata mai i te tukunga 0.60.2 o tenei ra. I hangaia te kaupapa ki te whakaoti rapanga me nga wa whakaoho roa mo nga tono JavaScript taketake me te nui o te kohi rauemi. Waehere i tuhia e i roto i te C++ ka tohatohahia i raro i te raihana MIT.

I roto i nga painga o te whakamahi i Hermes, he whakaheke i te wa whakaoho tono, he whakaheke i te kohi mahara me te whakaheke i te rahi o te tono. I te wa e whakamahi ana i te V8, ko nga waahanga e pau ana te waa ko nga waahanga o te tarai i te waehere puna me te whakahiato i runga i te rere. Ka kawea e Hermes enei hikoinga ki te waahi hanga me te tuku i nga tono kia tukuna ma te ahua o te bytecode kiato me te pai.

Ki te mahi tika i te tono, ka whakamahia he miihini mariko i whakawhanakehia i roto i te kaupapa me te kaikohi paru SemiSpace, ka tohatoha poraka anake ina hiahiatia (I runga i te tono), ka tautoko i te neke me te whakakore i nga poraka, te whakahoki mai i te mahara kua wetekina ki te punaha whakahaere, me te kore o ia waa. te matawai i nga ihirangi o te puranga katoa.

Kua wehea te tukatuka JavaScript ki etahi waahanga. Tuatahi, ka tohatohahia nga tuhinga puna ka hangaia he tohu takawaenga o te waehere (Ko Hermes IR), i runga i te whakaaturanga SSA (Taumahi Takitahi Static). I muri mai, ka tukatukahia te tohu takawaenga ki roto i te arotau, e whakamahi ana i nga tikanga arotautanga pateko whakamua ki te huri i te waehere takawaenga tuatahi ki te tohu takawaenga pai ake i te wa e pupuri ana i nga tohu o te kaupapa. I te waahanga whakamutunga, ka hangaia te bytecode mo te miihini mariko kua rehitatia.

I roto i te miihini tautokona e he wahanga o te paerewa JavaScript ECMAScript 2015 (ko te tino whainga kia tino tautokohia) me te tuku hototahi ki te nuinga o nga tono React Native. Kua whakatau a Hermes kia kaua e tautoko i te mahi a rohe o eval(), me nga korero, whakaata (Whakaata me te Takawaenga), Intl API me etahi haki kei RegExp. Kia taea ai a Merekurai ki roto i te tono React Native, me taapiri noa te "whakahoheaHermes: pono" ki te kaupapa. Ka taea hoki te hanga Hermes i roto i te aratau CLI, ka taea e koe te whakahaere i nga konae JavaScript mai i te raina whakahau. Kei te waatea te aratau whakahiato mangere mo te patuiro, ka taea e koe te kore e whakahiato JavaScript i nga wa katoa i te wa o te whanaketanga, engari ki te whakaputa i te bytecode i runga i te rere kei runga i te taputapu.

I te wa ano, kaore a Facebook e whakamahere ki te urutau Hermes mo Node.js me etahi atu otinga, ka aro noa ki nga tono pūkoro (ko te kohinga AOT hei utu mo te JIT he tino pai rawa atu i roto i te horopaki o nga punaha waea, he iti te RAM me te Flash puhoi). Ko nga whakamatautau mahi tuatahi i whakahaerehia e nga kaimahi Microsoft whakakiteai te wa e whakamahi ana i a Hermes, ka waatea te tono Microsoft Office mo te Android hei whakamahi i roto i te 1.1 hēkona. i muri i te whakaoho me te pau i te 21.5MB o te RAM, i te wa e whakamahi ana i te miihini V8 ka 1.4 hēkona te tiimata me te kohi mahara ko te 30MB.

Tāpiritanga: Pukamata whakaputaina ake nga hua whakamatautau. I te wa e whakamahi ana a Hermes me te tono MatterMost, ko te wa ki te tiimata i te waatea mo te mahi (TTI, Time To Interact) i heke mai i te 4.30 ki te 2.01 hēkona, i heke te rahi o te kete APK mai i te 41 ki te 22 MB, me te kai mahara mai i te 185 ki te 136. MB.

Source: opennet.ru

Tāpiri i te kōrero