Facebook idatsegula nambala ya injini ya Hermes JavaScript

Facebook Open Source Lightweight JavaScript Injini Hermes, zokometsedwa kuti zigwiritsidwe ntchito potengera chimango Chitani Zabwino pa nsanja ya Android. Chithandizo cha Hermes anamangidwa mu mu React Native kuyambira lero kutulutsidwa kwa 0.60.2. Pulojekitiyi ikufuna kuthetsa mavuto ndi nthawi yayitali yoyambira mapulogalamu amtundu wa JavaScript komanso kugwiritsa ntchito zida zofunika kwambiri. Kodi yolembedwa ndi mu C ++ ndikugawidwa pansi pa layisensi ya MIT.

Zina mwazabwino zogwiritsira ntchito Hermes, pali kuchepa kwa nthawi yoyambitsa ntchito, kuchepa kwa kukumbukira komanso kuchepa kwa kukula kwa pulogalamuyo. Mukamagwiritsa ntchito V8, magawo ophatikizira magwero a gwero ndikulemba pa ntchentche ndiatali kwambiri. Hermes amabweretsa masitepewa mu gawo lomanga ndipo amalola kuti mapulogalamu aperekedwe mu mawonekedwe a bytecode yaying'ono komanso yothandiza.

Kuti agwiritse ntchito mwachindunji, makina enieni opangidwa mkati mwa polojekitiyi ndi osonkhanitsa zinyalala a SemiSpace amagwiritsidwa ntchito, omwe amagawira midadada pokhapokha ngati akufunikira (Pofuna), amathandizira kusuntha ndi kuwonongeka kwa midadada ndikumasulidwa kwa omasulidwa. kukumbukira makina ogwiritsira ntchito, osayang'ana nthawi ndi nthawi zomwe zili mulu wonsewo.

Kusintha kwa JavaScript kumagawidwa m'magawo angapo. Poyamba, zolemba zoyambira zimagawidwa ndipo chiwonetsero chapakati cha code chimapangidwa (Hermes IR) kutengera chithunzicho S.S.A. (Static Single Assignment). Chotsatira, choyimira chapakati chimakonzedwa mu optimizer, chomwe chimagwiritsa ntchito njira zotsogola zosasunthika kuti zisinthe kachidindo kakang'ono kameneka kukhala choyimira bwino chapakati ndikusunga ma semantics oyambirira a pulogalamuyi. Pa gawo lomaliza, bytecode yamakina olembetsa amapangidwa.

Mu injini mothandizidwa ndi gawo la ECMAScript 2015 JavaScript muyezo (cholinga chachikulu ndikuthandizira kwathunthu) ndikuwonetsetsa kuti ikugwirizana ndi mapulogalamu ambiri omwe alipo a React Native. Hermes adaganiza zosagwirizana ndi eval(), "ndi" mawu, kusinkhasinkha (Reflect and Proxy), API Intl API ndi mbendera zina mu RegExp. Kuti mutsegule Hermes mu React Native application, ingowonjezerani njira ya "enableHermes: true" pantchitoyo. Ndikothekanso kupanga Hermes mumayendedwe a CLI, kukulolani kuti mugwiritse ntchito mafayilo a JavaScript mosasamala kuchokera pamzere wamalamulo. Pakuwongolera zolakwika, njira yophatikizira yaulesi ilipo, yomwe imakulolani kuti musaphatikize JavaScript nthawi zonse pakupanga, koma kupanga bytecode pa ntchentche yomwe ili pa chipangizocho.

Panthawi imodzimodziyo, Facebook sikukonzekera kusintha Hermes kwa Node.js ndi mayankho ena, kuyang'ana pa mafoni a m'manja (kuphatikiza kwa AOT m'malo mwa JIT kumakhala koyenera kwambiri pazochitika zamakina am'manja, omwe ali ndi RAM yochepa komanso pang'onopang'ono Flash). Pre-Microsoft Performance Testing kuwululidwakuti mukamagwiritsa ntchito Hermes, pulogalamu ya Microsoft Office ya Android imapezeka kuti igwire ntchito mumasekondi 1.1. mutatha kukhazikitsidwa ndikudya 21.5MB ya RAM, pamene mukugwiritsa ntchito injini ya V8, zimatengera masekondi 1.4 kuti ayambe, ndipo kukumbukira kukumbukira ndi 30MB.

Zowonjezera: Facebook lofalitsidwa zotsatira zake za mayeso. Mukamagwiritsa ntchito Hermes ndi pulogalamu ya MatterMost, Time To Interact (TTI) idachepetsedwa kuchoka pa 4.30 mpaka masekondi 2.01, kukula kwa APK kunachepetsedwa kuchoka pa 41 mpaka 22 MB, ndipo kugwiritsa ntchito kukumbukira kunachepetsedwa kuchokera ku 185 mpaka 136 MB.

Source: opennet.ru

Kuwonjezera ndemanga