Facebook Open Source Hermes JavaScript Motor

Facebook Open-Source Liichtgewiicht JavaScript Motor Hermes, optimiséiert fir Uwendungen op Basis vum Kader ze lafen Reagéieren op der Android Plattform. Hermes Ënnerstëtzung gebaut-an am React Native ugefaange mat der haut 0.60.2 Verëffentlechung. De Projet ass entwéckelt fir Probleemer mat laange Startzäiten fir gebierteg JavaScript Uwendungen a bedeitende Ressourceverbrauch ze léisen. Code geschriwwen vun an C++ a verdeelt ënner der MIT Lizenz.

Ënnert de Virdeeler vum Hermes ze benotzen ass et eng Reduktioun vun der Applikatiounsstartzäit, eng Ofsenkung vum Erënnerungsverbrauch an eng Reduktioun vun der Applikatiounsgréisst. Wann Dir V8 benotzt, sinn déi Zäitopwendegst Etappe d'Etappe vum Parsing vum Quellcode an der Zesummesetzung vum Fluch. Hermes bréngt dës Schrëtt op d'Baustadium an erlaabt Uwendungen a Form vu kompakten an effizienten Bytecode geliwwert ze ginn.

Fir d'Applikatioun direkt auszeféieren, gëtt eng virtuell Maschinn, déi am Projet entwéckelt gouf, mam SemiSpace Müllsammler benotzt, deen d'Blöcke nëmmen wéi néideg verdeelt (On-Demand), ënnerstëtzt d'Bewegung an d'Defragmentéierung vu Blocken, d'Befreiung vum Gedächtnis an de Betribssystem zréckzebréngen, ouni periodesch Scannen den Inhalt vum ganze Koup.

JavaScript Veraarbechtung ass an e puer Etappen opgedeelt. Als éischt ginn d'Quelltexter parséiert an eng Zwëschenvertriedung vum Code gëtt generéiert (Hermes IR), baséiert op der Representatioun S.S.A. (Statesch Single Aufgab). Als nächst gëtt d'Zwëschenvertriedung an engem Optimizer veraarbecht, deen fortgeschratt statesch Optimiséierungstechniken applizéiert fir de primäre Zwëschecode an eng méi effizient Zwëschenvertriedung ze transforméieren, wärend déi ursprénglech Semantik vum Programm erhale bleift. Op der leschter Stuf gëtt de Bytecode fir déi registréiert virtuell Maschinn generéiert.

Am Motor ënnerstëtzt vun Deel vum ECMAScript 2015 JavaScript Standard (den ultimativen Zil ass et voll z'ënnerstëtzen) a bitt Kompatibilitéit mat de meescht existent React Native Uwendungen. Hermes huet decidéiert net lokal Ausféierung vun eval z'ënnerstëtzen (), mat Aussoen, Reflexioun (Reflexioun an Proxy), Intl API an e puer Fändelen an RegExp. Fir Hermes an enger React Native Applikatioun z'aktivéieren, füügt just d'Optioun "enableHermes: true" un de Projet un. Et ass och méiglech Hermes am CLI Modus ze bauen, wat Iech erlaabt arbiträr JavaScript Dateien aus der Kommandozeil auszeféieren. E faulen Kompiléierungsmodus ass verfügbar fir Debugging, wat Iech erlaabt JavaScript net all Kéier während dem Entwécklungsprozess ze kompiléieren, mee Bytecode op der Flucht schonn um Apparat ze generéieren.

Zur selwechter Zäit plangt Facebook net den Hermes fir Node.js an aner Léisungen unzepassen, fokusséiert nëmmen op mobil Applikatiounen (AOT-Kompilatioun amplaz JIT ass am meeschten optimal am Kontext vu mobilen Systemer, déi limitéiert RAM a méi lues Flash hunn). Virleefeg Leeschtungstest vu Microsoft Mataarbechter opgedecktdatt wann Dir Hermes benotzt, d'Microsoft Office Applikatioun fir Android an 1.1 Sekonnen verfügbar ass. no Startup a verbraucht 21.5 MB RAM, während wann Dir de V8-Moteur benotzt, dauert et 1.4 Sekonnen fir ze starten an Erënnerungsverbrauch ass 30 MB.

Zousätzlech: Facebook publizéiert eegen Testresultater. Wann Dir Hermes mat der MatterMost Applikatioun benotzt, ass d'Zäit fir d'Disponibilitéit fir d'Aarbecht ze starten (TTI, Time To Interact) vun 4.30 op 2.01 Sekonnen erofgaang, d'Gréisst vum APK Package gouf vun 41 op 22 MB reduzéiert, an de Gedächtnisverbrauch vun 185 op 136 MB.

Source: opennet.ru

Setzt e Commentaire