Facebook heeft de broncode van de Hermes JavaScript-engine vrijgegeven

Hermes

Facebook heeft de broncode geopend voor de lichtgewicht Hermes JavaScript-engine, geoptimaliseerd om React Native framework-gebaseerde applicaties op het Android-platform uit te voeren.

De Facebook Software Engineer Marc Horowitz heeft de nieuwe JavaScript-engine onthuld op de Chain React-conferentie van 2019 in Portland, Oregon​ Hermes is een nieuwe ontwikkelaarstool die zich richt op het verbeteren van de opstartprestaties van apps op dezelfde manier als Facebook dat al doet voor zijn apps en het effectiever maken van apps op instapsmartphones.

Over Hermes

Hermes-ondersteuning is ingebouwd in React Native vanaf de huidige versie 0.60.2. Het project staat bekend om het oplossen van problemen met lange opstarttijden voor native JavaScript-applicaties en aanzienlijk resourceverbruik. De code is geschreven in C ++ en gedistribueerd onder de MIT-licentie.

Van de voordelen van het gebruik van Hermes is er een verkorting van de starttijd van de applicatie, een afname van het geheugengebruik en een afname van de grootte van de applicatie.

Versnelling van applicaties lancering wordt bereikt door precompilatie in een bytecode te gebruiken compact en efficiënt in de compilatiefase.

Om de applicatie rechtstreeks uit te voeren, wordt een virtuele machine gebruikt met de SemiSpace garbage collector die als onderdeel van het project is ontwikkeld. Met V8 zijn de langste stappen om de broncode te ontleden en direct te compileren.

De Hermes-engine brengt deze fasen naar de compilatiefase en maakt het mogelijk dat applicaties worden geleverd in de vorm van geoptimaliseerde bytecode.

JavaScript-verwerking is onderverdeeld in verschillende fasen. In eerste instantie wordt de broncode geparseerd en wordt de tussenliggende codeweergave (Hermes IR) gegenereerd op basis van de SSA-weergave (Static Unique Assignment).

Bovendien wordt de tussenweergave verwerkt in de optimizer, die proactieve statische optimalisatietechnieken gebruikt om de primaire tussencode om te zetten naar een efficiëntere tussenweergave, met behoud van de semantiek van het originele programma.

Ten slotte wordt in de laatste fase de bytecode voor de geregistreerde virtuele machine gegenereerd.

In een demo liet Marc Horowitz zien dat een React Native-applicatie met Hermes het was ongeveer twee seconden sneller volledig geladen dan dezelfde applicatie die zonder Hermes werd geladen.

Marc Horowitz zorgde ervoor dat Hermes ook de APK verkleinde in het midden van de 41 MB van een React Native opgeslagen app en elimineerde een kwart van het geheugengebruik van de app.

Met andere woorden, met Hermes kunnen ontwikkelaars gebruikers sneller laten communiceren met een applicatie met minder obstakels, zoals trage downloadtijden en beperkingen die worden veroorzaakt door meerdere applicaties die beperkte geheugenbronnen delen, zoals: Vooral op het niveau van telefooninvoer.

De engine ondersteunt een deel van de ECMAScript 2015 JavaScript-standaard (de volledige ondersteuning is het einddoel) en is compatibel met de meeste bestaande React Native-applicaties. In Hermes werd besloten om lokale casting van eval (), "met" expressies, reflecties (Reflect en Proxy), Intl API API en enkele vlaggen in RegExp niet te ondersteunen.

Om Hermes in de React Native-applicatie in te schakelen, voegt u eenvoudig de optie "enableHermes: true" toe aan het project. Het is ook mogelijk om Hermes te compileren in de CLI-interfacemodus, waarmee u willekeurige JavaScript-bestanden vanaf de opdrachtregel kunt uitvoeren.

Al mismo tiempo, Facebook is niet van plan Hermes aan te passen voor Node.js en andere oplossingen, en richt zich alleen op mobiele applicaties (AOT compileren in plaats van JIT is meer optimaal in de context van op React Native gebaseerde mobiele apps).

Microsoft voerde voorlopige prestatietests uit en toonde aan dat bij gebruik van Hermes de Microsoft Office voor Android-applicatie in 1.1 seconde beschikbaar is om te werken.

Na de lancering verbruikt het 21.5 MB RAM, terwijl het bij gebruik van de V8-motor 1.4 seconden wordt besteed aan het opstarten en het geheugenverbruik 30 MB is.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.