O Facebook lançou o código-fonte do motor Hermes JavaScript

Hermes

O Facebook abriu o código-fonte para o motor Hermes JavaScript leve, otimizado para executar aplicativos baseados na estrutura React Native na plataforma Android.

O engenheiro de software do Facebook Marc Horowitz revelou o novo mecanismo JavaScript na conferência Chain React 2019 em Portland, Oregon. Hermes é uma nova ferramenta de desenvolvedor que se concentra em melhorar o desempenho de inicialização de aplicativos da mesma forma que o Facebook já faz para seus aplicativos e em tornar os aplicativos mais eficazes em smartphones básicos.

Sobre a Hermes

O suporte a Hermes está integrado no React Native a partir da versão 0.60.2 de hoje. O projeto é reconhecido por resolver problemas com longos tempos de inicialização para aplicativos JavaScript nativos e consumo significativo de recursos. O código é escrito em C ++ e distribuído sob a licença MIT.

Dentre as vantagens de usar o Hermes, há uma redução no tempo de início do aplicativo, uma diminuição no consumo de memória e uma diminuição no tamanho do aplicativo.

Aceleração de aplicativos lançamento é obtido usando a pré-compilação em um bytecode compacto e eficiente na fase de compilação.

Para executar o aplicativo diretamente, uma máquina virtual é usada com o coletor de lixo SemiSpace desenvolvido como parte do projeto. Com o V8, as mais longas são as etapas para analisar o código-fonte e compilá-lo em tempo real.

O mecanismo Hermes leva esses estágios para o estágio de compilação e permite que os aplicativos sejam entregues na forma de código de bytes otimizado.

O processamento de JavaScript é dividido em vários estágios. Inicialmente, o código-fonte é analisado e a representação do código intermediário (Hermes IR) é gerada, com base na representação SSA (Static Unique Assignment).

Além disso, a representação intermediária é processada no otimizador, que usa técnicas de otimização estática proativa para converter o código intermediário primário em uma representação intermediária mais eficiente, enquanto preserva a semântica do programa original.

Por fim, na última etapa, é gerado o código de bytes para a máquina virtual cadastrada.

Em uma demonstração, Marc Horowitz mostrou que um aplicativo React Native com Hermes ele foi totalmente carregado cerca de dois segundos mais rápido do que o mesmo aplicativo carregado sem o Hermes.

Marc Horowitz garantiu que a Hermes também reduzisse o tamanho do APK para o meio de 41 MB de um aplicativo React Native armazenado e eliminou um quarto do uso de memória do aplicativo.

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.

O mecanismo suporta parte do padrão ECMAScript 2015 JavaScript (seu suporte total é o objetivo final) e é compatível com a maioria dos aplicativos React Native existentes. No Hermes, foi decidido não suportar a conversão local de eval (), expressões "com", reflexos (Reflect e Proxy), API Intl e alguns sinalizadores em RegExp.

Para habilitar o Hermes no aplicativo React Native, basta adicionar a opção "enableHermes: true" ao projeto. Também é possível compilar o Hermes no modo de interface CLI, que permite executar arquivos JavaScript arbitrários a partir da linha de comando.

Ao mesmo tempo, O Facebook não planeja adaptar Hermes para Node.js e outras soluções, focando apenas em aplicativos móveis (compilar AOT em vez de JIT é mais ideal no contexto de aplicativos móveis baseados no React Native.)

A Microsoft realizou testes preliminares de desempenho e mostrou que, ao usar o Hermes, o aplicativo Microsoft Office para Android fica disponível para funcionar em 1.1 segundos.

Após o lançamento, ele consome 21.5 MB de RAM, enquanto usa o motor V8, 1.4 segundos são gastos no lançamento e o consumo de memória é de 30 MB.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.