Aller au contenu principal

Publication de V8 version v4.5

· 4 minutes de lecture
l'équipe V8

Environ 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 de Git V8 juste avant que Chrome ne crée une branche pour une version bêta de Chrome. Aujourd'hui, nous sommes ravis d'annoncer notre toute dernière branche, V8 version 4.5, qui sera en version bêta jusqu'à sa sortie en coordination avec Chrome 45 Stable. V8 v4.5 regorge de fonctionnalités utiles pour les développeurs, et nous souhaitons vous donner un aperçu de certains des points forts en attendant la sortie dans quelques semaines.

Amélioration du support ECMAScript 2015 (ES6)

V8 v4.5 ajoute la prise en charge de plusieurs fonctionnalités ECMAScript 2015 (ES6).

Fonctions fléchées

Avec l'aide des Fonctions fléchées, il est possible d'écrire un code plus compact.

const data = [0, 1, 3];
// Code sans Fonctions fléchées
const convertedData = data.map(function(value) { return value * 2; });
console.log(convertedData);
// Code avec Fonctions fléchées
const convertedData = data.map(value => value * 2);
console.log(convertedData);

La liaison lexicale de 'this' est un autre avantage majeur des fonctions fléchées. Par conséquent, l'utilisation de callbacks dans les méthodes devient beaucoup plus facile.

class MyClass {
constructor() { this.a = 'Bonjour, '; }
hello() { setInterval(() => console.log(this.a + 'le monde!'), 1000); }
}
const myInstance = new MyClass();
myInstance.hello();

Fonctions pour tableaux/Tableaux typés

Toutes les nouvelles méthodes sur les Tableaux et Tableaux typés spécifiées dans ES2015 sont désormais prises en charge dans V8 v4.5. Elles rendent le travail avec les tableaux et tableaux typés plus pratique. Parmi les méthodes ajoutées figurent Array.from et Array.of. Des méthodes qui reflètent la plupart des méthodes Array pour chaque type de tableau typé ont également été ajoutées.

Object.assign

Object.assign permet aux développeurs de fusionner et cloner rapidement des objets.

const target = { a: 'Bonjour, ' };
const source = { b: 'monde!' };
// Fusion des objets.
Object.assign(target, source);
console.log(target.a + target.b);

Cette fonctionnalité peut également être utilisée pour mélanger des fonctionnalités.

Plus de fonctionnalités JavaScript deviennent “optimisables”

Pendant de nombreuses années, le compilateur optimisant traditionnel de V8, Crankshaft, a fait un excellent travail en optimisant de nombreux motifs JavaScript courants. Cependant, il n'a jamais eu la capacité de prendre en charge l'intégralité du langage JavaScript, et l'utilisation de certaines fonctionnalités linguistiques dans une fonction — telles que try/catch et with — empêchait son optimisation. V8 devait revenir à son compilateur de base plus lent pour cette fonction.

L'un des objectifs de conception du nouveau compilateur optimisant de V8, TurboFan, est de pouvoir éventuellement optimiser tout JavaScript, y compris les fonctionnalités ECMAScript 2015. Dans V8 v4.5, nous avons commencé à utiliser TurboFan pour optimiser certaines des fonctionnalités linguistiques non prises en charge par Crankshaft : for-of, class, with, et les noms de propriétés calculés.

Voici un exemple de code utilisant 'for-of', qui peut maintenant être compilé par TurboFan :

const sequence = ['Premier', 'Deuxième', 'Troisième'];
for (const value of sequence) {
// Ce scope est maintenant optimisable.
const object = {a: 'Bonjour, ', b: 'monde!', c: value};
console.log(object.a + object.b + object.c);
}

Bien que les fonctions utilisant initialement ces fonctionnalités linguistiques n'atteindront pas les mêmes performances maximales que d'autres codes compilés par Crankshaft, TurboFan peut désormais les accélérer bien au-delà de notre compilateur de base actuel. Encore mieux, les performances continueront à s'améliorer rapidement à mesure que nous développerons plus d'optimisations pour TurboFan.

API V8

Veuillez consulter notre résumé des changements d'API. Ce document est régulièrement mis à jour quelques semaines après chaque version majeure.

Les développeurs avec une copie locale active de V8 peuvent utiliser git checkout -b 4.5 -t branch-heads/4.5 pour expérimenter les nouvelles fonctionnalités de V8 v4.5. Alternativement, vous pouvez vous abonner au canal bêta de Chrome et essayer bientôt vous-même les nouvelles fonctionnalités.