Προγραμματισμός

Τι νέο υπάρχει στην έκδοση 7 της μηχανής JavaScript της Google V8

Η έκδοση 7.4 beta V8 είναι πλέον διαθέσιμη, με δυνατότητα επέκτασης του αποτυπώματος του κινητήρα σε πλατφόρμες όπως το Apple iOS. Το V8 είναι η μηχανή ανοιχτού κώδικα της Google και η μηχανή WebAssembly για το πρόγραμμα περιήγησης Chrome. Είναι βασικό τόσο στο πρόγραμμα περιήγησης Chrome όσο και στον χρόνο εκτέλεσης JavaScript του Node.js.

Πού να κατεβάσετε το Google V8

Μπορείτε να κατεβάσετε την έκδοση παραγωγής του Google V8 από το repo Chromium V8.

Μελλοντική έκδοση: Τι νέο υπάρχει στην έκδοση V8 7.4

Με την έκδοση παραγωγής που λήγει τον Απρίλιο του 2019, το Google V8 beta 7.4 έχει τις ακόλουθες νέες δυνατότητες:

  • Χωρίς JIT V8, στο οποίο υποστηρίζεται η εκτέλεση JavaScript χωρίς εκχώρηση εκτελέσιμης μνήμης κατά το χρόνο εκτέλεσης. Αυτό θα μπορούσε να επιτρέψει την επέκταση του V8 σε πλατφόρμες όπως το Apple iOS, έξυπνες τηλεοράσεις και κονσόλες παιχνιδιών. Η προεπιλεγμένη διαμόρφωση του V8 βασίστηκε στη δυνατότητα εκχώρησης και τροποποίησης της εκτελέσιμης μνήμης κατά το χρόνο εκτέλεσης. Ωστόσο, υπάρχουν καταστάσεις όπου μπορεί να είναι επιθυμητή η λειτουργία του κινητήρα χωρίς εκχώρηση εκτελέσιμης μνήμης, όπως πλατφόρμες που έχουν απαγορεύσει την πρόσβαση εγγραφής σε μη εκτελέσιμη μνήμη για μη προνομιακές εφαρμογές, συμπεριλαμβανομένου του iOS. Επίσης, η απαγόρευση εγγραφής σε εκτελέσιμη μνήμη μειώνει την επιφάνεια επίθεσης της εφαρμογής για εκμεταλλεύσεις. Με τη λειτουργία χωρίς JIT, το V8 μεταβαίνει σε λειτουργία μόνο διερμηνέα για JavaScript. Το WebAss Assembly προς το παρόν δεν υποστηρίζει αυτήν τη λειτουργία. Ωστόσο, η λειτουργία χωρίς JIT συνοδεύεται από ποινή απόδοσης.
  • Τα νήματα WebAssembly / Atomics είναι πλέον ενεργοποιημένα σε λειτουργικά συστήματα εκτός Android. Αυτή η κίνηση ξεκλειδώνει τη χρήση πολλαπλών πυρήνων μέσω WebAssembly, επιτρέποντας νέες, βαριές υπολογιστικές χρήσεις στον Ιστό.
  • Για τη βελτίωση της απόδοσης, η Έκδοση 7.4 παραλείπει την προσαρμογή ορισμάτων σε ορισμένες περιπτώσεις, μειώνοντας τα γενικά έξοδα κλήσεων κατά 60 τοις εκατό.
  • Η απόδοση έχει βελτιωθεί για την κλήση σε εγγενείς προσβάτες, οι οποίοι είναι προσβάτες DOM.
  • Η απόδοση του προπαρασκευαστή βελτιώθηκε αφαιρώντας μια διπλή επανάληψη που περιλαμβάνει ονόματα ιδιοτήτων. Επιπλέον, επιλύθηκε ένα πρόβλημα απόδοσης που περιλάμβανε προσαρμοσμένη αποκωδικοποίηση UTF-8 που χρησιμοποιήθηκε από τη ροή προέλευσης.
  • Για να μειωθεί η επιβάρυνση της μνήμης, έχει εφαρμοστεί υποστήριξη για έξαψη του μεταγλωττισμένου bytecode από λειτουργίες κατά τη συλλογή απορριμμάτων, εάν δεν έχουν εκτελεστεί πρόσφατα.
  • Για την υποστήριξη πεδίων ιδιωτικής τάξης, οι Προγραμματιστές μπορούν να επισημάνουν ένα πεδίο ως ιδιωτικό προπαρασκευάζοντάς το με το # πρόθεμα.

Πού να κατεβάσετε το V8 7.4 beta

Μπορείτε να κατεβάσετε την έκδοση beta του V8 από το repo του Chromium Git της Google.

Τρέχουσα έκδοση: Τι νέο υπάρχει στην έκδοση V8 7.3

Οι νέες δυνατότητες στο V8 7.3 περιλαμβάνουν:

  • ο - ίχνη συγχρονισμού-στοίβας Η σημαία είναι ενεργοποιημένη από προεπιλογή.
  • Τα ίχνη στοίβας μηδενικού κόστους, καθιστούν ευκολότερη τη διάγνωση προβλημάτων στην παραγωγή με ασύγχρονο κώδικα. ο σωρός Η ιδιότητα που αποστέλλεται συνήθως σε αρχεία καταγραφής και υπηρεσίες παρέχει τώρα περισσότερες πληροφορίες για προβλήματα.
  • Ένα γρηγορότερο αναμένω, με την - βελτιστοποίηση αρμονίας-αναμονή η σημαία είναι ενεργοποιημένη από προεπιλογή. Αυτό είναι προαπαιτούμενο για - ίχνη συγχρονισμού-στοίβας.
  • Ταχύτερη εκκίνηση για WebAss Assembly μέσω βελτιστοποιήσεων. Για τους περισσότερους φόρτους εργασίας, η συλλογή βελτιώνεται κατά 15% σε 25%.
  • Χαρακτηριστικά JavaScript όπως απόEntries (), ένα API για την εκτέλεση του αντίστροφου του Object.entries, καιString.prototype.Matchall, ένα API που διευκολύνει την εφαρμογή καθολικών ή κολλώνων τυπικών εκφράσεων σε μια συμβολοσειρά και επαναλαμβάνεται σε όλους τους αγώνες.

Τρέχουσα έκδοση: Τι νέο υπάρχει στο Google V8 Έκδοση 7.2

Η έκδοση 7.2 του Ιανουαρίου 2019 του V8 βελτιώνει την ανάλυση JavaScript, τη δυαδική μορφή WebAss Assembly και τη μνήμη.

Για να βελτιωθεί η ταχύτητα ανάλυσης, η έκδοση 8.2 της έκδοσης 7.2 περιλαμβάνει αυτό που η Google καλεί τον ταχύτερα αναλυτή JavaScript του κινητήρα, με αποτέλεσμα ταχύτερη φόρτωση σελίδων και σελίδες με μεγαλύτερη απόκριση. Από την έκδοση 7.0 V8, η ταχύτητα ανάλυσης της επιφάνειας εργασίας έχει βελτιωθεί περίπου 30%, λέει η Google.

Για τη μνήμη, τα ενσωματωμένα ενσωματωμένα αρχεία που εξοικονομούν μνήμη μέσω της κοινής χρήσης του δημιουργημένου κώδικα σε πολλές απομόνωση υποστηρίζονται και ενεργοποιούνται από προεπιλογή στην αρχιτεκτονική IA32

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

Οι αλλαγές σχεδίασης στον εκχωρητή μητρώου βελτιώνουν την απόδοση για μοτίβα κώδικα που θα εμφανιστούν σε μεταγενέστερη έκδοση. Επίσης, οι χειριστές παγίδων στην Έκδοση 7.2 βελτιώνουν την απόδοση του κώδικα WebAssembly. Υλοποιούνται σε Windows, MacOS και Linux. Στο Chromium, είναι ενεργοποιημένα σε Linux, με MacOs και Windows για παρακολούθηση όταν επιβεβαιώνεται η σταθερότητα. Τα σχέδια απαιτούν επίσης να είναι διαθέσιμα στο Android.

Άλλες νέες δυνατότητες στο V8 7.2 περιλαμβάνουν:

  • Η απόδοση των στοιχείων Spread έχει βελτιωθεί όταν αυτά εμφανίζονται στο μπροστινό μέρος του πίνακα κυριολεκτικά.
  • Ένα γρηγορότερο ασύγχρονος/αναμένω Η εφαρμογή είναι ενεργοποιημένη από προεπιλογή. Η αλλαγή μπορεί να συγχωνευθεί στην επίσημη προδιαγραφή ECMAScript.
  • Τα ίχνη στοίβας μηδενικής ακτής εμπλουτίζουν το σωρός ιδιοκτησία με ασύγχρονα καρέ κλήσεων. Αυτή η ικανότητα είναι διαθέσιμη πίσω από το - ίχνη συγχρονισμού-στοίβας σημαία γραμμής εντολών.
  • Υποστήριξη για πεδία δημόσιας τάξης, η οποία επεκτείνει τη σύνταξη JavaScript για απλοποίηση.
  • ο ΛίσταFormat πρόταση, για τον εντοπισμό μορφοποίησης λιστών.
  • σφίγγω τώρα εξάγει ακολουθίες διαφυγής για μοναχικούς υποκατάστατες, καθιστώντας την έξοδο έγκυρη Unicode.

Προηγούμενη έκδοση: Τι νέο υπάρχει στο Google V8 Έκδοση 7.1

Η έκδοση 7.1 του V8 του Νοεμβρίου 2018 διαθέτει βελτιώσεις στη μνήμη και την απόδοση μαζί με βελτιώσεις τόσο για τη JavaScript όσο και για τη δυαδική μορφή WebAss Assembly. Για τη μνήμη, οι bytecodes για τον διερμηνέα είναι πλέον ενσωματωμένοι στο δυαδικό σύστημα, εξοικονομώντας περίπου 200 KB κατά μέσο όρο ανά απομόνωση. Για τη βελτίωση της απόδοσης, η ανάλυση διαφυγής στον μεταγλωττιστή TurboFan ενισχύεται για να χειριστεί τοπικά περιβάλλοντα συνάρτησης για συναρτήσεις υψηλότερης τάξης, όταν μεταβλητές από το περιβάλλον περιβάλλον ξεφεύγουν σε τοπικό κλείσιμο. Με την ανάλυση διαφυγής, η βαθμιαία αντικατάσταση πραγματοποιείται για αντικείμενα τοπικά σε μια μονάδα βελτιστοποίησης.

Άλλες νέες δυνατότητες στην έκδοση V8 7.1:

  • Για JavaScript, το RelativeTimeformat Το API που εμφανίζεται στην αναβάθμιση επιτρέπει την τοπική μορφοποίηση σχετικών χρόνων, όπως "χθες", χωρίς να θυσιάζεται η απόδοση. Επίσης, η έκδοση 7.1 υποστηρίζει το GlobalThis πρόταση, παρέχοντας έναν καθολικό μηχανισμό πρόσβασης στο παγκόσμιο αντικείμενο ακόμη και σε αυστηρές λειτουργίες ή ενότητες, ανεξάρτητα από την πλατφόρμα.
  • Για μορφή bytecode WebAssembly, postMessage υποστηρίζεται για ενότητες. Αυτή η συμπεριφορά καλύπτει τους εργαζόμενους στο Διαδίκτυο και δεν επεκτείνεται σε σενάρια πολλαπλών διεργασιών.

Προηγούμενη έκδοση: Τι νέο υπάρχει στο Google V8 Έκδοση 7.0

Η έκδοση V.0 της έκδοσης 7.0 του Οκτωβρίου 2018 προεπισκοπεί τα νήματα WebAss Assembly, τα οποία παρέχουν ένα πρωτόγονο για παράλληλο υπολογισμό. Για να χρησιμοποιούν νήματα στο πρόγραμμα περιήγησης Chrome, το οποίο χρησιμοποιεί V8, οι προγραμματιστές μπορούν να το ενεργοποιήσουν μέσω chrome: // flags / # enable-webassembly-threads ή εγγραφείτε για δοκιμή Origin, για πειραματισμούς με νέες λειτουργίες ιστού. Το WebAss Assembly, γνωστό και ως Wasm, επιτρέπει τη σύνταξη κώδικα γραμμένου σε διαφορετικές γλώσσες για εκτέλεση στον Ιστό.

Άλλες νέες δυνατότητες στο V8 7.0 περιλαμβάνουν:

  • Για JavaScript, το περιγραφή η ιδιότητα προστίθεται στο πρωτότυπο, παρέχοντας έναν πιο εργονομικό τρόπο πρόσβασης στην περιγραφή. Επίσης, Array.prototype.sort γίνεται σταθερή στην έκδοση 7.0.
  • Επέκταση ενσωματωμένων ενσωματωμένων, οι οποίες εξοικονομούν μνήμη με την κοινή χρήση του παραγόμενου κώδικα σε πολλές απομόνωση. Η έκδοση 6.9 με έκδοση V9 ενεργοποίησε την αρχιτεκτονική X64, ενώ η έκδοση 7.0 τις επεκτείνει στις υπόλοιπες πλατφόρμες εκτός από το IA-32.

Προηγούμενη έκδοση: Τι νέο υπάρχει στο Google V8 Έκδοση 6.9

Η έκδοση 6.9 του Σεπτεμβρίου 2018 επικεντρώνεται στη βελτίωση της μνήμης και της απόδοσης για τη μηχανή JavaScript της Google.

Για εξοικονόμηση μνήμης, η Έκδοση 6.9 προσφέρει ενσωματωμένα ενσωματωμένα για υπολογιστές που βασίζονται σε τεχνολογία x64. Αυτές είναι συναρτήσεις που μοιράζονται όλα τα προϊόντα απομόνωσης και ενσωματώνονται στο ίδιο το δυαδικό σύστημα αντί να αντιγράφονται στο σωρό JavaScript, υπάρχει έτσι στη μνήμη μόνο μία φορά ανεξάρτητα από τον αριθμό των απομονώσεων που εκτελούνται. Οι σχεδιαστές της V8 έχουν δει κατά μέσο όρο μείωση 9 τοις εκατό του μεγέθους σωρού στους κορυφαίους 10.000 ιστότοπους σε υπολογιστές x64. Η υποστήριξη για άλλες πλατφόρμες θα ακολουθήσει σε μεταγενέστερες εκδόσεις.

Για απόδοση, η έκδοση 6.9 V8 μειώνει τους χρόνους παύσης συλλογής απορριμμάτων Mark-Compact βελτιώνοντας Χαμηλός χάρτης επεξεργασία. Η ταυτόχρονη και σταδιακή σήμανση μπορεί τώρα να επεξεργαστεί Χαμηλοί χάρτες. Προηγουμένως, αυτή η εργασία έγινε στην τελική ατομική παύση της συλλογής απορριμμάτων Mark-Compact. Η συλλογή σκουπιδιών τώρα λειτουργεί περισσότερο παράλληλα με τους χαμηλότερους χρόνους παύσης.

Για απόδοση, Προβολή δεδομένων Οι μέθοδοι έχουν εφαρμοστεί εκ νέου στο V8 Torque, εξοικονομώντας μια δαπανηρή κλήση στο C ++ σε σύγκριση με την προηγούμενη εκτέλεση χρόνου εκτέλεσης. Επίσης, καλεί σε Προβολή δεδομένων Οι μέθοδοι τώρα είναι ευθυγραμμισμένες κατά τη σύνταξη JavaScript στο μεταγλωττιστή TurboFan. Αυτό παρέχει καλύτερη απόδοση κορυφής για hot code.

Η έκδοση 6.9 της έκδοσης 6.9 περιλαμβάνει επίσης το Liftoff, ένα μεταγλωττιστή βάσης για τη φορητή μορφή κώδικα WebAssembly. Ενεργοποιείται από προεπιλογή και προορίζεται να μειώσει τους χρόνους εκκίνησης για εφαρμογές που βασίζονται στο WebAss Assembly, δημιουργώντας κώδικα όσο το δυνατόν γρηγορότερα. Η ίδια η ποιότητα του κώδικα είναι δευτερεύουσα προτεραιότητα για το Liftoff, με τον κώδικα να μεταγλωττίζεται τελικά από τον μεταγλωττιστή TurboFan του V8.

Το Liftoff αναπτύχθηκε για να αντιμετωπίσει ένα ζήτημα στο οποίο το πίσω μέρος της διαδικασίας σύνταξης για το TurboFan κατανάλωσε πολύ χρόνο και μνήμη, μειώνοντας την απόδοση του κώδικα WebAssembly. Το Liftoff αποφεύγει την επιβάρυνση του χρόνου και της μνήμης της ενδιάμεσης αναπαράστασης, δημιουργώντας τον κώδικα του μηχανήματος με ένα μόνο πέρασμα πάνω από τον bytecode μιας λειτουργίας WebAssembly. Οι Liftoff και Turbofan δίνουν στο V8 δύο επίπεδα συλλογής, με το Liftoff ένα βασικό μεταγλωττιστή για γρήγορη εκκίνηση και το TurboFan παρέχει βελτιστοποίηση για την απόδοση.

Η Google σχεδιάζει επίσης να βελτιώσει περαιτέρω τον χρόνο εκκίνησης, να μειώσει την κατανάλωση μνήμης και να προσφέρει οφέλη από το Liftoff σε περισσότερους χρήστες. Αυτά τα σχέδια περιλαμβάνουν θύρες σε επεξεργαστές ARM, για χρήση σε κινητές συσκευές. Το Liftoff λειτουργεί προς το παρόν μόνο σε πλατφόρμες Intel 32 και 64 bit. Άλλες υπό εξέταση βελτιώσεις περιλαμβάνουν:

  • Εφαρμογή δυναμικής αναβάθμισης για κινητές συσκευές, για την κάλυψη χαμηλότερων όγκων μνήμης σε αυτές τις συσκευές. Τα πειράματα προχωρούν με έναν συνδυασμό τεμπέλης συλλογής με το Liftoff και τη δυναμική αναβάθμιση των καυτών λειτουργιών στο TurboFan.
  • Βελτίωση της απόδοσης δημιουργίας κώδικα Liftoff και βελτίωση του παραγόμενου κώδικα.

Προηγούμενη έκδοση: Τι νέο υπάρχει στην έκδοση V8 6.8

Η έκδοση 6.8 του Google V8, που κυκλοφόρησε τον Ιούλιο του 2018, επικεντρώνεται στην απόδοση και τη χρήση μνήμης.

Η απόδοση έχει ενισχυθεί από βελτιώσεις καταστροφής συστοιχιών. Ο βελτιστοποιητής μεταγλωττιστής δεν παρήγαγε ιδανικό κώδικα για την αποικοδόμηση συστοιχιών, οπότε οι κατασκευαστές του V8 μπλοκάρουν την ανάλυση διαφυγής για να εξαλείψουν την προσωρινή κατανομή, η οποία έκανε την καταστροφή πίνακα με έναν προσωρινό πίνακα τόσο γρήγορα όσο μια ακολουθία εργασιών.

Μια νέα εφαρμογή του Object.assign βελτιώνει την απόδοση, μέσω της εφαρμογής μιας γρήγορης διαδρομής για JavaScript.

Η απόδοση για TypedArrays έχει αυξηθεί σε περιπτώσεις κατά τις οποίες η ταξινόμηση γίνεται χρησιμοποιώντας μια λειτουργία σύγκρισης.

Άλλες νέες δυνατότητες στην έκδοση 6.8 της έκδοσης V8 περιλαμβάνουν:

  • Για να βελτιώσουν την ταχύτητα εκτέλεσης με τη φορητή μορφή κώδικα WebAssembly, οι προγραμματιστές μπορούν να χρησιμοποιούν έλεγχο ορίων βάσει παγίδας, βελτιστοποίηση διαχείρισης μνήμης, σε πλατφόρμες Linux x64.
  • Κατανάλωση μνήμης SFI (SharedFunctionInfo) έχει μειωθεί, μέσω συμπίεσης και αφαίρεσης περιττών πεδίων.
  • Επίσης, για τη βελτίωση των δυνατοτήτων μνήμης, έχει διακοπεί μια εξάρτηση από τα SFI στα οποία τα SFI διατηρήθηκαν άσκοπα ζωντανά, γεγονός που οδήγησε στον κίνδυνο διαρροών μνήμης.

Προηγούμενη έκδοση: Τι νέο υπάρχει στην έκδοση V7 6.7

Το V8 JavaScriptengine της Google λαμβάνει βελτιώσεις για λειτουργίες γλώσσας και ασφάλεια με τον κλάδο Έκδοση 6.7, ο οποίος βρίσκεται τώρα σε κυκλοφορία παραγωγής.

Ο κινητήρας V8 6.7 έχει BigInt Η υποστήριξη ενεργοποιήθηκε από προεπιλογή. Αναμένεται σε μια μελλοντική έκδοση του ECMAScript,BigInts χρησιμεύει ως αριθμητικό πρωτόγονο σε JavaScript για να αντιπροσωπεύει ακέραιους αριθμούς με αυθαίρετη ακρίβεια. Με BigInt, είναι δυνατή η εκτέλεση ακέραιου αριθμητικού χωρίς υπερχείλιση. BigInt θα μπορούσε να χρησιμεύσει ως βάση ενός ενδεχόμενου Μεγάλο Δεκαδικό εφαρμογή, χρήσιμο για την αναπαράσταση χρημάτων με δεκαδική ακρίβεια.

Επίσης, στο V8 6.7 υπάρχουν περισσότεροι μετριασμοί για ευπάθειες πλευρικού καναλιού, με σκοπό την αποφυγή διαρροών πληροφοριών σε μη αξιόπιστο κώδικα για JavaScript και WebAssembly.

Προηγούμενη έκδοση: Τι νέο υπάρχει στην έκδοση V6 6.6

Η έκδοση 6.6 της μηχανής JavaScript V8 της Google επικεντρώνεται σε δυνατότητες γλώσσας JavaScript και δυνατότητες αποθήκευσης κώδικα.

Για JavaScript, Function.prototype.toString () επιστρέφει ακριβείς φέτες κειμένου πηγαίου κώδικα, συμπεριλαμβανομένου του διαστήματος και των σχολίων. Εφαρμόζεται επίσης η έκδοση 6.8 της έκδοσης V6 String.prototype.trimStart () και String.prototype.trimEnd (). Αυτή η ικανότητα ήταν διαθέσιμη μέσω μη τυπικών trimLeft () και trimRight () μεθόδους, οι οποίες παραμένουν ως ψευδώνυμα των νέων μεθόδων που επιτρέπουν την συμβατότητα προς τα πίσω.

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

ο Array.prototype.values Η μέθοδος δίνει στους πίνακες την ίδια διεπαφή επανάληψης με το ECMAScript 2015 Χάρτης και Σειρά συλλογές. Αυτά μπορούν να αλληλεπιδράσουν από κλειδιά,αξίες, ή καταχωρήσεις καλώντας την ίδια ονομασία μέθοδο. Αυτή η αλλαγή θα μπορούσε να είναι ασυμβίβαστη με τον υπάρχοντα κώδικα JavaScript. προγραμματιστές που βρίσκουν περίεργη συμπεριφορά σε έναν ιστότοπο μπορούν να προσπαθήσουν να απενεργοποιήσουν αυτήν τη λειτουργία μέσω chrome: // flags / # enable-array-prototype-τιμές.

$config[zx-auto] not found$config[zx-overlay] not found