Facebook открыл код JavaScript-движка Hermes

Кoмпaния Facebook oткрылa исxoдныe тeксты лeгкoвeснoгo JavaScript-движкa Hermes, oптимизирoвaннoгo пользу кого выпoлнeния прилoжeний нa бaзe фрeймвoркa React Native нa плaтфoрмe Android. Пoддeржкa Hermes встрoeнa в React Native начиная с сегодняшнего выпуска 0.60.2. Редакция призван решить проблемы с большим временем запуска нативных JavaScript-приложений и значительным потреблением ресурсов. Шифр написан на языке C++ и распространяется лещадь лицензией MIT. Ускорение запуска приложений достигается по причине применению на этапе сборки предкомпиляции в сжатый и эффективный байткод. Для непосредственного выполнения приложения применяется разработанная в рамках проекта виртуальная оборудование со сборщиком мусора SemiSpace. Близ применении V8 наиболее длительными являются стадии парсинга исходного заключение и его компиляции на лету. Hermes выносит сии стадии на этап сборки и позволяет доставлять приложения в форме оптимизированного байткода. Опыливание JavaScript разделяется на несколько стадий. Перво-наперво осуществляется парсинг исходных текстов и получение промежуточного представления кода (Hermes IR), основанного в представлении SSA (Static Single Assignment). Опосля, промежуточное представление обрабатывается в оптимизаторе, что применяет техники упреждающей статической оптимизиации во (избежание преобразования первичного промежуточного кода в сильнее эффективное промежуточное представление, сохраняя рядом этом оригинальную семантику программы. Нате последнем этапе генерируется байткод во (избежание регистровой виртуальной машины. В движке поддерживается выпуск JavaScript-стандарта ECMAScript 2015 (конечной целью является его полная подкрепление) и обеспечивается совместимость с большинством существующих приложений React Native. В Hermes заметано не поддерживать локальный запуск eval(), выражения "with", отражения (Reflect и Proxy), API Intl API и кой-какие флаги в RegExp. Также возможна монтирование Hermes в режиме CLI-интерфейса, позволяющая провести) в жизнь произвольные JavaScript-файлы из командной строки. Присутствие этом Facebook не планирует облегчить Hermes для Node.js и других решений, сосредотачивая первый план только на мобильных приложениях (AOT-сочинение вместо JIT наиболее оптимальна в контексте мобильных приложений бери базе React Native). Проведённое сотрудниками Microsoft предварительное отлаживание производительности показало, что при использовании Hermes адденда Microsoft Office для Android становится посильно для работы через 1.1 сек. там запуска и потребляет 21.5MB ОЗУ, в ведь время как при использовании отметина V8 на запуск тратится 1.4 сек., а израсходование памяти составляет 30MB. Источник: http://www.opennet.ru/opennews/art.shtml?num=51082