Facebook je izdal izvorno kodo mehanizma Hermes JavaScript

Hermes

Facebook je odprl izvorno kodo za lahki Hermesov JavaScript, optimiziran za izvajanje aplikacij na osnovi platforme React Native na platformi Android.

Facebook inženir programske opreme Marc Horowitz je novi motor JavaScript razkril na konferenci Chain React 2019 v Portlandu v Oregonu. Hermes je novo orodje za razvijalce, ki se osredotoča na izboljšanje učinkovitosti zagona aplikacij na enak način, kot to Facebook že počne za svoje aplikacije, in izboljšanje učinkovitosti aplikacij na pametnih telefonih začetnega razreda.

O Hermesu

Podpora za Hermes je vgrajena v React Native od današnje različice 0.60.2. Projekt je prepoznaven po reševanju problemov z dolgimi zagonskimi časi za izvorne aplikacije JavaScript in znatno porabo virov. Koda je napisana v jeziku C ++ in se distribuira pod licenco MIT.

Med prednostmi uporabe Hermesa je skrajšanje začetnega časa aplikacije, zmanjšanje porabe pomnilnika in zmanjšanje velikosti aplikacije.

Pospeševanje aplikacij kosilo je dosežen z uporabo predkompilacije v bajtkodo kompakten in učinkovit v fazi priprave.

Za neposreden zagon aplikacije se uporablja navidezni stroj z zbiralnikom smeti SemiSpace, ki je bil razvit kot del projekta. Pri V8 so najdaljši koraki za razčlenitev izvorne kode in njeno sprotno sestavljanje.

Hermesov mehanizem te stopnje pripelje do stopnje prevajanja in omogoča dostavo aplikacij v obliki optimizirane bajtne kode.

Obdelava JavaScript je razdeljena na več stopenj. Prvotno se izvorna koda razčleni in na podlagi predstavitve SSA (Static Unique Assignment) se generira vmesna predstavitev kode (Hermes IR).

Poleg tega se vmesna predstavitev obdela v optimizatorju, ki s proaktivnimi tehnikami statične optimizacije pretvori primarno vmesno kodo v učinkovitejšo vmesno predstavitev, hkrati pa ohrani semantiko prvotnega programa.

Na koncu se v zadnji fazi generira bajtna koda za registrirani navidezni stroj.

V predstavitvi je Marc Horowitz pokazal, da je React Native aplikacija s Hermesom v celoti je bil naložen približno dve sekundi hitreje kot ista aplikacija, naložena brez Hermesa.

Marc Horowitz je poskrbel, da je tudi Hermes zmanjšal velikost APK-ja do sredine 41MB shranjene aplikacije React Native in odstranila četrtino pomnilnika aplikacije.

Z drugimi besedami, s Hermesom lahko razvijalci spodbudijo uporabnike k hitrejši interakciji z aplikacijo z manj ovirami, na primer počasnim časom prenosa in omejitvami, ki jih povzroča več aplikacij, ki si delijo omejene vire pomnilnika, na primer: Zlasti na vhodnih telefonih.

Motor podpira del standarda JavaScript ECMAScript 2015 (njegova popolna podpora je končni cilj) in je združljiv z večino obstoječih aplikacij React Native. V Hermesu so se odločili, da ne bodo podpirali lokalnega vlivanja eval (), "z" izrazi, odsevi (Reflect in Proxy), API za Intl API in nekatere zastavice v RegExp.

Če želite omogočiti Hermes v aplikaciji React Native, v projekt preprosto dodajte možnost "enableHermes: true". Možno je tudi prevesti Hermes v načinu vmesnika CLI, ki omogoča izvajanje poljubnih datotek JavaScript iz ukazne vrstice.

Hkrati Facebook ne namerava prilagoditi Hermesa za Node.js in druge rešitve, s poudarkom le na mobilnih aplikacijah (sestavljanje AOT namesto JIT je bolj optimalno v kontekstu mobilnih aplikacij, ki temeljijo na React Native).

Microsoft je opravil predhodne teste učinkovitosti in pokazal, da je pri uporabi programa Hermes aplikacija Microsoft Office za Android na voljo za delovanje v 1.1 sekunde.

Po zagonu porabi 21.5 MB RAM-a, medtem ko uporabljate motor V8, se ob zagonu porabi 1.4 sekunde, poraba pomnilnika pa 30 MB.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.