Facebook libero el código fuente del motor de JavaScript Hermes
Facebook ha abierto el código fuente del motor ligero de JavaScript Hermes, optimizado para ejecutar aplicaciones basadas en el marco React Native en la plataforma Android.
El ingeniero de software de Facebook Marc Horowitz reveló el nuevo motor de JavaScript en la conferencia Chain React de 2019 en Portland, Oregón. Hermes es una nueva herramienta para desarrolladores que se enfoca en mejorar el rendimiento de inicio de aplicaciones de la misma manera que Facebook ya lo hace para sus aplicaciones y hacer que las aplicaciones sean más efectivas en los teléfonos inteligentes de nivel básico.
Sobre Hermes
El soporte de Hermes está integrado en React Native desde la versión 0.60.2 de hoy. El proyecto es reconocido para resolver problemas con grandes tiempos de inicio para aplicaciones JavaScript nativas y un importante consumo de recursos. El código está escrito en C ++ y distribuido bajo la licencia MIT.
De las ventajas de usar Hermes, hay una reducción en el tiempo de inicio de la aplicación, una disminución en el consumo de memoria y una disminución en el tamaño de la aplicación.
La aceleración de las aplicaciones de lanzamiento se logra mediante el uso de la precompilación en un bytecode compacto y eficiente en la etapa de compilacion.
Para ejecutar la aplicación directamente, se utiliza una máquina virtual con el recolector de basura SemiSpace desarrollado como parte del proyecto. Con V8, los más largos son los pasos para analizar el código fuente y compilarlo sobre la marcha.
El motor Hermes lleva estas etapas a la etapa de compilación y permite poder entregar aplicaciones en forma de código de bytes optimizado.
El procesamiento de JavaScript se divide en varias etapas. Inicialmente, se analiza el código fuente y se genera la representación del código intermedio (Hermes IR), en base a la representación SSA (asignación estática única).
Además, la representación intermedia se procesa en el optimizador, que utiliza técnicas de optimización estática proactiva para convertir el código intermedio primario en una representación intermedia más eficiente, al tiempo que conserva la semántica del programa original.
Finalmente en la última etapa, se genera el código de bytes para la máquina virtual registrada.
En una demostración, Marc Horowitz mostró que una aplicación React Native con Hermes estaba completamente cargada unos dos segundos más rápido que la misma aplicación cargada sin Hermes.
Marc Horowitz se aseguró de que Hermes también redujera el tamaño del APK a la mitad de los 41 MB de una aplicación almacenada React Native y eliminó una cuarta parte del uso de la memoria de la aplicación.
En otras palabras, con Hermes, los desarrolladores pueden lograr que los usuarios interactúen más rápidamente con una aplicación con menos obstáculos, como tiempos de descarga lentos y restricciones causadas por múltiples aplicaciones que comparten recursos de memoria limitados, como: Especialmente en los teléfonos de nivel de entrada.
El motor es compatible con parte del estándar de JavaScript ECMAScript 2015 (el objetivo final es su soporte completo) y es compatible con la mayoría de las aplicaciones React Native existentes. En Hermes, se decidió no admitir el lanzamiento local de eval (), expresiones “con”, reflexiones (Reflect y Proxy), API Intl API y algunas marcas en RegExp.
Para habilitar a Hermes en la aplicación React Native, es suficiente agregar la opción “enableHermes: true” al proyecto. También es posible compilar Hermes en el modo de interfaz CLI, que permite ejecutar archivos JavaScript arbitrarios desde la línea de comandos.
Al mismo tiempo, Facebook no planea adaptar Hermes para Node.js y otras soluciones, centrándose solo en aplicaciones móviles (la compilación de AOT en lugar de JIT es más óptima en el contexto de las aplicaciones móviles basadas en React Native).
Microsoft realizó pruebas de rendimiento preliminares y mostró que al usar Hermes, la aplicación Microsoft Office para Android está disponible para trabajar en 1.1 segundos.
Después del lanzamiento y consume 21.5MB de RAM, mientras usa el motor V8, se gastan 1.4 segundos en el lanzamiento, y el consumo de memoria es de 30MB.
El artículo Facebook libero el código fuente del motor de JavaScript Hermes ha sido originalmente publicado en Ubunlog.