Injini yeJavaScript engasindi ye-Facebook evule umthombo , elungiselelwe ukusebenzisa izinhlelo zokusebenza ngokusekelwe kuhlaka esiteshini AndroidSekela uHermes ku-React Native eqala ngokukhishwa kwanamuhla okungu-0.60.2. Iphrojekthi yakhelwe ukuxazulula izinkinga ngezikhathi zokuqalisa ezinde zezinhlelo zokusebenza zomdabu ze-JavaScript kanye nokusetshenziswa kwezinsiza ezibalulekile. Ikhodi ku-C++ futhi isatshalaliswa ngaphansi kwelayisense ye-MIT.
Phakathi kwezinzuzo zokusebenzisa uHermes, kukhona ukuncishiswa kwesikhathi sokuqalisa isicelo, ukwehla kokusetshenziswa kwenkumbulo kanye nokwehliswa kosayizi wohlelo lokusebenza. Uma usebenzisa i-V8, izigaba ezidla isikhathi kakhulu yizigaba zokudlulisa ikhodi yomthombo nokuyihlanganisa ngokuhamba kwesikhathi. I-Hermes iletha lezi zinyathelo esiteji sokwakha futhi ivumela izinhlelo zokusebenza ukuthi zilethwe ngendlela ye-bytecode ehlangene nephumelelayo.
Ukuze usebenzise ngokuqondile isicelo, umshini obonakalayo owenziwe ngaphakathi kwephrojekthi usetshenziswa nomqoqi wemfucumfucu we-SemiSpace, osabalalisa amabhulokhi kuphela njengoba kudingeka (Okufunwayo), usekela ukunyakaza nokuhlukaniswa kwamabhulokhi, ukubuyisela inkumbulo ekhululiwe ohlelweni lokusebenza, ngaphandle ngezikhathi ezithile. ukuskena okuqukethwe kuyo yonke inqwaba.
Ukucubungula i-JavaScript kuhlukaniswe izigaba ezimbalwa. Okokuqala, imibhalo yomthombo iyacutshungulwa bese kukhiqizwa ukumelwa okuphakathi kwekhodi (), ngokusekelwe ekwethulweni (Isabelo Esisodwa Esimile). Okulandelayo, ukumelwa okuphakathi kuyacutshungulwa kusilungiseleli, esisebenzisa amasu okuthuthukisa amile wangaphambili ukuze kuguqulwe ikhodi eyinhloko emaphakathi ibe ukumelwa okumaphakathi okusebenza kahle kakhudlwana kuyilapho kugcinwa i-semantics yoqobo yohlelo. Esigabeni sokugcina, i-bytecode yomshini obonakalayo obhalisiwe iyakhiqizwa.
Enjinini ingxenye yezinga le-ECMAScript 2015 JavaScript (umgomo omkhulu ukuyisekela ngokugcwele) futhi inikeza ukuhambisana nezinhlelo zokusebenza eziningi ezikhona ze-React Native. U-Hermes unqume ukungakusekeli ukukhishwa kwendawo kwe-eval(), ngezitatimende, ukuboniswa (Reflect and Proxy), i-Intl API namanye amafulegi ku-RegExp. Ukuze unike amandla ama-Hermes kuhlelo lokusebenza lwe-React Native, vele ungeze inketho ethi "enableHermes: true" kuphrojekthi. Kungenzeka futhi ukwakha i-Hermes kumodi ye-CLI, okukuvumela ukuthi usebenzise amafayela we-JavaScript ngokunganaki emugqeni womyalo. Imodi yokuhlanganisa evilaphayo iyatholakala ukuze ilungiswe, okuvumela ukuthi ungahlanganisi i-JavaScript ngaso sonke isikhathi phakathi nenqubo yokuthuthukisa, kodwa ukhiqize i-bytecode endizeni kakade kudivayisi.
Ngesikhathi esifanayo, i-Facebook ayihleli ukuvumelanisa i-Hermes ye-Node.js nezinye izixazululo, igxile kuphela kuzinhlelo zokusebenza zeselula (ukuhlanganiswa kwe-AOT esikhundleni se-JIT kungcono kakhulu kumongo wezinhlelo zeselula, ezine-RAM elinganiselwe kanye ne-Flash ehamba kancane). Ukuhlolwa kokusebenza kokuqala okwenziwa ngabasebenzi be-Microsoft ukuthi uma usebenzisa iHermes, uhlelo lokusebenza lwe-Microsoft Office lwe Android Itholakala ukusebenza imizuzwana eyi-1.1 ngemva kokuqaliswa futhi idla i-RAM engu-21.5 MB, kuyilapho uma usebenzisa injini ye-V8, kuthatha imizuzwana eyi-1.4 ukuyiqalisa futhi idla imemori engu-30 MB.
Ukwengeza: Facebook imiphumela yokuhlolwa kwakho. Uma usebenzisa i-Hermes ngohlelo lokusebenza lwe-MatterMost, isikhathi sokuqala ukutholakala komsebenzi (TTI, Isikhathi Sokusebenzelana) sehle sisuka kumasekhondi angu-4.30 saya ku-2.01, usayizi wephakheji le-APK wehliswa ukusuka ku-41 ukuya ku-22 MB, kanye nokusetshenziswa kwememori kusuka ku-185 kuya ku-136 MB.
Source: opennet.ru
