Facebook ашық бастапқы Hermes JavaScript қозғалтқышы

Facebook ашық бастапқы коды бар жеңіл JavaScript қозғалтқышы Hermes, фреймворкке негізделген қолданбаларды іске қосу үшін оңтайландырылған Түпнұсқа реакция Android платформасында. Hermes қолдауы кіріктірілген React Native бағдарламасында бүгінгі 0.60.2 шығарылымынан бастап. Жоба жергілікті JavaScript қолданбалары үшін ұзақ іске қосу уақыттары және маңызды ресурстарды тұтыну мәселелерін шешуге арналған. Код жазылған C++ тілінде және MIT лицензиясы бойынша таратылады.

Hermes пайдаланудың артықшылықтарының арасында қолданбаны іске қосу уақытының қысқаруы, жадты тұтынудың азаюы және қолданба көлемінің азаюы бар. V8 пайдалану кезінде ең көп уақытты қажет ететін кезеңдер бастапқы кодты талдау және оны жылдам құрастыру кезеңдері болып табылады. Hermes бұл қадамдарды құрастыру кезеңіне әкеледі және қолданбаларды ықшам және тиімді байт-код түрінде жеткізуге мүмкіндік береді.

Қолданбаны тікелей орындау үшін жоба аясында әзірленген виртуалды машина SemiSpace қоқыс жинағышымен пайдаланылады, ол блоктарды қажет болған жағдайда ғана таратады (Сұраныс бойынша), блоктарды жылжыту мен дефрагментациялауды қолдайды, бос жадты операциялық жүйеге қайтарады, мерзімді түрде. бүкіл үйменің мазмұнын сканерлеу.

JavaScript өңдеу бірнеше кезеңге бөлінеді. Біріншіден, бастапқы мәтіндер талданады және кодтың аралық көрінісі жасалады (Гермес IR), ұсынуға негізделген S.S.A. (Статикалық жалғыз тағайындау). Әрі қарай, аралық көрініс оңтайландырғышта өңделеді, ол бағдарламаның бастапқы семантикасын сақтай отырып, бастапқы аралық кодты тиімдірек аралық көрініске түрлендіру үшін алға статикалық оңтайландыру әдістерін қолданады. Соңғы кезеңде тіркелген виртуалды машинаның байт коды жасалады.

Қозғалтқышта тарапынан қолдау тапты ECMAScript 2015 JavaScript стандартының бөлігі (түпкілікті мақсат - оны толығымен қолдау) және қолданыстағы React Native қолданбаларының көпшілігімен үйлесімділікті қамтамасыз етеді. Hermes мәлімдемелермен, рефлексиямен (Reflect және Proxy), Intl API және RegExp ішіндегі кейбір жалаулармен eval(), жергілікті орындалуын қолдамауды шешті. Hermes қолданбасын React Native қолданбасында қосу үшін жобаға «enableHermes: true» опциясын қосыңыз. Сондай-ақ, командалық жолдан ерікті JavaScript файлдарын орындауға мүмкіндік беретін Hermes-ті CLI режимінде құруға болады. Түзету үшін жалқау компиляция режимі қол жетімді, ол JavaScript-ті әзірлеу барысында әр уақытта компиляциялауға емес, құрылғыда байт-кодты жылдам жасауға мүмкіндік береді.

Бұл ретте Facebook тек мобильді қосымшаларға назар аудара отырып, Hermes for Node.js және басқа шешімдерді бейімдеуді жоспарлап отырған жоқ (JIT орнына AOT компиляциясы шектеулі жедел жады және баяу Flash бар мобильді жүйелер контекстінде ең оңтайлы). Майкрософт қызметкерлері жүргізген өнімділікті алдын ала тексеру ашылдыHermes қолданбасын пайдаланған кезде Android жүйесіне арналған Microsoft Office қолданбасы 1.1 секундта пайдалануға қолжетімді болады. іске қосқаннан кейін және 21.5 МБ жедел жадты тұтынады, ал V8 қозғалтқышын пайдаланған кезде іске қосуға 1.4 секунд кетеді, ал жад тұтынуы 30 МБ құрайды.

Қосымша: Facebook жарияланған жеке сынақ нәтижелері. Hermes қолданбасын MatterMost қолданбасымен пайдаланған кезде жұмысқа қолжетімділікті бастау уақыты (TTI, өзара әрекеттесу уақыты) 4.30-дан 2.01 секундқа дейін қысқарды, APK пакетінің көлемі 41-ден 22 МБ-қа дейін, жад тұтынуы 185-тен 136-ға дейін қысқарды. МБ.

Ақпарат көзі: opennet.ru

пікір қалдыру