Facebook louvri sous Hermes JavaScript motè

Facebook louvri sous motè JavaScript ki lejè Hermes, optimisé pou kouri aplikasyon ki baze sou fondasyon an Reyaji natif natal sou platfòm android la. Hermes sipò bati-an nan React Native kòmanse ak lage 0.60.2 jodi a. Pwojè a fèt pou rezoud pwoblèm ak tan demaraj long pou aplikasyon JavaScript natif natal ak konsomasyon resous enpòtan. Kòd ekri pa nan C++ epi distribye anba lisans MIT.

Pami avantaj ki genyen nan lè l sèvi avèk Hermes, gen yon rediksyon nan tan demaraj aplikasyon an, yon diminisyon nan konsomasyon memwa ak yon rediksyon nan gwosè aplikasyon an. Lè w ap itilize V8, etap ki pi konsome tan yo se etap nan analiz kòd sous la ak konpile li sou vole. Hermes pote etap sa yo nan etap nan bati epi li pèmèt aplikasyon yo dwe delivre nan fòm lan nan bytecode kontra enfòmèl ant ak efikas.

Pou egzekite aplikasyon an dirèkteman, yo itilize yon machin vityèl ki devlope nan pwojè a ak pèseptè fatra SemiSpace, ki distribye blòk sèlman jan sa nesesè (sou demann), sipòte deplase ak defragmantasyon blòk yo, retounen memwa libere nan sistèm operasyon an, san yo pa detanzantan. analize sa ki nan pil la tout antye.

Pwosesis JavaScript divize an plizyè etap. Premyèman, tèks sous yo analize epi yo pwodui yon reprezantasyon entèmedyè nan kòd la (Hermes IR), ki baze sou reprezantasyon an S.S.A. (Estatik Single Assignment). Apre sa, reprezantasyon entèmedyè a trete nan yon optimiseur, ki aplike teknik optimize estatik pou transfòme kòd entèmedyè prensipal la nan yon reprezantasyon entèmedyè ki pi efikas pandan y ap konsève semantik orijinal pwogram nan. Nan dènye etap la, bytecode pou machin vityèl anrejistre a te pwodwi.

Nan motè a sipòte pa yon pati nan estanda JavaScript ECMAScript 2015 (objektif final la se sipòte li totalman) epi li bay konpatibilite ak pifò aplikasyon React Native ki egziste deja. Hermes te deside pa sipòte ekzekisyon lokal eval(), ak deklarasyon, refleksyon (Reflect ak Proxy), Intl API ak kèk drapo nan RegExp. Pou pèmèt Hermes nan yon aplikasyon React Native, jis ajoute opsyon "enableHermes: vre" nan pwojè a. Li posib tou pou konstwi Hermes nan mòd CLI, sa ki pèmèt ou egzekite dosye JavaScript abitrè soti nan liy lòd la. Yon mòd konpilasyon parese ki disponib pou debogaj, ki pèmèt ou pa konpile JavaScript chak fwa pandan pwosesis devlopman an, men jenere bytecode sou vole a deja sou aparèy la.

An menm tan an, Facebook pa planifye pou adapte Hermes pou Node.js ak lòt solisyon, konsantre sèlman sou aplikasyon mobil (AOT konpilasyon olye pou yo JIT se pi optimal nan yon kontèks sistèm mobil, ki gen RAM limite ak pi dousman Flash). Tès pèfòmans preliminè ki fèt pa anplwaye Microsoft devwaleke lè w ap itilize Hermes, aplikasyon Microsoft Office pou Android vin disponib pou itilize nan 1.1 segonn. apre demaraj ak konsome 21.5MB nan RAM, pandan y ap lè w ap itilize motè a V8 li pran 1.4 segonn yo kòmanse ak konsomasyon memwa se 30MB.

Anplis: Facebook pibliye pwòp rezilta tès yo. Lè w ap itilize Hermes ak aplikasyon MatterMost, tan pou kòmanse disponiblite pou travay (TTI, Time To Interact) diminye soti nan 4.30 a 2.01 segonn, gwosè pake APK a te redwi soti nan 41 a 22 MB, ak konsomasyon memwa soti nan 185 a 136. MB.

Sous: opennet.ru

Add nouvo kòmantè