Aller au contenu principal

Un analyseur ultra-rapide, partie 1 : optimisation du scanneur

· 13 minutes de lecture
Toon Verwaest ([@tverwaes](https://twitter.com/tverwaes)), optimiseur scandaleux

Pour exécuter un programme JavaScript, le texte source doit être traité pour que V8 puisse le comprendre. V8 commence par analyser la source en un arbre syntaxique abstrait (AST), un ensemble d’objets représentant la structure du programme. Cet AST est compilé en bytecode par Ignition. La performance de ces phases d’analyse et de compilation est importante : V8 ne peut pas exécuter de code avant la fin de la compilation. Dans cette série de billets de blog, nous nous concentrons sur l’analyse et le travail effectué dans V8 pour fournir un analyseur ultra-rapide.

Sortie de V8 v7.4

· 9 minutes de lecture
Georg Neis

Tous les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de publication. Chaque version est dérivée du Git master de V8 juste avant une étape Beta de Chrome. Aujourd’hui, nous sommes heureux d’annoncer notre nouvelle branche, V8 version 7.4, qui est en version bêta jusqu’à sa sortie coordonnée avec Chrome 74 Stable dans quelques semaines. V8 v7.4 est rempli de toutes sortes de nouveautés pour les développeurs. Cet article fournit un aperçu de certains des points forts en prévision de la sortie.

V8 sans JIT

· 4 minutes de lecture
Jakob Gruber ([@schuay](https://twitter.com/schuay))

V8 v7.4 prend désormais en charge l'exécution de JavaScript sans allocation de mémoire exécutable à l'exécution.

Dans sa configuration par défaut, V8 repose fortement sur la capacité à allouer et modifier de la mémoire exécutable à l'exécution. Par exemple, le compilateur optimisant TurboFan crée du code natif pour les fonctions JavaScript (JS) les plus fréquemment utilisées à la volée, et la plupart des expressions régulières en JS sont compilées en code natif par le moteur irregexp. La création de mémoire exécutable à l'exécution est une partie de ce qui rend V8 rapide.

Publication de la version v7.3 de V8

· 4 minutes de lecture
Clemens Backes, maître des compilateurs

Toutes les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de publication. Chaque version est dérivée du maître Git de V8 juste avant une étape Beta de Chrome. Aujourd’hui, nous sommes heureux d’annoncer notre nouvelle branche, V8 version 7.3, qui est en bêta jusqu'à sa publication en coordination avec Chrome 73 Stable dans plusieurs semaines. V8 v7.3 est rempli de toutes sortes d’améliorations pour les développeurs. Ce post offre un aperçu de certains des points forts avant la publication.

Parlons déchets : le collecteur d'ordures Orinoco

· 15 minutes de lecture
Peter ‘le garbo’ Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

Au cours des dernières années, le collecteur d'ordures (GC) de V8 a beaucoup évolué. Le projet Orinoco a transformé un collecteur d'ordures séquentiel stop-the-world en un collecteur principalement parallèle et concurrent avec une solution de repli incrémentale.

Sortie de V8 v7.2

· 5 minutes de lecture
Andreas Haas, responsable des pièges

Toutes les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de sortie. Chaque version est dérivée de la branche principale Git de V8 immédiatement avant une version Beta de Chrome. Aujourd'hui, nous sommes ravis d'annoncer notre dernière branche, V8 version 7.2, actuellement en beta, en attendant sa sortie en coordination avec la version stable de Chrome 72 dans quelques semaines. V8 v7.2 regorge de fonctionnalités pour les développeurs. Cet article fournit un aperçu de quelques points forts en prévision de la sortie.

Accélérer les éléments de propagation

· 10 minutes de lecture
Hai Dang & Georg Neis

Pendant son stage de trois mois au sein de l'équipe V8, Hai Dang a travaillé à améliorer les performances de [...array], [...string], [...set], [...map.keys()], et [...map.values()] (quand les éléments de propagation sont au début du littéral de tableau). Il a même rendu Array.from(iterable) beaucoup plus rapide. Cet article explique certains détails techniques de ses modifications, incluses dans V8 à partir de la version 7.2.

Des fonctions asynchrones et des promesses plus rapides

· 20 minutes de lecture
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), anticipatrice toujours en attente, et Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)), garant professionnel de performance

Le traitement asynchrone en JavaScript avait traditionnellement la réputation de ne pas être particulièrement rapide. Pour aggraver les choses, le débogage d'applications JavaScript en direct — en particulier des serveurs Node.js — n'est pas chose aisée, surtout lorsqu'il s'agit de programmation asynchrone. Heureusement, les temps changent. Cet article explore comment nous avons optimisé les fonctions asynchrones et les promesses dans V8 (et dans une certaine mesure dans d'autres moteurs JavaScript également), et décrit comment nous avons amélioré l'expérience de débogage de code asynchrone.

Publication de V8 v7.1

· 4 minutes de lecture
Stephan Herhut ([@herhut](https://twitter.com/herhut)), cloneur cloné de clones

Toutes les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de publication. Chaque version est dérivée du maître Git de V8 juste avant une étape bêta de Chrome. Aujourd’hui, nous sommes heureux d’annoncer notre nouvelle branche, V8 version 7.1, qui est en version bêta jusqu’à sa publication en coordination avec Chrome 71 Stable dans quelques semaines. V8 v7.1 regorge de toutes sortes de fonctionnalités pour les développeurs. Cet article présente un aperçu de certains points forts en prévision de la publication.

Sortie de V8 v7.0

· 3 minutes de lecture
Michael Hablich

Tous les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de publication. Chaque version est dérivée du dépôt principal de V8 juste avant une étape Beta de Chrome. Aujourd'hui, nous sommes ravis d'annoncer notre toute nouvelle branche, V8 version 7.0, qui est en phase Beta jusqu'à sa sortie en coordination avec Chrome 70 Stable dans plusieurs semaines. V8 v7.0 est remplie de nouveautés orientées développeurs. Ce billet offre un aperçu de certains des points forts en vue de la sortie prochaine.