Motori JavaScript Hermes me burim të hapur Facebook

Motori i lehtë JavaScript me burim të hapur të Facebook Hermes, i optimizuar për ekzekutimin e aplikacioneve bazuar në kornizë Reagju amtare në platformën Android. Mbështetja e Hermes të ndërtuara në React Native duke filluar me lëshimin e sotëm 0.60.2. Projekti është krijuar për të zgjidhur problemet me kohët e gjata të fillimit për aplikacionet vendase JavaScript dhe konsumin e konsiderueshëm të burimeve. Kodi shkruar nga në C++ dhe shpërndahet nën licencën MIT.

Ndër avantazhet e përdorimit të Hermes, ka një reduktim në kohën e fillimit të aplikacionit, një ulje të konsumit të memories dhe një ulje në madhësinë e aplikacionit. Kur përdorni V8, fazat që kërkojnë më shumë kohë janë fazat e analizimit të kodit burimor dhe përpilimit të tij menjëherë. Hermes i sjell këto hapa në fazën e ndërtimit dhe lejon që aplikacionet të dorëzohen në formën e bytekodit kompakt dhe efikas.

Për të ekzekutuar drejtpërdrejt aplikacionin, një makinë virtuale e zhvilluar brenda projektit përdoret me kolektorin e mbeturinave SemiSpace, i cili shpërndan blloqe vetëm sipas nevojës (On-demand), mbështet lëvizjen dhe defragmentimin e blloqeve, kthimin e memories së liruar në sistemin operativ, pa periodikisht skanimi i përmbajtjes së të gjithë grumbullit.

Përpunimi i JavaScript ndahet në disa faza. Së pari, tekstet burimore analizohen dhe krijohet një paraqitje e ndërmjetme e kodit (Hermes IR), bazuar në përfaqësimin S.S.A. (Detyrë e vetme statike). Më pas, përfaqësimi i ndërmjetëm përpunohet në një optimizues, i cili zbaton teknikat e optimizimit statik përpara për të transformuar kodin e ndërmjetëm primar në një paraqitje të ndërmjetme më efikase duke ruajtur semantikën origjinale të programit. Në fazën e fundit, gjenerohet bytekodi për makinën virtuale të regjistruar.

Në motor mbeshtetur nga pjesë e standardit JavaScript ECMAScript 2015 (qëllimi përfundimtar është ta mbështesë plotësisht atë) dhe siguron përputhshmëri me shumicën e aplikacioneve ekzistuese React Native. Hermes ka vendosur të mos mbështesë ekzekutimin lokal të eval(), me deklarata, reflektim (Reflect dhe Proxy), API Intl dhe disa flamuj në RegExp. Për të aktivizuar Hermes në një aplikacion React Native, thjesht shtoni opsionin "enableHermes: true" në projekt. Është gjithashtu e mundur të ndërtohet Hermes në modalitetin CLI, duke ju lejuar të ekzekutoni skedarë arbitrare JavaScript nga linja e komandës. Një modalitet i përpilimit dembel është i disponueshëm për korrigjimin e gabimeve, i cili ju lejon të mos përpiloni JavaScript çdo herë gjatë procesit të zhvillimit, por të gjeneroni bajtkod në fluturim tashmë në pajisje.

Në të njëjtën kohë, Facebook nuk planifikon të adaptojë Hermes për Node.js dhe zgjidhje të tjera, duke u fokusuar vetëm në aplikacionet celulare (përpilimi AOT në vend të JIT është më optimali në kontekstin e sistemeve celulare, të cilat kanë RAM të kufizuar dhe Flash më të ngadaltë). Testimi paraprak i performancës i kryer nga punonjësit e Microsoft zbuluarqë kur përdorni Hermes, aplikacioni Microsoft Office për Android bëhet i disponueshëm për përdorim në 1.1 sekonda. pas fillimit dhe konsumon 21.5MB RAM, ndërsa kur përdorni motorin V8 duhen 1.4 sekonda për të nisur dhe konsumi i memories është 30MB.

Shtim: Facebook publikuar rezultatet e testimit të vet. Kur përdorni Hermes me aplikacionin MatterMost, koha për të filluar disponueshmërinë për punë (TTI, Time To Interact) u ul nga 4.30 në 2.01 sekonda, madhësia e paketës APK u zvogëlua nga 41 në 22 MB dhe konsumi i kujtesës nga 185 në 136 MB.

Burimi: opennet.ru

Shto një koment