Facebook ṣii orisun Hermes JavaScript engine

Facebook ṣii orisun JavaScript fẹẹrẹ fẹẹrẹ Hermes, iṣapeye fun ṣiṣe awọn ohun elo ti o da lori ilana Tunṣe abinibi lori Android Syeed. Hermes atilẹyin ti a ṣe sinu ni Ilu abinibi React ti o bẹrẹ pẹlu itusilẹ 0.60.2 oni. Ise agbese na jẹ apẹrẹ lati yanju awọn iṣoro pẹlu awọn akoko ibẹrẹ pipẹ fun awọn ohun elo JavaScript abinibi ati agbara awọn orisun pataki. Koodu ti a kọ nipasẹ ni C ++ ati pinpin labẹ iwe-aṣẹ MIT.

Lara awọn anfani ti lilo Hermes, idinku ninu akoko ibẹrẹ ohun elo, idinku ninu lilo iranti ati idinku iwọn ohun elo. Nigbati o ba nlo V8, awọn ipele ti n gba akoko pupọ julọ jẹ awọn ipele ti sisọ koodu orisun ati ṣajọ rẹ lori fifo. Hermes mu awọn igbesẹ wọnyi wa si ipele kikọ ati gba awọn ohun elo laaye lati fi jiṣẹ ni irisi iwapọ ati bytecode daradara.

Lati ṣe ohun elo taara, ẹrọ foju kan ti o dagbasoke laarin iṣẹ akanṣe naa ni a lo pẹlu ikojọpọ idọti SemiSpace, eyiti o pin awọn bulọọki nikan bi o ti nilo (Lori-eletan), ṣe atilẹyin gbigbe ati defragmentation ti awọn bulọọki, pada iranti ominira pada si ẹrọ iṣẹ, laisi lorekore. Antivirus awọn akoonu ti gbogbo okiti.

Ṣiṣẹ JavaScript ti pin si awọn ipele pupọ. Ni akọkọ, awọn ọrọ orisun ti wa ni itusilẹ ati pe aṣoju agbedemeji koodu naa jẹ ipilẹṣẹ (Hermes IR), da lori asoju SSA (Aimi Nikan iyansilẹ). Nigbamii ti, aṣoju agbedemeji ti wa ni ilọsiwaju ni iṣapeye, eyiti o kan awọn ilana imudara aimi siwaju lati yi koodu agbedemeji akọkọ pada si aṣoju agbedemeji ti o munadoko diẹ sii lakoko titọju awọn atunmọ atilẹba ti eto naa. Ni ipele ti o kẹhin, koodu baiti fun ẹrọ foju ti a forukọsilẹ ti wa ni ipilẹṣẹ.

Ninu engine ni atilẹyin nipasẹ apakan ti boṣewa JavaScript ECMAScript 2015 ( ibi-afẹde ti o ga julọ ni lati ṣe atilẹyin ni kikun) ati pese ibamu pẹlu awọn ohun elo abinibi React ti o wa pupọ julọ. Hermes ti pinnu lati ma ṣe atilẹyin ipaniyan agbegbe ti eval (), pẹlu awọn alaye, iṣaroye (Reflect and Proxy), Intl API ati diẹ ninu awọn asia ni RegExp. Lati mu Hermes ṣiṣẹ ni ohun elo abinibi React, kan ṣafikun aṣayan “enableHermes: otitọ” si iṣẹ akanṣe naa. O tun ṣee ṣe lati kọ Hermes ni ipo CLI, gbigba ọ laaye lati ṣiṣẹ awọn faili JavaScript lainidii lati laini aṣẹ. Ipo akopọ ọlẹ wa fun n ṣatunṣe aṣiṣe, eyiti o fun ọ laaye lati ṣe akopọ JavaScript ni gbogbo igba lakoko ilana idagbasoke, ṣugbọn lati ṣe ipilẹṣẹ bytecode lori fo tẹlẹ lori ẹrọ naa.

Ni akoko kanna, Facebook ko gbero lati ṣe deede Hermes fun Node.js ati awọn solusan miiran, ni idojukọ nikan lori awọn ohun elo alagbeka (akopọ AOT dipo JIT jẹ eyiti o dara julọ ni ipo ti awọn ọna ṣiṣe alagbeka, eyiti o ni opin Ramu ati Filaṣi ti o lọra). Idanwo iṣẹ ṣiṣe alakoko ti awọn oṣiṣẹ Microsoft ṣe fi hanpe nigba lilo Hermes, ohun elo Microsoft Office fun Android yoo wa fun lilo ni iṣẹju-aaya 1.1. lẹhin ibẹrẹ ati gbigba 21.5MB ti Ramu, lakoko lilo ẹrọ V8 o gba iṣẹju 1.4 lati bẹrẹ ati agbara iranti jẹ 30MB.

Afikun: Facebook atejade ti ara igbeyewo esi. Nigbati o ba nlo Hermes pẹlu ohun elo MatterMost, akoko lati bẹrẹ wiwa fun iṣẹ (TTI, Akoko Lati Ibaṣepọ) dinku lati 4.30 si awọn aaya 2.01, iwọn ti package apk dinku lati 41 si 22 MB, ati agbara iranti lati 185 si 136 MB.

orisun: opennet.ru

Fi ọrọìwòye kun