Facebook ga ut kildekoden til Hermes JavaScript-motor

Hermes

Facebook har åpnet kildekoden for den lette Hermes JavaScript-motoren, optimalisert for å kjøre React Native rammebaserte applikasjoner på Android-plattformen.

Facebook Software Engineer Marc Horowitz avslørte den nye JavaScript-motoren på 2019 Chain React-konferansen i Portland, Oregon. Hermes er et nytt utviklerverktøy som fokuserer på å forbedre appens oppstartsytelse på samme måte som Facebook allerede gjør for appene sine og gjør apper mer effektive på smarttelefoner på innledende nivå.

Om Hermes

Hermes-støtte er innebygd i React Native fra og med dagens versjon 0.60.2. Prosjektet er anerkjent for å løse problemer med lange oppstartstider for native JavaScript-applikasjoner og betydelig ressursforbruk. Koden er skrevet i C ++ og distribuert under MIT-lisensen.

Av fordelene ved å bruke Hermes, er det en reduksjon i starttiden for applikasjonen, en reduksjon i minneforbruket og en reduksjon i størrelsen på applikasjonen.

Akselerasjon av søknader lansering oppnås ved å bruke forhåndskompilering i en bytekode kompakt og effektiv på kompileringsstadiet.

For å kjøre applikasjonen direkte brukes en virtuell maskin med SemiSpace søppeloppsamleren utviklet som en del av prosjektet. Med V8 er de lengste trinnene for å analysere kildekoden og kompilere den på farten.

Hermes-motoren tar disse trinnene til kompileringsfasen og lar applikasjoner leveres i form av optimalisert byte-kode.

JavaScript-behandling er delt inn i flere trinn. I utgangspunktet blir kildekoden analysert og den mellomliggende kodepresentasjonen (Hermes IR) genereres, basert på SSA-representasjonen (Static Unique Assignment).

I tillegg blir den mellomliggende representasjonen behandlet i optimalisereren, som bruker proaktive statiske optimaliseringsteknikker for å konvertere den primære mellomkoden til en mer effektiv mellomrepresentasjon, samtidig som den opprinnelige programmets semantikk bevares.

Endelig i siste trinn genereres bytekoden for den registrerte virtuelle maskinen.

I en demo viste Marc Horowitz at en React Native-applikasjon med Hermes den var fullastet omtrent to sekunder raskere enn den samme applikasjonen lastet inn uten Hermes.

Marc Horowitz sørget for at Hermes også reduserte størrelsen på APK til midten av en React Native lagret app 41 MB og eliminert en fjerdedel av appens minnebruk.

Med andre ord, med Hermes, kan utviklere få brukere til å kommunisere raskere med et program med færre hindringer, for eksempel langsomme nedlastingstider og begrensninger forårsaket av flere applikasjoner som deler begrensede minnesressurser, for eksempel: Spesielt på telefoninngang.

Motoren støtter deler av JavaScript-standarden ECMAScript 2015 (den fulle støtten er det endelige målet) og er kompatibel med de fleste eksisterende React Native-applikasjoner. I Hermes ble det besluttet å ikke støtte lokal casting av eval (), "med" uttrykk, refleksjoner (Reflect and Proxy), Intl API API og noen flagg i RegExp.

For å aktivere Hermes i React Native-applikasjonen, legger du bare til alternativet "enableHermes: true" i prosjektet. Det er også mulig å kompilere Hermes i CLI-grensesnittmodus, som lar deg utføre vilkårlige JavaScript-filer fra kommandolinjen.

Samtidig Facebook planlegger ikke å tilpasse Hermes for Node.js og andre løsninger, og fokuserer bare på mobilapplikasjoner (å kompilere AOT i stedet for JIT er mer optimalt i sammenheng med React Native-baserte mobilapper).

Microsoft gjennomførte foreløpige ytelsestester og viste at Microsoft Office for Android-applikasjonen når du bruker Hermes, er tilgjengelig for arbeid på 1.1 sekunder.

Etter lansering og den bruker 21.5 MB RAM, mens du bruker V8-motoren, brukes 1.4 sekunder ved lanseringen, og minneforbruket er 30 MB.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.