Injini ye-Facebook ye-Hermes JavaScript evulekile

Injini yeJavaScript engasindi ye-Facebook evule umthombo Hermes, elungiselelwe ukusebenzisa izinhlelo zokusebenza ngokusekelwe kuhlaka Phendulela uNative endaweni ye-Android. Hermes ukwesekwa eyakhelwe ngaphakathi 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 ibhalwe ngu 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 (UHermes IR), ngokusekelwe ekwethulweni I-SSA (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 isekelwe ngu 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 kwembulwaukuthi uma usebenzisa i-Hermes, isicelo se-Microsoft Office se-Android sitholakale ukuze sisetshenziswe kumasekhondi angu-1.1. ngemuva kokuqala futhi kudla u-21.5MB we-RAM, kuyilapho uma usebenzisa injini ye-V8 kuthatha imizuzwana engu-1.4 ukuqala futhi ukusetshenziswa kwememori kungu-30MB.

Ukwengeza: Facebook eshicilelwe 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

Engeza amazwana