Aller au contenu principal

Contenu supplémentaire pour "Comprendre la spécification ECMAScript, partie 2"

· 3 minutes de lecture
[Marja Hölttä](https://twitter.com/marjakh), spectatrice de spécifications spéculatives

Pourquoi o2.foo est-il une AssignmentExpression ?

o2.foo ne ressemble pas à une AssignmentExpression puisqu'il n'y a pas d'affectation. Pourquoi est-ce une AssignmentExpression ?

La spécification autorise en fait une AssignmentExpression à la fois comme argument et comme côté droit d'une affectation. Par exemple :

function simple(a) {
console.log('L'argument était ' + a);
}
simple(x = 1);
// → Affiche “L'argument était 1”.
x;
// → 1

…et…

x = y = 5;
x; // 5
y; // 5

o2.foo est une AssignmentExpression qui n'assigne rien. Cela découle des productions grammaticales suivantes, chaque une prenant le cas « le plus simple » jusqu'à la dernière :

Une AssignmentExpression n'a pas besoin d'avoir une affectation, elle peut aussi être juste une ConditionalExpression :

AssignmentExpression : ConditionalExpression

(Il existe d'autres productions également, ici nous montrons uniquement celle pertinente.)

Une ConditionalExpression n'a pas besoin d'avoir une condition (a == b ? c : d), elle peut aussi être simplement une ShortcircuitExpression :

ConditionalExpression : ShortCircuitExpression

Et ainsi de suite :

ShortCircuitExpression : LogicalORExpression

LogicalORExpression : LogicalANDExpression

LogicalANDExpression : BitwiseORExpression

BitwiseORExpression : BitwiseXORExpression

BitwiseXORExpression : BitwiseANDExpression

BitwiseANDExpression : EqualityExpression

EqualityExpression : RelationalExpression

RelationalExpression : ShiftExpression

Publication de V8 version 8.1

· 2 minutes de lecture
Dominik Inführ, l'homme international de mystère

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 maître Git de V8 immédiatement avant une étape de Chrome Beta. Aujourd'hui, nous sommes heureux d'annoncer notre toute nouvelle branche, V8 version 8.1, qui est en phase bêta jusqu'à sa sortie simultanée avec Chrome 81 Stable dans plusieurs semaines. V8 v8.1 regorge de trésors à destination des développeurs. Ce post propose un aperçu de certains des points forts en prévision de sa publication.

Comprendre la spécification ECMAScript, partie 1

· 10 minutes de lecture
[Marja Hölttä](https://twitter.com/marjakh), spectateur spéculatif de la spécification

Tous les épisodes

Dans cet article, nous prenons une fonction simple de la spécification et essayons de comprendre la notation. Allons-y !

Préface

Même si vous connaissez JavaScript, lire sa spécification de langage, Spécification du langage ECMAScript, ou la spécification ECMAScript en abrégé, peut être assez intimidant. C’est au moins ce que j’ai ressenti lorsque je l’ai lue pour la première fois.

Version V8 release v8.0

· 6 minutes de lecture
Leszek Swirski, huitième de son nom

C'est enfin là. À chaque sortie V8, toutes les six semaines lorsque nous bifurquons dans le cadre de notre processus de publication, la question se pose de savoir ce qui se passera lorsque V8 atteindra la version 8. Aura-t-on une fête ? Fournirons-nous un nouveau compilateur ? Ignorerons-nous les versions 8 et 9 pour rester éternellement à une version V8 X ? Enfin, après plus de 10 ans de travail, dans notre 100e article de blog, nous sommes heureux d'annoncer notre nouvelle branche, V8 version 8.0 V8, et nous pouvons enfin répondre à cette question :

En dehors du web : binaires WebAssembly autonomes avec Emscripten

· 15 minutes de lecture
Alon Zakai

Emscripten s'est toujours concentré en priorité sur la compilation pour le web et autres environnements JavaScript comme Node.js. Mais à mesure que WebAssembly commence à être utilisé sans JavaScript, de nouveaux cas d'utilisation apparaissent, et nous avons travaillé sur la prise en charge de l'émission de fichiers Wasm autonomes à partir d'Emscripten, qui ne dépendent pas de l'environnement d'exécution JavaScript d'Emscripten ! Ce post explique pourquoi cela est intéressant.

v8-release-79

· 6 minutes de lecture

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 master Git de V8 juste avant une étape de Chrome Beta. Aujourd'hui, nous sommes heureux d'annoncer notre nouvelle branche, V8 version 7.9, qui est en version bêta avant sa sortie en coordination avec Chrome 79 Stable dans plusieurs semaines. V8 v7.9 regorge de toutes sortes de fonctionnalités destinées aux développeurs. Ce post fournit un aperçu de certains faits saillants en vue de la sortie.

Améliorer les expressions régulières V8

· 8 minutes de lecture
Patrick Thier et Ana Peško, exprimeurs réguliers d'opinions sur les expressions régulières

Dans sa configuration par défaut, V8 compile les expressions régulières en code natif lors de leur première exécution. Dans le cadre de notre travail sur V8 sans JIT, nous avons introduit un interpréteur pour les expressions régulières. L'interprétation des expressions régulières présente l'avantage d'utiliser moins de mémoire, mais cela entraîne une pénalité en termes de performances. Dans cet article de blog, nous décrivons comment nous tirons parti des avantages de l'interprétation des expressions régulières tout en atténuant ses inconvénients.

V8 release v7.8

· 7 minutes de lecture
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), le sourcier paresseux

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 Chrome Beta. Aujourd'hui, nous sommes heureux d'annoncer notre dernière branche, V8 version 7.8, qui est en bêta jusqu'à sa sortie coordonnée avec Chrome 78 Stable dans plusieurs semaines. V8 v7.8 est rempli de toutes sortes de bonus pour les développeurs. Ce post donne un aperçu de certains des points forts en prévision de la sortie.

Un V8 plus léger

· 13 minutes de lecture
Mythri Alle, Dan Elphick, et [Ross McIlroy](https://twitter.com/rossmcilroy), observateurs de poids du V8

Fin 2018, nous avons lancé un projet nommé V8 Lite, visant à réduire drastiquement la consommation de mémoire de V8. Initialement, ce projet était conçu comme un mode Lite distinct de V8, destiné spécifiquement aux appareils mobiles à faible mémoire ou aux cas d'utilisations embarqués privilégiant la réduction de l'utilisation de la mémoire plutôt que la vitesse d'exécution. Cependant, au cours de ce travail, nous avons réalisé que bon nombre des optimisations mémoire que nous avions conçues pour ce mode Lite pouvaient être intégrées au V8 ordinaire, bénéficiant ainsi à tous les utilisateurs de V8.

L'histoire d'une chute de performance V8 dans React

· 20 minutes de lecture
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) et Mathias Bynens ([@mathias](https://twitter.com/mathias))

Précédemment, nous avons discuté de la manière dont les moteurs JavaScript optimisent l'accès aux objets et aux tableaux grâce à l'utilisation de Shapes et d'Inline Caches, et nous avons exploré comment les moteurs accélèrent l'accès aux propriétés de prototype en particulier. Cet article décrit comment V8 choisit les représentations en mémoire optimales pour diverses valeurs JavaScript, et comment cela impacte les mécanismes de formes — tout cela aide à expliquer une récente chute de performance V8 dans le cœur de React.