Facebook frigav kildekoden til Hermes JavaScript-motoren

Hermes

Facebook har åbnet kildekoden til den lette Hermes JavaScript-motor, optimeret til at køre React Native framework-baserede applikationer på Android-platformen.

Facebook-softwareingeniøren Marc Horowitz afslørede den nye JavaScript-motor på 2019 Chain React-konferencen i Portland, Oregon. Hermes er et nyt udviklerværktøj, der fokuserer på at forbedre appens startpræstation på samme måde som Facebook allerede gør for sine apps og gøre apps mere effektive på entry-level smartphones.

Om Hermes

Hermes support er indbygget i React Native fra i dag version 0.60.2. Projektet er anerkendt for at løse problemer med lange opstartstider for native JavaScript-applikationer og betydeligt ressourceforbrug. Koden er skrevet i C ++ og distribueret under MIT-licensen.

Af fordelene ved at bruge Hermes er der en reduktion i starttiden for applikationen, et fald i hukommelsesforbruget og et fald i applikationens størrelse.

Acceleration af ansøgninger lancering opnås ved hjælp af prækompilering i en bytekode kompakt og effektiv i kompileringsfasen.

For at køre applikationen direkte bruges en virtuel maskine med SemiSpace-affaldssamleren udviklet som en del af projektet. Med V8 er de længste trin til at analysere kildekoden og kompilere den i farten.

Hermes-motoren tager disse trin til kompileringsfasen og gør det muligt at levere applikationer i form af optimeret bytekode.

JavaScript-behandling er opdelt i flere faser. Oprindeligt blev kildekoden parset, og den mellemliggende kodrepræsentation (Hermes IR) genereres baseret på SSA-repræsentationen (Static Unique Assignment).

Derudover behandles den mellemliggende repræsentation i optimeringsprogrammet, som bruger proaktive statiske optimeringsteknikker til at konvertere den primære mellemkode til en mere effektiv mellemrepræsentation, samtidig med at semantikken i det oprindelige program bevares.

Endelig i sidste trin genereres bytekoden til den registrerede virtuelle maskine.

I en demo viste Marc Horowitz, at en React Native-applikation med Hermes det var fuldt indlæst ca. to sekunder hurtigere end det samme program indlæst uden Hermes.

Marc Horowitz sørgede for, at Hermes også reducerede størrelsen på APK til midten af ​​en React Native-lagret apps 41MB og eliminerede en fjerdedel af appens hukommelsesforbrug.

Med Hermes kan udviklere få brugerne til at interagere hurtigere med en applikation med færre forhindringer, såsom langsomme downloadtider og begrænsninger forårsaget af flere applikationer, der deler begrænsede hukommelsesressourcer, såsom: Især på telefonens niveauindgang.

Motoren understøtter en del af ECMAScript 2015 JavaScript-standarden (fuld support er det endelige mål) og er kompatibel med de fleste eksisterende React Native-applikationer. I Hermes blev det besluttet ikke at støtte lokal casting af eval (), "med" udtryk, refleksioner (Reflect og Proxy), Intl API API og nogle flag i RegExp.

For at aktivere Hermes i React Native-applikationen skal du blot tilføje indstillingen "enableHermes: true" til projektet. Det er også muligt at kompilere Hermes i CLI-interface-tilstand, som giver dig mulighed for at udføre vilkårlige JavaScript-filer fra kommandolinjen.

På samme tid Facebook planlægger ikke at tilpasse Hermes til Node.js og andre løsninger, der kun fokuserer på mobilapplikationer (Kompilering af AOT i stedet for JIT er mere optimal i sammenhæng med React Native-baserede mobile apps).

Microsoft gennemførte indledende præstationstest og viste, at når man bruger Hermes, er Microsoft Office til Android-applikationen tilgængelig til at arbejde på 1.1 sekunder.

Efter lanceringen, og den bruger 21.5 MB RAM, mens du bruger V8-motoren, bruges 1.4 sekunder ved lanceringen, og hukommelsesforbruget er 30 MB.


Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.