Aller au contenu principal

Sortie de V8 v6.3

· 4 minutes de lecture
l'équipe V8

Tous 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 du maître Git de V8 juste avant une étape Beta de Chrome. Aujourd’hui, nous sommes ravis d’annoncer notre nouvelle branche, V8 version 6.3, qui est en beta jusqu’à sa sortie en coordination avec Chrome 63 Stable dans les semaines à venir. V8 v6.3 est remplie de toutes sortes de nouveautés pour les développeurs. Cet article fournit un aperçu de certains points forts en prévision de la sortie.

Rapidité

Jank Busters III est arrivé dans le cadre du projet Orinoco. Le marquage concurrent (70-80% des opérations de marquage est effectué sur un thread non-bloquant) est activé.

Le parseur n’a désormais plus besoin de prérédiger une fonction une seconde fois. Cela représente une amélioration médiane de 14% du temps de parsing sur notre benchmark interne Top25 de démarrage.

string.js a été entièrement porté sur CodeStubAssembler. Un grand merci à @peterwmwong pour ses contributions remarquables! En tant que développeur, cela signifie que les fonctions natives des chaînes de caractères comme String#trim sont bien plus rapides depuis V8 v6.3.

Les performances de Object.is() sont désormais à peu près au niveau des alternatives. En général, V8 v6.3 poursuit l’objectif d’améliorer les performances de l’ES2015+. Parmi d’autres, nous avons amélioré la vitesse d’accès polymorphique aux symboles, l’inlining polymorphique des appels de constructeurs et les littéraux modèles (taggés).

Les performances de V8 au cours des six dernières sorties

La liste des fonctions optimisées faibles a été supprimée. Plus d’informations sont disponibles dans l’article de blog dédié.

Les éléments mentionnés ne sont qu’une liste non exhaustive d’améliorations de performances. Beaucoup d’autres travaux liés aux performances ont été effectués.

Consommation mémoire

Les barrières d’écriture sont passées à l’utilisation de CodeStubAssembler. Cela économise environ 100 Ko de mémoire par instance.

Fonctionnalités du langage JavaScript

V8 prend désormais en charge les fonctionnalités de l’étape 3 suivantes : importation dynamique de modules via import(), Promise.prototype.finally() et les itérateurs/générateurs asynchrones.

Avec l’importation dynamique de modules, l’importation de modules en fonction des conditions d’exécution est très simple. Cela est utile lorsqu'une application doit charger certains modules de code de manière paresseuse.

Promise.prototype.finally introduit un moyen facile de nettoyer après la résolution d'une promesse.

L’itération avec des fonctions asynchrones est devenue plus ergonomique avec l’introduction des itérateurs/générateurs asynchrones.

Côté Intl, Intl.PluralRules est désormais pris en charge. Cette API permet des pluralisations internationalisées performantes.

Inspecteur/Débogage

Dans Chrome 63, la couverture des blocs est également prise en charge dans l’interface utilisateur DevTools. Veuillez noter que le protocole de l’inspecteur prend déjà en charge la couverture des blocs depuis V8 v6.2.

API V8

Veuillez consulter notre résumé des modifications de l’API. Ce document est régulièrement mis à jour quelques semaines après chaque sortie majeure.

Les développeurs disposant d’un checkout actif de V8 peuvent utiliser git checkout -b 6.3 -t branch-heads/6.3 pour expérimenter les nouvelles fonctionnalités de V8 v6.3. Sinon, vous pouvez vous abonner au canal Beta de Chrome et essayer bientôt les nouvelles fonctionnalités par vous-même.