Facebook ha rilasciato il codice sorgente del motore JavaScript Hermes

Ermete

Facebook ha aperto il codice sorgente per il leggero motore JavaScript Hermes, ottimizzato per l'esecuzione di applicazioni basate su framework React Native sulla piattaforma Android.

L'ingegnere del software di Facebook Marc Horowitz ha rivelato il nuovo motore JavaScript alla conferenza Chain React 2019 a Portland, Oregon. Hermes è un nuovo strumento di sviluppo che si concentra sul miglioramento delle prestazioni di avvio delle app nello stesso modo in cui Facebook già fa per le sue app e rende le app più efficaci sugli smartphone entry-level.

A proposito di Hermes

Il supporto di Hermes è integrato in React Native a partire dalla versione odierna 0.60.2. Il progetto è riconosciuto per la risoluzione di problemi con tempi di avvio lunghi per applicazioni JavaScript native e un consumo di risorse significativo. Il codice è scritto in C ++ e distribuito sotto la licenza MIT.

Tra i vantaggi dell'utilizzo di Hermes, c'è una riduzione del tempo di inizio dell'applicazione, una diminuzione del consumo di memoria e una diminuzione delle dimensioni dell'applicazione.

Accelerazione delle applicazioni lanciare si ottiene utilizzando la precompilazione in un bytecode compatto ed efficiente in fase di compilazione.

Per eseguire direttamente l'applicazione, viene utilizzata una macchina virtuale con il Garbage Collector SemiSpace sviluppato come parte del progetto. Con V8, i passaggi più lunghi per analizzare il codice sorgente e compilarlo al volo.

Il motore Hermes porta queste fasi alla fase di compilazione e consente alle applicazioni di essere fornite sotto forma di codice byte ottimizzato.

L'elaborazione di JavaScript è suddivisa in più fasi. Inizialmente, il codice sorgente viene analizzato e viene generata la rappresentazione del codice intermedio (Hermes IR), basata sulla rappresentazione SSA (Static Unique Assignment).

Inoltre, la rappresentazione intermedia viene elaborata nell'ottimizzatore, che utilizza tecniche di ottimizzazione statica proattiva per convertire il codice intermedio primario in una rappresentazione intermedia più efficiente, preservando la semantica del programma originale.

Infine, nell'ultima fase, viene generato il codice byte per la macchina virtuale registrata.

In una demo, Marc Horowitz ha mostrato che un'applicazione React Native con Hermes è stato caricato completamente circa due secondi più velocemente della stessa applicazione caricata senza Hermes.

Marc Horowitz si è assicurato che Hermes riducesse anche le dimensioni dell'APK al centro dei 41 MB di un'app archiviata in React Native ed eliminato un quarto dell'utilizzo della memoria dell'app.

In altre parole, con Hermes, gli sviluppatori possono indurre gli utenti a interagire più rapidamente con un'applicazione con meno ostacoli, come tempi di download lenti e restrizioni causate da più applicazioni che condividono risorse di memoria limitate, come ad esempio: Soprattutto su input di telefoni di livello.

Il motore supporta parte dello standard JavaScript ECMAScript 2015 (il suo pieno supporto è l'obiettivo finale) ed è compatibile con la maggior parte delle applicazioni React Native esistenti. In Hermes, è stato deciso di non supportare il casting locale di eval (), "con" espressioni, riflessioni (Reflect e Proxy), API API Intl e alcuni flag in RegExp.

Per abilitare Hermes nell'applicazione React Native, aggiungi semplicemente l'opzione "enableHermes: true" al progetto. È anche possibile compilare Hermes nella modalità dell'interfaccia CLI, che consente di eseguire file JavaScript arbitrari dalla riga di comando.

Allo stesso tempo, Facebook non prevede di adattare Hermes per Node.js e altre soluzioni, concentrandosi solo sulle applicazioni mobili (la compilazione di AOT invece di JIT è più ottimale nel contesto delle app mobili basate su React Native).

Microsoft ha condotto test preliminari sulle prestazioni e ha dimostrato che quando si utilizza Hermes, l'applicazione Microsoft Office per Android è disponibile per funzionare in 1.1 secondi.

Dopo il lancio e consuma 21.5 MB di RAM, mentre si utilizza il motore V8, vengono spesi 1.4 secondi all'avvio e il consumo di memoria è di 30 MB.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.