Facebook iepen boarne Hermes JavaScript-motor

Facebook iepen boarne ljochtgewicht JavaScript-motor Hermes, optimalisearre foar it útfieren fan applikaasjes basearre op it ramt React Native op it Android-platfoarm. Hermes stipe ynboude yn React Native begjinnend mei de hjoeddeiske 0.60.2-release. It projekt is ûntworpen om problemen op te lossen mei lange opstarttiden foar native JavaScript-applikaasjes en signifikant boarneferbrûk. Koade skreaun troch yn C ++ en ferspraat ûnder de MIT-lisinsje.

Under de foardielen fan it brûken fan Hermes is d'r in fermindering fan opstarttiid fan applikaasjes, in ôfnimming fan ûnthâldferbrûk en in fermindering fan applikaasjegrutte. By it brûken fan V8 binne de meast tiidslinend stadia de stadia fan it parsearjen fan 'e boarnekoade en it kompilearjen op 'e flecht. Hermes bringt dizze stappen nei it boustadium en lit applikaasjes wurde levere yn 'e foarm fan kompakte en effisjinte bytekoade.

Om de applikaasje direkt út te fieren, wurdt in firtuele masine ûntwikkele binnen it projekt brûkt mei de SemiSpace garbage collector, dy't blokken allinich distribearret as nedich (On-demand), stipet it ferpleatsen en defragmentearjen fan blokken, it werombringen fan befrijde ûnthâld nei it bestjoeringssysteem, sûnder periodyk skennen fan de ynhâld fan 'e hiele heap.

JavaScript-ferwurking is ferdield yn ferskate stadia. Earst wurde de boarneteksten parseard en in tuskenfoarstelling fan de koade wurdt generearre (Hermes IR), basearre op de foarstelling S.S.A. (Statyske Single Opdracht). Dêrnei wurdt de tuskenfertsjintwurdiging ferwurke yn in optimizer, dy't foarút statyske optimisaasjetechniken tapast om de primêre intermediate koade te transformearjen yn in effisjintere tuskenrepresentaasje, wylst de orizjinele semantyk fan it programma behâldt. Op it lêste stadium wurdt de bytekoade foar de registrearre firtuele masine generearre.

Yn de motor stipe troch diel fan 'e ECMAScript 2015 JavaScript-standert (it ultime doel is it folslein te stypjen) en leveret kompatibiliteit mei de measte besteande React Native-applikaasjes. Hermes hat besletten net te stypjen lokale útfiering fan eval (), mei útspraken, refleksje (Reflect and Proxy), Intl API en guon flaggen yn RegExp. Om Hermes yn te skeakeljen yn in React Native-applikaasje, foegje gewoan de opsje "Hermes ynskeakelje: wier" ta oan it projekt. It is ek mooglik om Hermes yn CLI-modus te bouwen, wêrtroch jo willekeurige JavaScript-bestannen kinne útfiere fanút de kommandorigel. In luie kompilaasjemodus is beskikber foar debuggen, wêrtroch jo JavaScript net elke kear kinne kompilearje tidens it ûntwikkelingsproses, mar bytekoade op 'e flecht al op it apparaat generearje.

Tagelyk is Facebook net fan plan om Hermes oan te passen foar Node.js en oare oplossingen, allinich rjochte op mobile applikaasjes (AOT-kompilaasje ynstee fan JIT is it meast optimaal yn 'e kontekst fan mobile systemen, dy't beheinde RAM en stadiger Flash hawwe). Foarriedige prestaasjestests útfierd troch Microsoft-meiwurkers iepenbieredat by it brûken fan Hermes, de Microsoft Office-applikaasje foar Android beskikber is foar gebrûk yn 1.1 sekonden. nei it opstarten en ferbrûkt 21.5 MB RAM, wylst by it brûken fan de V8-motor duorret 1.4 sekonden in start en ûnthâld konsumpsje is 30MB.

Tafoeging: Facebook publisearre eigen testresultaten. By it brûken fan Hermes mei de MatterMost-applikaasje fermindere de tiid om beskikberens foar wurk te begjinnen (TTI, Time To Interact) fan 4.30 nei 2.01 sekonden, de grutte fan it APK-pakket waard fermindere fan 41 nei 22 MB, en ûnthâldferbrûk fan 185 nei 136 MB.

Boarne: opennet.ru

Add a comment