Facebook yakavhurwa sourced Hermes JavaScript injini

Facebook yakavhurika sourced isingaremi JavaScript injini Hermes, yakagadziridzwa yekushandisa zvikumbiro zvinoenderana nehurongwa React Native pa Android platform. Hermes rutsigiro yakavakwa-mukati muReact Native kutanga neyanhasi 0.60.2 kuburitswa. Iyo purojekiti yakagadzirirwa kugadzirisa matambudziko neakareba nguva dzekutanga kune ekuzvarwa JavaScript application uye yakakosha mashandisirwo ekushandisa. Code yakanyorwa na muC ++ uye yakagoverwa pasi peMIT rezinesi.

Pakati pezvakanakira kushandisa Hermes, pane kudzikiswa kwenguva yekutanga application, kudzikira kwekushandisa ndangariro uye kudzikiswa kwesaizi yekushandisa. Paunenge uchishandisa V8, iwo anonyanya kutora nguva nhanho ndiwo matanho ekuparura iyo sosi kodhi uye kuigadzira panhunzi. Hermes inounza matanho aya padanho rekuvaka uye inobvumira zvikumbiro kuti zviunzwe nenzira yekombuta uye inoshanda bytecode.

Kuti uite zvakananga chikumbiro, muchina chaiwo wakagadzirwa mukati mepurojekiti unoshandiswa neSemiSpace muunganidzi wemarara, unogovera zvivharo chete sezvinodiwa (Pakudiwa), inotsigira kufamba uye kuparadzaniswa kwezvivharo, kudzorera yakasunungurwa memory kune inoshanda sisitimu, pasina nguva nenguva. kuongorora zviri mukati memurwi wose.

JavaScript processing yakakamurwa kuita matanho akati wandei. Kutanga, zvinyorwa zvinyorwa zvinopatsanurwa uye inomiririra kodhi yepakati inogadzirwa (Hermes IR), zvichibva pakumiririra S.S.A. (Static Single Assignment). Tevere, chinomiririra chepakati chinogadziriswa mune optimizer, iyo inoshandisa kumberi static optimization matekiniki ekushandura iyo yekutanga kodhi yepakati ive inomiririra yepakati inomiririra ichichengetedza iyo yekutanga semantics yechirongwa. Padanho rekupedzisira, iyo bytecode yemuchina wakanyoreswa chaiwo unogadzirwa.

Muinjini inotsigirwa ne chikamu cheECMAScript 2015 JavaScript chiyero (chinangwa chekupedzisira ndechekutsigira zvizere) uye inopa kuenderana nezvakawanda zviripo React Native application. Hermes afunga kusatsigira kuurayiwa kwenzvimbo ye eval(), nekutaura, kuratidza (Reflect uye Proxy), Intl API uye mamwe mareza muRegExp. Kugonesa Hermes muReact Native application, ingo wedzera iyo "enableHermes: yechokwadi" sarudzo kupurojekiti. Izvo zvakare zvinogoneka kuvaka Hermes muCLI modhi, ichikubvumidza iwe kuita zvekupokana JavaScript mafaera kubva kumutsara wekuraira. Simbe yekubatanidza modhi inowanikwa yekugadzirisa, iyo inokutendera kuti urege kuunganidza JavaScript nguva dzese panguva yekuvandudza, asi kugadzira bytecode panhunzi yatove pane mudziyo.

Panguva imwecheteyo, Facebook haina kuronga kugadzirisa Hermes yeNode.js uye mamwe magadzirirwo, achitarisa chete pamashandisirwo emafoni (AOT compilation pachinzvimbo cheJIT ndiyo yakanyanya kunaka mumamiriro emafoni masisitimu, ane RAM shoma uye inononoka Flash). Yekutanga performance performance inoitiswa nevashandi veMicrosoft kwaratidzwakuti kana uchishandisa Hermes, iyo Microsoft Office application yeAndroid inowanikwa kuti ishandiswe mumasekonzi 1.1. mushure mekutanga uye kushandisa 21.5MB ye RAM, nepo uchishandisa V8 injini zvinotora 1.4 masekonzi kutanga uye ndangariro kushandiswa 30MB.

Kuwedzera: Facebook rakabudiswa ega mhinduro dzebvunzo. Paunenge uchishandisa Hermes neMatterMost application, nguva yekutanga kuwanikwa kwebasa (TTI, Nguva yeKudyidzana) yakadzikira kubva pa4.30 kusvika 2.01 masekondi, saizi ye APK package yakaderedzwa kubva pa41 kusvika 22 MB, uye kushandiswa kwendangariro kubva pa185 kusvika 136. MB.

Source: opennet.ru

Voeg