Το Facebook κυκλοφόρησε τον πηγαίο κώδικα της μηχανής JavaScript Hermes

Ερμής

Το Facebook έχει ανοίξει τον πηγαίο κώδικα για την ελαφριά μηχανή JavaScript Hermes, βελτιστοποιημένη για την εκτέλεση εφαρμογών που βασίζονται στο πλαίσιο React Native στην πλατφόρμα Android.

Ο Μηχανικός Λογισμικού Facebook Ο Marc Horowitz αποκάλυψε τη νέα μηχανή JavaScript στο συνέδριο Chain React του 2019 στο Πόρτλαντ του Όρεγκον. Το Hermes είναι ένα νέο εργαλείο προγραμματιστή που επικεντρώνεται στη βελτίωση της απόδοσης εκκίνησης εφαρμογών με τον ίδιο τρόπο που το Facebook κάνει ήδη για τις εφαρμογές του και καθιστά τις εφαρμογές πιο αποτελεσματικές σε smartphone entry-level.

Σχετικά με τον Ερμή

Η υποστήριξη του Hermes είναι ενσωματωμένη στο React Native από τη σημερινή έκδοση 0.60.2. Το έργο αναγνωρίζεται για την επίλυση προβλημάτων με μεγάλους χρόνους εκκίνησης για εγγενείς εφαρμογές JavaScript και σημαντική κατανάλωση πόρων. Ο κωδικός γράφεται σε C ++ και διανέμεται με άδεια MIT.

Από τα πλεονεκτήματα της χρήσης του Hermes, υπάρχει μείωση του χρόνου έναρξης της εφαρμογής, μείωση της κατανάλωσης μνήμης και μείωση του μεγέθους της εφαρμογής.

Επιτάχυνση εφαρμογών εκτόξευση επιτυγχάνεται με τη χρήση προκαταρκτικής μεταγλώττισης σε bytecode συμπαγής και αποτελεσματική στο στάδιο της σύνταξης.

Για να εκτελέσετε απευθείας την εφαρμογή, χρησιμοποιείται μια εικονική μηχανή με τον συλλέκτη απορριμμάτων SemiSpace που αναπτύχθηκε ως μέρος του έργου. Με το V8, το μακρύτερο είναι τα βήματα για την ανάλυση του πηγαίου κώδικα και τη σύνταξη του εν κινήσει.

Ο κινητήρας Hermes μεταφέρει αυτά τα στάδια στο στάδιο της σύνταξης και καθιστά δυνατή την παράδοση εφαρμογών ως βελτιστοποιημένο κώδικα byte.

Η επεξεργασία JavaScript χωρίζεται σε διάφορα στάδια. Αρχικά, ο πηγαίος κώδικας αναλύεται και δημιουργείται η ενδιάμεση αναπαράσταση κώδικα (Hermes IR), με βάση την παράσταση SSA (Static Unique Assignment).

Επιπλέον, η ενδιάμεση αναπαράσταση επεξεργάζεται στο optimizer, το οποίο χρησιμοποιεί προληπτικές τεχνικές στατικής βελτιστοποίησης για τη μετατροπή του πρωτεύοντος ενδιάμεσου κώδικα σε μια πιο αποτελεσματική ενδιάμεση αναπαράσταση, διατηρώντας παράλληλα τη σημασιολογία του αρχικού προγράμματος.

Τέλος στο τελευταίο στάδιο, δημιουργείται ο κωδικός byte για την καταχωρισμένη εικονική μηχανή.

Σε μια επίδειξη, ο Marc Horowitz έδειξε ότι μια εφαρμογή React Native με τον Ερμή φορτώθηκε πλήρως περίπου δύο δευτερόλεπτα γρηγορότερα από την ίδια εφαρμογή που φορτώθηκε χωρίς τον Ερμή.

Ο Marc Horowitz εξασφάλισε ότι ο Ερμής μείωσε επίσης το μέγεθος του APK στο μέσο του React Native αποθηκευμένο 41MB της εφαρμογής και εξάλειψε το ένα τέταρτο της χρήσης μνήμης της εφαρμογής.

Με άλλα λόγια, με τον Ερμή, οι προγραμματιστές μπορούν να κάνουν τους χρήστες να αλληλεπιδρούν πιο γρήγορα με μια εφαρμογή με λιγότερα εμπόδια, όπως αργούς χρόνους λήψης και περιορισμούς που προκαλούνται από πολλές εφαρμογές που μοιράζονται περιορισμένους πόρους μνήμης, όπως: Ειδικά σε επίπεδο εισόδου τηλεφώνων.

Ο κινητήρας υποστηρίζει μέρος του προτύπου JavaScript ECMAScript 2015 (η πλήρης υποστήριξη είναι ο τελικός στόχος) και είναι συμβατή με τις περισσότερες υπάρχουσες εφαρμογές React Native. Στο Hermes, αποφασίστηκε να μην υποστηρίζεται η τοπική μετάδοση του eval (), "με" εκφράσεις, αντανακλάσεις (Reflect and Proxy), Intl API API και μερικές σημαίες στο RegExp.

Για να ενεργοποιήσετε την Ερμή στην εφαρμογή React Native, απλώς προσθέστε την επιλογή "allowHermes: true" στο έργο. Είναι επίσης δυνατό να μεταγλωττιστεί ο Ερμής στη λειτουργία διεπαφής CLI, ο οποίος σας επιτρέπει να εκτελέσετε αυθαίρετα αρχεία JavaScript από τη γραμμή εντολών.

Ταυτόχρονα, Το Facebook δεν σκοπεύει να προσαρμόσει το Hermes για το Node.js και άλλες λύσεις, εστιάζοντας μόνο σε εφαρμογές για κινητά (η σύνταξη AOT αντί για JIT είναι πιο βέλτιστη στο πλαίσιο εφαρμογών για κινητές συσκευές που βασίζονται στο React Native).

Η Microsoft πραγματοποίησε προκαταρκτικές δοκιμές απόδοσης και έδειξε ότι όταν χρησιμοποιείτε το Hermes, η εφαρμογή Microsoft Office για Android είναι διαθέσιμη για λειτουργία σε 1.1 δευτερόλεπτα.

Μετά την εκκίνηση και καταναλώνει 21.5MB μνήμης RAM, ενώ χρησιμοποιεί τον κινητήρα V8, 1.4 δευτερόλεπτα ξοδεύονται κατά την εκτόξευση και η κατανάλωση μνήμης είναι 30MB.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.