Facebook пусна изходния код на JavaScript двигателя на Hermes

Hermes

Facebook отвори изходния код за лекия двигател на Hermes JavaScript, оптимизиран да изпълнява приложения, базирани на React Native framework на платформата Android.

Софтуерният инженер на Facebook Марк Хоровиц разкри новия JavaScript двигател на конференцията Chain React през 2019 г. в Портланд, Орегон. Hermes е нов инструмент за разработчици, който се фокусира върху подобряването на производителността на стартиране на приложения по същия начин, по който Facebook вече го прави за своите приложения и прави приложенията по-ефективни на смартфоните от начално ниво.

За Хермес

Поддръжката на Hermes е вградена в React Native от днешната версия 0.60.2. Проектът е признат за решаване на проблеми с дълги стартови времена за собствени приложения на JavaScript и значително потребление на ресурси. Кодът е написан на C ++ и се разпространява под лиценза MIT.

От предимствата на използването на Hermes има намаляване на времето за стартиране на приложението, намаляване на потреблението на памет и намаляване на размера на приложението.

Ускоряване на приложенията стартиране се постига чрез използване на предварителна компилация в байт код компактен и ефективен на етапа на компилация.

За директно стартиране на приложението се използва виртуална машина с колектора за боклук SemiSpace, разработен като част от проекта. При V8 най-дългите са стъпките за синтактичен анализ на изходния код и компилирането му в движение.

Двигателят на Hermes отвежда тези етапи до етапа на компилация и позволява приложенията да се доставят под формата на оптимизиран байт код.

Обработката на JavaScript е разделена на няколко етапа. Първоначално изходният код се анализира и се генерира междинно представяне на код (Hermes IR) въз основа на представяне на SSA (Статично уникално задание).

В допълнение, междинното представяне се обработва в оптимизатора, който използва проактивни техники за статична оптимизация, за да преобразува първичния междинен код в по-ефективно междинно представяне, като същевременно запазва семантиката на оригиналната програма.

Накрая на последния етап се генерира байт код за регистрираната виртуална машина.

В демонстрация Марк Хоровиц показа, че React Native заявление с Hermes беше напълно зареден около две секунди по-бързо от същото приложение, заредено без Hermes.

Марк Хоровиц се погрижи Хермес също да намали размера на APK до средата на 41MB съхранено приложение на React Native и елиминира една четвърт от използваната памет на приложението.

С други думи, с Hermes разработчиците могат да накарат потребителите да взаимодействат по-бързо с приложение с по-малко препятствия, като бавно време за изтегляне и ограничения, причинени от множество приложения, споделящи ограничени ресурси от паметта, като например: Особено на ниво телефони.

Двигателят поддържа част от стандарта ECMAScript 2015 JavaScript (пълната поддръжка е крайната цел) и е съвместим с повечето съществуващи приложения на React Native. В Hermes беше решено да не се поддържа локално кастинг на eval (), "с" изрази, отражения (Reflect и Proxy), API на Intl API и някои флагове в RegExp.

За да активирате Hermes в приложението React Native, просто добавете опцията "enableHermes: true" към проекта. Също така е възможно да се компилира Hermes в режим на интерфейс CLI, който ви позволява да изпълнявате произволни JavaScript файлове от командния ред.

В същото време, Facebook не планира да адаптира Hermes за Node.js и други решения, като се фокусира само върху мобилни приложения (компилирането на AOT вместо JIT е по-оптимално в контекста на мобилни приложения, базирани на React Native).

Microsoft проведе предварителни тестове за производителност и показа, че когато се използва Hermes, приложението Microsoft Office за Android може да работи за 1.1 секунди.

След стартирането и той консумира 21.5MB RAM, докато при използване на V8 двигателя се изразходват 1.4 секунди при стартиране, а консумацията на памет е 30MB.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.