V8 (moteur JavaScript)

Un article de Wikipédia, l'encyclopédie libre.
V8
Description de l'image V8 JavaScript engine logo 2.svg.

Informations
Développé par GoogleVoir et modifier les données sur Wikidata
Dernière version 9.0 ()[1]Voir et modifier les données sur Wikidata
Dépôt chromium.googlesource.com/v8/v8Voir et modifier les données sur Wikidata
Écrit en C++ et JavaScriptVoir et modifier les données sur Wikidata
Système d'exploitation Microsoft Windows, Linux, macOS, FreeBSD, Android, Chrome OS, webOS et BlackBerry 10Voir et modifier les données sur Wikidata
Environnement IA-32 (en), x86_64 et architecture ARMVoir et modifier les données sur Wikidata
Type Moteur JavaScript
Machine virtuelleVoir et modifier les données sur Wikidata
Licence Licence BSDVoir et modifier les données sur Wikidata
Site web v8.devVoir et modifier les données sur Wikidata

V8 est un moteur JavaScript open-source développé par le projet Chromium pour les navigateurs Web Google Chrome et Chromium[2]. Le créateur du projet est Lars Bak[3]. La première version du moteur V8 a été publiée en même temps que la première version de Chrome, le . Il a également été utilisé dans Couchbase, MongoDB et Node.js côté serveur.

V8 compile directement le code JavaScript en code machine natif avant de l’exécuter, au lieu d'utiliser des techniques plus traditionnelles telles que l’interprétation du bytecode ou la compilation du programme complet en code machine et l’exécution à partir d’un système de fichiers. Le code compilé est en outre optimisé (et ré-optimisé) dynamiquement au moment de l'exécution, en fonction du profil d'exécution du code. Les techniques d'optimisation utilisées comprennent inlining, elision des propriétés d'exécution coûteuses, et la mise en cache. Le ramasse-miettes est un collecteur incrémental de génération[4].

V8 peut compiler vers x86, ARM ou MIPS dans leurs éditions 32 bits et 64 bits ; de plus, il a été porté sur PowerPC[5] et IBM S/390[6],[7] pour une utilisation sur des serveurs[8].

Historique[modifier | modifier le code]

L'assembleur V8 est basé sur l'assembleur Strongtalk[9]. Le nom fait référence aux puissants moteurs V8 de voitures sportives.[10] Le , une nouvelle infrastructure de compilation appelée Crankshaft a été publiée, avec des améliorations sur la vitesse[11]. Depuis la version 41 de Chrome en 2015, le projet TurboFan a été ajouté pour permettre plus de vitesse, par exemple pour asm.js[12].

En 2016, l'interpréteur Ignition a été ajouté à V8 dans le but de réduire la mémoire utilisée par les téléphones Android à mémoire réduite par rapport à TurboFan et Crankshaft[13].

En 2017, V8 a livré un tout nouveau pipeline de compilateur, composé d'Ignition (l'interpréteur) et de TurboFan (le compilateur d'optimisation). À partir de la version V9 5.9, Full-codegen et Crankshaft ne sont plus utilisés dans V8 pour l'exécution de JavaScript, car l'équipe estime ne plus être en mesure de suivre le rythme des nouvelles fonctionnalités du langage JavaScript et des optimisations requises [14].

Utilisation[modifier | modifier le code]

V8 est destiné à être utilisé à la fois dans un navigateur et en tant que moteur autonome hautes performances pouvant être intégré à des projets indépendants. V8 est utilisé dans les logiciels suivants :

Voir également[modifier | modifier le code]

Références[modifier | modifier le code]

  1. « V8 release v9.0 » (consulté le )
  2. Lenssen, « Google on Google Chrome - comic book », Google Blogoscoped, Google, (consulté le )
  3. Minto, « The genius behind Google’s web browser », Financial Times, (consulté le )
  4. « A game changer for interactive performance », Chromium Blog, Google (consulté le )
  5. « Port of Google V8 javascript engine to PowerPC®. Contribute to ibmruntimes/v8ppc development by creating an account on GitHub », sur GitHub,
  6. « Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: https://chromium.googlesource.com/v8/v8.git: ibmruntimes/v8z », sur GitHub,
  7. mhdawson, « PPC support for Google V8 goes mainstream »,
  8. « V8 Changelog v3.8.2 », Google (consulté le )
  9. « V8 JavaScript Engine: License » [archive du ], Google Code, Google (consulté le )
  10. « Celebrating 10 years of V8 · V8 », sur v8.dev (consulté le )
  11. « A New Crankshaft for V8 », Chromium Blog, Google, (consulté le )
  12. « Revving up JavaScript performance with TurboFan », (consulté le )
  13. « BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8 », (consulté le )
  14. « Launching Ignition and TurboFan », (consulté le )
  15. Jolie O'Dell, « Why Everyone Is Talking About Node », Mashable,
  16. « NativeScript Android Runtime Overview »