Facebook open sourced Hermes magna JavaScript

Facebook open sourced magna JavaScript ħafifa Hermes, ottimizzat għat-tħaddim ta 'applikazzjonijiet ibbażati fuq il-qafas Reattiv Nattiv fuq il-pjattaforma Android. Appoġġ Hermes inkorporat f'React Native li jibda bir-rilaxx tal-lum 0.60.2. Il-proġett huwa ddisinjat biex isolvi problemi b'ħinijiet twal ta 'startjar għal applikazzjonijiet nattivi JavaScript u konsum sinifikanti ta' riżorsi. Kodiċi miktub minn f'C++ u mqassma taħt il-liċenzja MIT.

Fost il-vantaġġi tal-użu ta 'Hermes, hemm tnaqqis fil-ħin tal-istartjar tal-applikazzjoni, tnaqqis fil-konsum tal-memorja u tnaqqis fid-daqs tal-applikazzjoni. Meta tuża V8, l-aktar stadji li jieħdu l-ħin huma l-istadji tal-parsing tal-kodiċi tas-sors u l-kompilazzjoni tiegħu fuq il-fly. Hermes iġib dawn il-passi għall-istadju tal-bini u jippermetti li l-applikazzjonijiet jiġu kkunsinnati fil-forma ta 'bytecode kompatt u effiċjenti.

Biex tesegwixxi direttament l-applikazzjoni, tintuża magna virtwali żviluppata fi ħdan il-proġett mal-kollettur taż-żibel SemiSpace, li tqassam blokki biss kif meħtieġ (On-demand), tappoġġja ċ-ċaqliq u d-deframmentazzjoni tal-blokki, u tirritorna memorja meħlusa lis-sistema operattiva, mingħajr perjodikament tiskennja l-kontenut tal-borġ kollu.

L-ipproċessar JavaScript huwa maqsum f'diversi stadji. L-ewwel, it-testi sors huma parsed u rappreżentazzjoni intermedja tal-kodiċi hija ġġenerata (Hermes IR), ibbażata fuq ir-rappreżentazzjoni S.S.A. (Assenjament Uniku Statiku). Sussegwentement, ir-rappreżentazzjoni intermedja hija pproċessata f'ottimizzatur, li japplika tekniki ta 'ottimizzazzjoni statika 'l quddiem biex jittrasforma l-kodiċi intermedju primarju f'rappreżentazzjoni intermedja aktar effiċjenti filwaqt li tippreserva s-semantika oriġinali tal-programm. Fl-aħħar stadju, jiġi ġġenerat il-bytecode għall-magna virtwali reġistrata.

Fil-magna appoġġjat minn parti mill-istandard ECMAScript 2015 JavaScript (l-għan aħħari huwa li jappoġġjah bis-sħiħ) u jipprovdi kompatibilità mal-biċċa l-kbira tal-applikazzjonijiet React Native eżistenti. Hermes iddeċieda li ma jappoġġjax l-eżekuzzjoni lokali ta 'eval(), b'dikjarazzjonijiet, riflessjoni (Rifletti u Prokura), API Intl u xi bnadar f'RegExp. Biex tippermetti Hermes f'applikazzjoni React Native, żid biss l-għażla "enableHermes: true" mal-proġett. Huwa wkoll possibbli li tibni Hermes fil-modalità CLI, li tippermettilek tesegwixxi fajls JavaScript arbitrarji mil-linja tal-kmand. Mod ta 'kumpilazzjoni għażżien huwa disponibbli għad-debugging, li jippermettilek li ma tiġborx JavaScript kull darba matul il-proċess ta' żvilupp, iżda li tiġġenera bytecode fuq il-fly diġà fuq l-apparat.

Fl-istess ħin, Facebook ma jippjanax li jadatta Hermes għal Node.js u soluzzjonijiet oħra, li jiffoka biss fuq applikazzjonijiet mobbli (il-kumpilazzjoni AOT minflok JIT hija l-aktar ottimali fil-kuntest ta 'sistemi mobbli, li għandhom RAM limitat u Flash aktar bil-mod). Ittestjar tal-prestazzjoni preliminari mwettaq mill-impjegati tal-Microsoft żvelatli meta tuża Hermes, l-applikazzjoni tal-Microsoft Office għal Android issir disponibbli għall-użu f'1.1 sekondi. wara l-istartjar u jikkonsma 21.5MB ta’ RAM, filwaqt li meta tuża l-magna V8 tieħu 1.4 sekondi biex tibda u l-konsum tal-memorja huwa ta’ 30MB.

Żieda: Facebook ippubblikati riżultati tat-test proprji. Meta tuża Hermes mal-applikazzjoni MatterMost, il-ħin biex tibda d-disponibbiltà għax-xogħol (TTI, Time To Interact) naqas minn 4.30 għal 2.01 sekondi, id-daqs tal-pakkett APK tnaqqas minn 41 għal 22 MB, u l-konsum tal-memorja minn 185 għal 136 MB.

Sors: opennet.ru

Żid kumment