Facebook släppte källkoden för Hermes JavaScript-motor

Hermes

Facebook har öppnat källkoden för den lätta Hermes JavaScript-motorn, optimerad för att köra React Native framework-baserade applikationer på Android-plattformen.

Facebook Software Engineer Marc Horowitz avslöjade den nya JavaScript-motorn vid 2019 Chain React-konferensen i Portland, Oregon. Hermes är ett nytt utvecklingsverktyg som fokuserar på att förbättra appens startprestanda på samma sätt som Facebook redan gör för sina appar och göra appar mer effektiva på smartphones på nybörjarnivå.

Om Hermes

Hermes-support är inbyggt i React Native från och med dagens version 0.60.2. Projektet är känt för att lösa problem med långa starttider för inbyggda JavaScript-applikationer och betydande resursförbrukning. Koden är skriven i C ++ och distribueras under MIT-licensen.

Av fördelarna med att använda Hermes minskar starttiden för applikationen, en minskning av minnesförbrukningen och en minskning av programmets storlek.

Acceleration av ansökningar lansera uppnås genom att använda förkompilering i en bytkod kompakt och effektiv i sammanställningsfasen.

För att köra applikationen direkt används en virtuell maskin med SemiSpace-sopuppsamlaren som utvecklats som en del av projektet. Med V8 är de längsta stegen för att analysera källkoden och kompilera den i farten.

Hermes-motorn tar dessa steg till sammanställningsfasen och gör att applikationer kan levereras i form av optimerad byte-kod.

JavaScript-bearbetning är indelad i flera steg. Inledningsvis analyseras källkoden och den mellanliggande kodrepresentationen (Hermes IR) genereras, baserat på SSA-representationen (Static Unique Assignment).

Dessutom bearbetas mellanrepresentationen i optimeraren, som använder proaktiv statisk optimeringsteknik för att konvertera den primära mellanliggande koden till en effektivare mellanrepresentation, samtidigt som det ursprungliga programmets semantik bevaras.

Slutligen i det sista steget genereras byte-koden för den registrerade virtuella maskinen.

I en demo visade Marc Horowitz att en React Native-applikation med Hermes den var fullastad ungefär två sekunder snabbare än samma applikation som laddades utan Hermes.

Marc Horowitz såg till att Hermes också minskade storleken på APK till mitten av en lagrad app för React Native 41MB och eliminerade en fjärdedel av appens minnesanvändning.

Med Hermes kan med andra ord utvecklare få användare att interagera snabbare med en applikation med färre hinder, som långsamma nedladdningstider och begränsningar orsakade av flera applikationer som delar begränsade minnesresurser, till exempel: Speciellt på telefoninmatning på nivå.

Motorn stöder en del av ECMAScript 2015 JavaScript-standarden (dess fullständiga stöd är slutmålet) och är kompatibel med de flesta befintliga React Native-applikationer. I Hermes beslutades att inte stödja lokal casting av eval (), "med" uttryck, reflektioner (Reflect och Proxy), API för Intl API och några flaggor i RegExp.

För att aktivera Hermes i programmet React Native, lägg bara till alternativet "enableHermes: true" i projektet. Det är också möjligt att kompilera Hermes i CLI-gränssnittsläget, vilket gör att du kan köra godtyckliga JavaScript-filer från kommandoraden.

Samtidigt, Facebook planerar inte att anpassa Hermes för Node.js och andra lösningar, med endast fokus på mobilapplikationer (att kompilera AOT istället för JIT är mer optimalt i samband med React Native-baserade mobilappar).

Microsoft genomförde preliminära prestandatester och visade att Microsoft Office för Android-applikationen är tillgänglig för arbete på 1.1 sekunder när man använder Hermes.

Efter lanseringen och den förbrukar 21.5 MB RAM, medan du använder V8-motorn spenderas 1.4 sekunder vid lanseringen och minnesförbrukningen är 30 MB.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.