Aller au contenu principal

Publication V8 v8.5

· 5 minutes de lecture
Zeynep Cankara, suivant quelques cartes

Tous les six semaines, nous créons une nouvelle branche de V8 dans le cadre de notre processus de publication. Chaque version est issue du master Git de V8 juste avant une étape bêta de Chrome. Aujourd'hui, nous sommes ravis d'annoncer notre nouvelle branche, V8 version 8.5, qui est en bêta jusqu'à sa publication en coordination avec Chrome 85 Stable dans quelques semaines. V8 v8.5 regorge de nombreuses nouveautés destinées aux développeurs. Ce post offre un aperçu de certains points forts en prévision de la publication.

Sortie V8 v8.4

· 5 minutes de lecture
Camillo Bruni, profitant de nouveaux booléens

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 8.4, qui est en phase beta jusqu’à sa sortie en coordination avec la version stable de Chrome 84 dans quelques semaines. V8 v8.4 regorge de nombreuses fonctionnalités axées sur les développeurs. Ce poste fournit un aperçu de certains faits saillants en prévision de la sortie.

Collecte des ordures haute performance pour C++

· 11 minutes de lecture
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)), et Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), experts en mémoire C++

Dans le passé, nous avons déjà écrit des articles sur la collecte des ordures pour JavaScript, le modèle objet document (DOM), et comment tout cela est implémenté et optimisé dans V8. Cependant, tout n'est pas JavaScript dans Chromium, car la majeure partie du navigateur et de son moteur de rendu Blink, où V8 est intégré, est écrite en C++. JavaScript peut être utilisé pour interagir avec le DOM, qui est ensuite traité par la chaîne de rendu.

Comprendre la spécification ECMAScript, partie 4

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

Tous les épisodes

Pendant ce temps dans d'autres parties du Web

Jason Orendorff de Mozilla a publié une excellente analyse approfondie des particularités syntaxiques du JavaScript. Bien que les détails de l'implémentation diffèrent, chaque moteur JS fait face aux mêmes problèmes avec ces particularités.

Jusqu'à 4 Go de mémoire dans WebAssembly

· 9 minutes de lecture
Andreas Haas, Jakob Kummerow, et Alon Zakai

Introduction

Grâce à des travaux récents sur Chrome et Emscripten, vous pouvez désormais utiliser jusqu'à 4 Go de mémoire dans les applications WebAssembly. C'est une augmentation par rapport à la limite précédente de 2 Go. Cela peut sembler étrange qu'il y ait eu une limite - après tout, aucun travail n'était nécessaire pour permettre aux gens d'utiliser 512 Mo ou 1 Go de mémoire ! - mais il s'avère qu'il y a des aspects spéciaux concernant le passage de 2 Go à 4 Go, à la fois dans le navigateur et dans la chaîne d'outils, que nous décrirons dans cet article.

Sortie de V8 v8.3

· 4 minutes de lecture
[Victor Gomes](https://twitter.com/VictorBFG), travaillant en toute sécurité depuis chez lui

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 du master Git de V8 juste avant une étape Beta de Chrome. Aujourd’hui, nous sommes heureux d’annoncer notre nouvelle branche, V8 version 8.3, qui est en version bêta jusqu’à sa sortie en coordination avec Chrome 83 Stable dans quelques semaines. V8 v8.3 regorge de toutes sortes de fonctionnalités destinées aux développeurs. Cet article propose un aperçu de certains points forts en prévision de la sortie.

Qu'y a-t-il dans ce `.wasm`? Présentation : `wasm-decompile`

· 8 minutes de lecture
Wouter van Oortmerssen ([@wvo](https://twitter.com/wvo))

Nous avons un nombre croissant de compilateurs et d'autres outils qui génèrent ou manipulent des fichiers .wasm, et parfois, vous pourriez vouloir jeter un œil à l'intérieur. Peut-être êtes-vous un développeur de cet outil ou, plus directement, vous êtes un programmeur ciblant Wasm et vous vous demandez à quoi ressemble le code généré, pour des raisons de performance ou autres.

Comprendre la spécification ECMAScript, partie 3

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

Tous les épisodes

Dans cet épisode, nous approfondirons la définition du langage ECMAScript et sa syntaxe. Si vous n'êtes pas familier avec les grammaires libres de contexte, c'est le bon moment pour vérifier les bases, car la spécification utilise des grammaires libres de contexte pour définir le langage. Consultez le chapitre sur les grammaires libres de contexte dans "Crafting Interpreters" pour une introduction accessible ou la page Wikipédia pour une définition plus mathématique.

Compression des pointeurs dans V8

· 25 minutes de lecture
Igor Sheludko et Santiago Aboy Solanes, *les* compresseurs de pointeurs

Il existe une bataille constante entre mémoire et performance. En tant qu'utilisateurs, nous souhaitons que les choses soient rapides tout en consommant le moins de mémoire possible. Malheureusement, améliorer la performance se fait généralement au détriment de la consommation de mémoire (et vice versa).

Comprendre la spécification ECMAScript, partie 2

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

Continuons à pratiquer nos incroyables compétences de lecture des spécifications. Si vous n’avez pas jeté un œil au premier épisode, c’est le moment de le faire !

Tous les épisodes

Prêt pour la partie 2 ?

Une manière amusante de se familiariser avec la spécification est de commencer par une fonctionnalité JavaScript que nous connaissons, et de découvrir comment elle est spécifiée.

Attention ! Cet épisode contient des algorithmes copiés-collés de la spécification ECMAScript en février 2020. Ils deviendront éventuellement obsolètes.

Nous savons que les propriétés sont recherchées dans la chaîne de prototypes : si un objet n’a pas la propriété que nous essayons de lire, nous remontons la chaîne de prototypes jusqu’à la trouver (ou jusqu’à atteindre un objet qui n’a plus de prototype).

Par exemple :

const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99

Où est défini le parcours de la chaîne de prototypes ?

Essayons de découvrir où ce comportement est défini. Une bonne entrée en matière est la liste des Méthodes Interne d'Objet.

Il y a à la fois [[GetOwnProperty]] et [[Get]] — nous sommes intéressés par la version qui ne se limite pas aux propriétés propres, donc nous choisirons [[Get]].

Malheureusement, le type de spécification des descripteurs de propriété a également un champ appelé [[Get]], donc en parcourant la spécification pour [[Get]], nous devons soigneusement distinguer les deux usages indépendants.