Ang Facebook open sourced nga Hermes JavaScript engine

Ang Facebook open sourced nga gaan nga JavaScript engine Hermes, gi-optimize alang sa pagpadagan sa mga aplikasyon base sa balangkas React Native sa Android nga plataporma. Suporta ni Hermes gitukod-sa sa React Native sugod sa 0.60.2 nga pagpagawas karon. Ang proyekto gilaraw aron masulbad ang mga problema sa taas nga oras sa pagsugod alang sa lumad nga mga aplikasyon sa JavaScript ug hinungdanon nga pagkonsumo sa kapanguhaan. Code gisulat ni sa C++ ug giapod-apod ubos sa lisensya sa MIT.

Lakip sa mga bentaha sa paggamit sa Hermes, adunay pagkunhod sa oras sa pagsugod sa aplikasyon, pagkunhod sa konsumo sa memorya ug pagkunhod sa gidak-on sa aplikasyon. Kung gigamit ang V8, ang labing makagugol nga mga yugto mao ang mga yugto sa pag-parse sa source code ug pagtipon niini sa langaw. Gidala ni Hermes kini nga mga lakang sa yugto sa pagtukod ug gitugotan ang mga aplikasyon nga ihatud sa porma sa compact ug episyente nga bytecode.

Aron direkta nga ipatuman ang aplikasyon, ang usa ka virtual nga makina nga naugmad sa sulod sa proyekto gigamit sa SemiSpace garbage collector, nga nag-apod-apod sa mga bloke lamang kung gikinahanglan (On-demand), nagsuporta sa paglihok ug pag-defragmentation sa mga bloke, pagpabalik sa libre nga memorya sa operating system, nga wala matag karon ug unya. pag-scan sa sulod sa tibuok pundok.

Ang pagproseso sa JavaScript gibahin sa daghang mga yugto. Una, ang gigikanan nga mga teksto gi-parse ug usa ka intermediate nga representasyon sa code ang nahimo (Hermes IR), base sa representasyon SSA (Static Single Assignment). Sunod, ang intermediate nga representasyon giproseso sa usa ka optimizer, nga magamit sa unahan nga static optimization nga mga teknik aron mabag-o ang panguna nga intermediate code ngadto sa usa ka mas episyente nga intermediate nga representasyon samtang gipreserbar ang orihinal nga mga semantiko sa programa. Sa katapusan nga yugto, ang bytecode alang sa rehistradong virtual machine gihimo.

Sa makina gisuportahan sa bahin sa ECMAScript 2015 JavaScript nga sumbanan (ang katapusang tumong mao ang hingpit nga pagsuporta niini) ug naghatag og pagkaangay sa kadaghanan nga anaa na nga React Native nga mga aplikasyon. Nakahukom si Hermes nga dili suportahan ang lokal nga pagpatuman sa eval(), nga adunay mga pahayag, pagpamalandong (Reflect ug Proxy), Intl API ug pipila ka mga bandila sa RegExp. Aron mahimo ang Hermes sa usa ka React Native nga aplikasyon, idugang lang ang opsyon nga "enableHermes: true" sa proyekto. Posible usab ang paghimo sa Hermes sa CLI mode, nga nagtugot kanimo sa pag-execute sa arbitraryong mga file sa JavaScript gikan sa command line. Ang usa ka tapolan nga compilation mode anaa alang sa pag-debug, nga nagtugot kanimo nga dili mag-compile sa JavaScript matag panahon sa proseso sa pag-uswag, apan aron makamugna og bytecode sa langaw nga anaa na sa device.

Sa parehas nga oras, ang Facebook wala magplano nga ipahiangay ang Hermes alang sa Node.js ug uban pang mga solusyon, nga nagpunting lamang sa mga aplikasyon sa mobile (ang pag-compile sa AOT imbes sa JIT ang labing kamalaumon sa konteksto sa mga mobile system, nga adunay limitado nga RAM ug hinay nga Flash). Preliminary performance testing nga gihimo sa mga empleyado sa Microsoft gipadayagnga sa paggamit sa Hermes, ang Microsoft Office nga aplikasyon alang sa Android mahimong magamit sa 1.1 segundos. human sa pagsugod ug konsumo sa 21.5MB sa RAM, samtang sa diha nga ang paggamit sa V8 engine kini nagkinahanglan 1.4 segundos sa pagsugod ug sa memory konsumo mao ang 30MB.

Dugang: Facebook nga gipatik kaugalingon nga resulta sa pagsulay. Kung gigamit ang Hermes gamit ang MatterMost nga aplikasyon, ang oras sa pagsugod sa pagkaanaa alang sa trabaho (TTI, Oras sa Pag-interact) mikunhod gikan sa 4.30 hangtod 2.01 segundo, ang gidak-on sa pakete sa APK gikunhuran gikan sa 41 hangtod 22 MB, ug konsumo sa memorya gikan sa 185 hangtod 136 MB.

Source: opennet.ru

Idugang sa usa ka comment