Facebook oopbron Hermes JavaScript-enjin

Facebook oopbron liggewig JavaScript-enjin Hermes, geoptimaliseer vir die bestuur van toepassings gebaseer op die raamwerk Reageer Naturel op die Android-platform. Hermes ondersteun ingebou in React Native begin met vandag se 0.60.2-vrystelling. Die projek is ontwerp om probleme op te los met lang opstarttye vir inheemse JavaScript-toepassings en aansienlike hulpbronverbruik. Kode geskryf deur in C++ en versprei onder die MIT-lisensie.

Onder die voordele van die gebruik van Hermes is daar 'n vermindering in toepassing se opstarttyd, 'n afname in geheueverbruik en 'n vermindering in toepassingsgrootte. Wanneer V8 gebruik word, is die mees tydrowende stadiums die stadiums van die ontleding van die bronkode en die samestelling daarvan. Hermes bring hierdie stappe na die boustadium en laat toepassings in die vorm van kompakte en doeltreffende greepkode afgelewer word.

Om die toepassing direk uit te voer, word 'n virtuele masjien wat binne die projek ontwikkel is, gebruik met die SemiSpace-vullisverwyderaar, wat blokke net versprei soos nodig (Op-aanvraag), die verskuiwing en defragmentering van blokke ondersteun, die vrygestelde geheue na die bedryfstelsel terugstuur, sonder om periodiek skandeer die inhoud van die hele hoop.

JavaScript-verwerking word in verskeie fases verdeel. Eerstens word die brontekste ontleed en 'n intermediêre voorstelling van die kode word gegenereer (Hermes IR), gebaseer op die voorstelling SSA (Statiese Enkelopdrag). Vervolgens word die intermediêre voorstelling in 'n optimeerder verwerk, wat voorwaartse statiese optimeringstegnieke toepas om die primêre intermediêre kode in 'n meer doeltreffende intermediêre voorstelling te transformeer terwyl die oorspronklike semantiek van die program bewaar word. Op die laaste stadium word die greepkode vir die geregistreerde virtuele masjien gegenereer.

In die enjin ondersteun deur deel van die ECMAScript 2015 JavaScript-standaard (die uiteindelike doel is om dit ten volle te ondersteun) en bied verenigbaarheid met die meeste bestaande React Native-toepassings. Hermes het besluit om nie plaaslike uitvoering van eval(), met stellings, refleksie (Reflect and Proxy), Intl API en sommige vlae in RegExp te ondersteun. Om Hermes in 'n React Native-toepassing te aktiveer, voeg net die "enableHermes: true"-opsie by die projek. Dit is ook moontlik om Hermes in CLI-modus te bou, sodat jy arbitrêre JavaScript-lêers vanaf die opdragreël kan uitvoer. 'n Luisamestellingmodus is beskikbaar vir ontfouting, wat jou toelaat om nie JavaScript elke keer tydens die ontwikkelingsproses saam te stel nie, maar om greepkode op die vlug te genereer wat reeds op die toestel is.

Terselfdertyd beplan Facebook nie om Hermes vir Node.js en ander oplossings aan te pas nie, en fokus slegs op mobiele toepassings (AOT-samestelling in plaas van JIT is die beste in die konteks van mobiele stelsels, wat beperkte RAM en stadiger Flash het). Voorlopige prestasietoetsing uitgevoer deur Microsoft-werknemers aan die lig gebringdat wanneer Hermes gebruik word, die Microsoft Office-toepassing vir Android binne 1.1 sekondes beskikbaar word vir gebruik. na opstart en verbruik 21.5 MB RAM, terwyl dit 8 sekondes neem om te begin wanneer die V1.4-enjin gebruik word en geheueverbruik 30 MB is.

Byvoeging: Facebook опубликовал eie toetsuitslae. Wanneer Hermes met die MatterMost-toepassing gebruik word, het die tyd om beskikbaarheid vir werk te begin (TTI, Time To Interact) afgeneem van 4.30 tot 2.01 sekondes, die grootte van die APK-pakket is van 41 tot 22 MB verminder, en geheueverbruik van 185 tot 136 MB.

Bron: opennet.ru

Voeg 'n opmerking