Facebook uvolnil zdrojový kód motoru Hermes JavaScript

Hermes

Facebook otevřel zdrojový kód pro lehký motor Hermes JavaScript, optimalizováno pro běh aplikací založených na React Native framework na platformě Android.

Softwarový inženýr Facebooku Marc Horowitz odhalil nový motor JavaScriptu na konferenci Chain React 2019 v Portlandu v Oregonu. Hermes je nový vývojářský nástroj, který se zaměřuje na zlepšování výkonu při spouštění aplikací stejným způsobem, jakým to již Facebook dělá pro své aplikace, a na zefektivnění aplikací na smartphonech základní úrovně.

O Hermesovi

Podpora Hermes je zabudována do React Native od dnešní verze 0.60.2. Projekt je uznáván pro řešení problémů s dlouhými časy spouštění pro nativní aplikace JavaScriptu a významnou spotřebou zdrojů. Kód je napsán v C ++ a distribuován pod licencí MIT.

Z výhod používání Hermes je zkrácení doby zahájení aplikace, snížení spotřeby paměti a zmenšení velikosti aplikace.

Zrychlení aplikací zahájení je dosaženo použitím předkompilace v bytecode kompaktní a efektivní ve fázi kompilace.

Chcete-li spustit aplikaci přímo, používá se virtuální počítač se SemiSpace garbage collector vyvinutým jako součást projektu. U V8 jsou nejdelší kroky k analýze zdrojového kódu a jeho okamžité kompilaci.

Stroj Hermes tyto fáze převádí do fáze kompilace a umožňuje doručování aplikací ve formě optimalizovaného bajtového kódu.

Zpracování JavaScriptu je rozděleno do několika fází. Zpočátku se zdrojový kód analyzuje a generuje se reprezentace mezilehlého kódu (Hermes IR) na základě reprezentace SSA (Static Unique Assignment).

Kromě toho je zprostředkující reprezentace zpracována v optimalizátoru, který používá proaktivní statické optimalizační techniky k převodu primárního mezilehlého kódu na efektivnější zprostředkovanou reprezentaci při zachování sémantiky původního programu.

Nakonec v poslední fázi se vygeneruje bajtový kód pro registrovaný virtuální stroj.

V ukázce Marc Horowitz ukázal, že aplikace React Native s Hermesem bylo plně načteno asi o dvě sekundy rychleji než stejná aplikace načtená bez Hermese.

Marc Horowitz se ujistil, že Hermes také zmenšil velikost APK do středu úložiště React Native o velikosti 41 MB a eliminoval čtvrtinu využití paměti aplikace.

Jinými slovy, díky Hermes mohou vývojáři přimět uživatele k rychlejší interakci s aplikací s menšími překážkami, jako jsou pomalé časy stahování a omezení způsobená více aplikacemi, které sdílejí omezené paměťové zdroje, například: Zejména na úrovni telefonů.

Modul podporuje část standardu JavaScriptu ECMAScript 2015 (jeho úplná podpora je konečným cílem) a je kompatibilní s většinou existujících aplikací React Native. V Hermes bylo rozhodnuto nepodporovat lokální casting výrazů eval (), "with", odrazů (Reflect a Proxy), API Intl API a některých příznaků v RegExp.

Chcete-li povolit Hermes v aplikaci React Native, jednoduše přidejte do projektu možnost „enableHermes: true“. Je také možné kompilovat Hermes v režimu rozhraní CLI, což vám umožňuje spouštět libovolné soubory JavaScriptu z příkazového řádku.

Současně Facebook neplánuje přizpůsobit Hermes pro Node.js a další řešení, zaměřuje se pouze na mobilní aplikace (kompilace AOT místo JIT je optimálnější v kontextu mobilních aplikací založených na React Native).

Společnost Microsoft provedla předběžné testy výkonu a ukázala, že při použití Hermes je aplikace Microsoft Office pro Android k dispozici pro práci za 1.1 sekundy.

Po spuštění a spotřebovává 21.5 MB RAM, zatímco při použití motoru V8 se při spuštění spotřebuje 1.4 sekundy a spotřeba paměti je 30 MB.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.