Enjine ea Facebook e bulehileng mohloling oa Hermes JavaScript

Enjine ea JavaScript ea Facebook e bulehileng mohloli o bobebe Hermes, e ntlafalitsoeng bakeng sa ho tsamaisa lits'ebetso tse ipapisitseng le moralo Itšoara ka Native sethaleng sa Android. Tšehetso ea Hermes e hahiloeng ho React Native ho qala ka tokollo ea kajeno ea 0.60.2. Morero o etselitsoe ho rarolla mathata ka nako e telele ea ho qala lits'ebetso tsa matsoalloa a JavaScript le ts'ebeliso e kholo ea lisebelisoa. Khoutu ngotsoe ho C ++ le ho ajoa tlas'a laesense ea MIT.

Har'a melemo ea ho sebelisa Hermes, ho na le phokotso ea nako ea ho qala kopo, ho fokotseha ha tšebeliso ea mohopolo le ho fokotseha ha boholo ba kopo. Ha u sebelisa V8, mehato e senyang nako ka ho fetisisa ke mekhahlelo ea ho arola khoutu ea mohloli le ho e bokella ka fofa. Hermes e tlisa mehato ena sethaleng sa kaho mme e lumella likopo hore li fanoe ka mokhoa oa compact le o sebetsang oa bytecode.

Ho phethahatsa kopo ka ho toba, mochine oa sebele o entsoeng ka har'a morero o sebelisoa le moqokelli oa litšila oa SemiSpace, o fanang ka li-blocks feela kamoo ho hlokahalang (On-dend), o tšehetsa ho sisinyeha le ho senyeha ha li-blocks, ho khutlisetsa mohopolo o lokolohileng tsamaisong ea ts'ebetso, ntle le nako le nako. ho bala bokahare ba qubu kaofela.

JavaScript processing e arotsoe ka mekhahlelo e mengata. Ntlha ea pele, litemana tsa mohloli li arotsoe 'me ho hlahisoa setšoantšo se bohareng sa khoutu (Hermes IR), ho ipapisitsoe le boemeli S.S.A. (Kabelo e le 'Ngoe e tsitsitseng). Ka mor'a moo, boemeli ba mahareng bo sebetsoa ka optimizer, e sebelisang mekhoa ea ntlafatso e tsitsitseng ea pele ho fetola khoutu ea mantlha ea mahareng hore e be boemeli bo botle ba mahareng ha ho ntse ho bolokoa semantics ea mantlha ea lenaneo. Mothating oa ho qetela, bytecode bakeng sa mochini o ngolisitsoeng oa nnete o hlahisoa.

Enjeneng tšehetsoa ke karolo ea ECMAScript 2015 JavaScript standard (sepheo sa mantlha ke ho e tšehetsa ka botlalo) mme e fana ka tšebelisano le lits'ebetso tse ngata tse teng tsa React Native. Hermes o nkile qeto ea ho se tšehetse ts'ebetso ea lehae ea eval(), ka lipolelo, ho nahanisisa (Reflect le Proxy), Intl API le lifolakha tse ling ho RegExp. Ho nolofalletsa Hermes ts'ebelisong ea React Native, eketsa feela khetho ea "enableHermes: true" morerong. Hape hoa khoneha ho haha ​​​​Hermes ka mokhoa oa CLI, e leng se u lumellang hore u sebelise lifaele tsa JavaScript tse sa lumellaneng ho tloha molaong oa taelo. Mokhoa o botsoa oa ho bokella o teng bakeng sa ho lokisa liphoso, o u lumellang hore u se ke oa bokella JavaScript nako le nako nakong ea ts'ebetso ea nts'etsopele, empa ho hlahisa bytecode ka fofa e seng e ntse e le sesebelisoa.

Ka nako e ts'oanang, Facebook ha e rera ho ikamahanya le Hermes bakeng sa Node.js le litharollo tse ling, tse lebisang tlhokomelo feela ho lisebelisoa tsa mohala (kopano ea AOT ho e-na le JIT e nepahetse ka ho fetisisa molemong oa mekhoa ea mehala, e nang le RAM e fokolang le Flash e liehang). Teko ea pele ea ts'ebetso e entsoeng ke basebetsi ba Microsoft senotsoehore ha o sebelisa Hermes, sesebelisoa sa Microsoft Office bakeng sa Android se fumaneha hore se sebelisoe ka metsotsoana e 1.1. ka mor'a ho qala le ho ja 21.5MB ea RAM, ha u sebelisa mochine oa V8 ho nka metsotsoana ea 1.4 ho qala le tšebeliso ea mohopolo ke 30MB.

Tlatsetso: Facebook e hatisitsoeng liphetho tsa hau tsa liteko. Ha u sebelisa Hermes ka ts'ebeliso ea MatterMost, nako ea ho qala ho fumaneha bakeng sa mosebetsi (TTI, Time To Interact) e fokotsehile ho tloha metsotsoana e 4.30 ho isa ho 2.01, boholo ba sephutheloana sa APK bo fokotsehile ho tloha ho 41 ho isa ho 22 MB, le tšebeliso ea mohopolo ho tloha ho 185 ho isa ho 136. MB.

Source: opennet.ru

Eketsa ka tlhaloso