Facebook qhib qhov Hermes JavaScript cav

Facebook qhib qhov teeb meem JavaScript cav Hermes, optimized rau khiav daim ntawv thov raws li lub moj khaum React haiv ntawm Android platform. Hermes txhawb nqa built-in hauv React Native pib nrog hnub no 0.60.2 tso tawm. Txoj haujlwm no yog tsim los daws cov teeb meem nrog lub sijhawm pib ua haujlwm ntev rau cov ntawv thov JavaScript ib txwm thiab siv cov peev txheej tseem ceeb. Code yog sau hauv C ++ thiab muab faib raws li daim ntawv tso cai MIT.

Ntawm qhov zoo ntawm kev siv Hermes, muaj qhov txo qis hauv daim ntawv thov lub sijhawm pib, txo qis kev nco thiab txo qhov loj ntawm daim ntawv thov. Thaum siv V8, cov sijhawm siv sijhawm ntau tshaj plaws yog cov theem ntawm kev txheeb xyuas qhov chaws thiab muab tso ua ke ntawm ya. Hermes coj cov kauj ruam no mus rau theem tsim thiab tso cai rau cov ntawv thov xa tuaj rau hauv daim ntawv ntawm kev cog lus thiab ua tau zoo bytecode.

Txhawm rau ua ncaj qha rau daim ntawv thov, lub tshuab virtual tsim nyob rau hauv qhov project yog siv nrog SemiSpace garbage collector, uas faib cov blocks nkaus xwb raws li xav tau (On-demand), txhawb kev txav thiab defragmentation ntawm blocks, xa rov qab lub cim xeeb pub dawb rau lub operating system, tsis muaj sij hawm. scanning cov ntsiab lus ntawm tag nrho cov heap.

JavaScript ua tau muab faib ua ob peb theem. Ua ntej, cov ntawv sau tau raug txheeb xyuas thiab qhov nruab nrab ntawm cov lej tau tsim tawm (Hermes IR), raws li kev sawv cev SSA (Static Single Assignment). Tom ntej no, tus sawv cev nruab nrab yog ua tiav hauv qhov optimizer, uas siv rau pem hauv ntej zoo li qub optimization cov tswv yim los hloov cov thawj intermediate code rau hauv ib tug ntau npaum li cas intermediate sawv cev thaum khaws cia cov thawj semantics ntawm qhov kev pab cuam. Nyob rau theem kawg, cov bytecode rau lub tshuab virtual sau npe yog tsim.

Hauv lub cav txhawb los ntawm ib feem ntawm ECMAScript 2015 JavaScript tus qauv (lub hom phiaj kawg yog txhawb nqa nws) thiab muab kev sib raug zoo nrog feem ntau cov ntawv thov React Native uas twb muaj lawm. Hermes tau txiav txim siab tsis txhawb nqa kev ua haujlwm hauv zos ntawm eval(), nrog cov lus, kev xav (Reflect thiab Proxy), Intl API thiab qee tus chij hauv RegExp. Txhawm rau pab Hermes hauv React Native daim ntawv thov, tsuas yog ntxiv qhov "enableHermes: tseeb" kev xaiv rau qhov project. Nws tseem tuaj yeem tsim Hermes hauv CLI hom, tso cai rau koj los ua cov ntaub ntawv JavaScript tsis raug cai los ntawm kab hais kom ua. Ib tug tub nkeeg muab tso ua ke hom muaj rau kev debugging, uas tso cai rau koj tsis txhob sau JavaScript txhua txhua lub sij hawm thaum lub sij hawm txoj kev loj hlob, tab sis los tsim bytecode ntawm ya twb nyob rau hauv lub ntaus ntawv.

Nyob rau tib lub sijhawm, Facebook tsis npaj yuav hloov kho Hermes rau Node.js thiab lwm yam kev daws teeb meem, tsom rau cov ntawv thov mobile nkaus xwb (AOT muab tso ua ke es tsis yog JIT yog qhov zoo tshaj plaws hauv cov ntsiab lus ntawm lub xov tooj ntawm tes, uas muaj tsawg RAM thiab qeeb Flash). Kev sim ua haujlwm ua ntej ua los ntawm Microsoft cov neeg ua haujlwm tsomtias thaum siv Hermes, Microsoft Office daim ntawv thov rau Android yuav muaj rau siv hauv 1.1 vib nas this. Tom qab pib thiab siv 21.5MB ntawm RAM, thaum siv lub cav V8 nws siv sijhawm 1.4 vib nas this los pib thiab nco noj yog 30MB.

Ntxiv: Facebook luam tawm tus kheej xeem tau. Thaum siv Hermes nrog rau daim ntawv thov MatterMost, lub sijhawm pib muaj rau kev ua haujlwm (TTI, Lub Sijhawm Sib Tham) poob ntawm 4.30 txog 2.01 vib nas this, qhov luaj li cas ntawm pob APK raug txo los ntawm 41 txog 22 MB, thiab nco noj ntawm 185 txog 136. MB.

Tau qhov twg los: opennet.ru

Ntxiv ib saib