Facebook hat den Quellcode der Hermes JavaScript Engine veröffentlicht

Hermes

Facebook hat den Quellcode für die leichte Hermes-JavaScript-Engine geöffnet. Optimiert für die Ausführung von React Native Framework-basierten Anwendungen auf der Android-Plattform.

Der Facebook Software Engineer Marc Horowitz stellte die neue JavaScript-Engine auf der Chain React-Konferenz 2019 in Portland, Oregon, vor. Hermes ist ein neues Entwicklertool, das sich darauf konzentriert, die Startleistung von Apps auf die gleiche Weise zu verbessern, wie Facebook es bereits für seine Apps tut, und Apps auf Einstiegs-Smartphones effektiver zu machen.

Über Hermes

Die Hermes-Unterstützung ist ab der heutigen Version 0.60.2 in React Native integriert. Das Projekt ist dafür bekannt, Probleme mit langen Startzeiten für native JavaScript-Anwendungen und erheblichem Ressourcenverbrauch zu lösen. Der Code ist in C ++ geschrieben und wird unter der MIT-Lizenz vertrieben.

Von den Vorteilen der Verwendung von Hermes ist eine Verkürzung der Startzeit der Anwendungeine Verringerung des Speicherverbrauchs und eine Verringerung der Größe der Anwendung.

Beschleunigung von Anwendungen starten wird durch Vorkompilierung in einem Bytecode erreicht Kompakt und effizient in der Kompilierungsphase.

Um die Anwendung direkt auszuführen, wird eine virtuelle Maschine mit dem im Rahmen des Projekts entwickelten SemiSpace-Garbage Collector verwendet. Mit V8 sind die Schritte zum Parsen und Kompilieren des Quellcodes im Handumdrehen am längsten.

Die Hermes-Engine führt diese Phasen zur Kompilierungsphase und ermöglicht die Bereitstellung von Anwendungen in Form von optimiertem Bytecode.

Die JavaScript-Verarbeitung ist in mehrere Phasen unterteilt. Zunächst wird der Quellcode analysiert und die Zwischencodedarstellung (Hermes IR) basierend auf der SSA-Darstellung (Static Unique Assignment) generiert.

Darüber hinaus wird die Zwischendarstellung im Optimierer verarbeitet, der proaktive statische Optimierungstechniken verwendet, um den primären Zwischencode in eine effizientere Zwischendarstellung umzuwandeln, wobei die Semantik des ursprünglichen Programms beibehalten wird.

Schließlich wird in der letzten Stufe der Bytecode für die registrierte virtuelle Maschine generiert.

In einer Demo zeigte Marc Horowitz, dass eine React Native-Anwendung mit Hermes Es war ungefähr zwei Sekunden schneller vollständig geladen als dieselbe App, die ohne Hermes geladen wurde.

Marc Horowitz sorgte dafür, dass Hermes auch die Größe der APK reduzierte in die Mitte der 41 MB einer gespeicherten App von React Native und eliminierte ein Viertel der Speichernutzung der App.

Mit anderen Worten, mit Hermes können Entwickler Benutzer dazu bringen, schneller mit einer Anwendung zu interagieren, die weniger Hindernisse aufweist, z. B. langsame Downloadzeiten und Einschränkungen, die durch die gemeinsame Nutzung mehrerer Speicherressourcen durch mehrere Anwendungen verursacht werden, z.

Die Engine unterstützt einen Teil des ECMAScript 2015-JavaScript-Standards (vollständige Unterstützung ist das Endziel) und ist mit den meisten vorhandenen React Native-Anwendungen kompatibel. In Hermes wurde beschlossen, das lokale Casting von eval (), "mit" Ausdrücken, Reflexionen (Reflect und Proxy), Intl API API und einigen Flags in RegExp nicht zu unterstützen.

Um Hermes in der React Native-Anwendung zu aktivieren, fügen Sie dem Projekt einfach die Option "enableHermes: true" hinzu. Es ist auch möglich, Hermes im CLI-Schnittstellenmodus zu kompilieren, mit dem Sie beliebige JavaScript-Dateien über die Befehlszeile ausführen können.

Zur gleichen Zeit Facebook plant nicht, Hermes für Node.js und andere Lösungen anzupassen, sondern konzentriert sich nur auf mobile Anwendungen (Das Kompilieren von AOT anstelle von JIT ist im Kontext von auf React Native basierenden mobilen Apps optimaler.)

Microsoft führte vorläufige Leistungstests durch und zeigte, dass bei Verwendung von Hermes die Microsoft Office für Android-Anwendung in 1.1 Sekunden verfügbar ist.

Nach dem Start werden 21.5 MB RAM verbraucht, während die V8-Engine verwendet wird. Beim Start werden 1.4 Sekunden benötigt, und der Speicherverbrauch beträgt 30 MB.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.