Motora Hermes JavaScript ya çavkaniya vekirî ya Facebookê

Motora JavaScriptê ya sivik a çavkaniya vekirî ya Facebookê Hermes, ji bo xebitandina sepanên li ser bingeha çarçovê xweşbîn kirin React Native li ser platforma Android. Piştgiriya Hermes avakirî di React Native de bi serbestberdana 0.60.2 ya îro dest pê dike. Proje ji bo çareserkirina pirsgirêkên bi demên destpêkirina dirêj ên ji bo serîlêdanên JavaScript-a xwemalî û xerckirina çavkaniyek girîng hatî çêkirin. Navê dizî ji hêla ve hatî nivîsandin di C ++ de û di bin lîsansa MIT de belav kirin.

Di nav avantajên karanîna Hermes de, kêmbûna dema destpêkirina serîlêdanê, kêmbûna vexwarina bîranînê û kêmbûna mezinahiya serîlêdanê heye. Dema ku V8 bikar bînin, qonaxên herî demdirêj qonaxên parskirina koda çavkaniyê û berhevkirina wê di firînê de ne. Hermes van gavan digihîne qonaxa avakirinê û dihêle ku serîlêdan di forma bytekodê de tevlihev û bikêrhatî werin radest kirin.

Ji bo rasterast bicîhkirina serîlêdanê, makîneyek virtual ya ku di hundurê projeyê de hatî pêşve xistin bi berhevkarê çopê SemiSpace re tê bikar anîn, ku blokan tenê li gorî hewcedariyê belav dike (Li ser daxwazê), piştgirî dide veguheztin û defragmentkirina blokan, vegerandina bîranîna azad li pergala xebitandinê, bêyî demkî. şopandina naveroka tevahiyê.

Pêvajoya JavaScript li çend qonaxan tê dabeş kirin. Pêşîn, nivîsên çavkaniyê têne pars kirin û nûneriyek navîn a kodê tê çêkirin (Hermes IR), li ser bingeha nûnertiyê S.S.A. (Static Single Assignment). Dûv re, nûneriya navîn di optimîzatorek de tête hilberandin, ku teknîkên optimîzasyona statîkî ya pêşwext bicîh tîne da ku koda navîn a bingehîn veguhezîne nûnertiyek navîn a bikêrtir û di heman demê de semantîka orîjînal a bernameyê diparêze. Di qonaxa paşîn de, bytecode ji bo makîneya virtual ya qeydkirî tête çêkirin.

Di motorê de piştgirî kirin beşek ji standarda JavaScript ECMAScript 2015 (armanca dawîn ew e ku bi tevahî piştgirî bike) û bi piraniya serîlêdanên React Native yên heyî re hevahengiyê peyda dike. Hermes biryar da ku piştgirî nede darvekirina herêmî ya eval(), bi daxuyanî, refleks (Reflect and Proxy), Intl API û hin alayên li RegExp. Ji bo çalakkirina Hermes di serîlêdana React Native de, tenê vebijarka "enableHermes: rast" li projeyê zêde bikin. Di heman demê de gengaz e ku hûn Hermes di moda CLI de ava bikin, ku dihêle hûn pelên JavaScript-a keyfî ji rêzika fermanê bicîh bikin. Modek berhevokê ya lal ji bo xeletkirinê heye, ku dihêle hûn di pêvajoya pêşkeftinê de her car JavaScript-ê berhev nekin, lê jixwe li ser cîhazê bitekodê biafirînin.

Di heman demê de, Facebook ne plan dike ku Hermes ji bo Node.js û çareseriyên din biguhezîne, tenê li ser sepanên mobîl balê dikişîne (hevberhevkirina AOT li şûna JIT di çarçoweya pergalên mobîl de, yên ku RAM-ê û Flash-ya hêdîtir sînordar in, herî çêtirîn e). Testkirina performansê ya pêşîn ku ji hêla karmendên Microsoft ve hatî çêkirin diyar kirku dema ku Hermes bikar bînin, serîlêdana Microsoft Office ji bo Android-ê di 1.1 çirkeyan de ji bo karanîna peyda dibe. piştî destpêkirinê û 21.5 MB RAM dixwe, dema ku motora V8 bikar tîne 1.4 saniye dest pê dike û vexwarina bîranînê 30 MB e.

Zêdekirin: Facebook weşandin encamên testa xwe. Dema ku Hermes bi serîlêdana MatterMost re tê bikar anîn, dema destpêkirina hebûna kar (TTI, Dema Têkilî) ji 4.30 ber 2.01 saniyeyan kêm bû, mezinahiya pakêta APK-ê ji 41-ê daket 22 MB, û xerckirina bîranînê ji 185-an daket 136-an. MB.

Source: opennet.ru

Add a comment