V8 es un motor JavaScript de código abierto desarrollado por The Chromium Project para los navegadores web Google Chrome y Chromium . [5] El creador del proyecto es Lars Bak . [6] La primera versión del motor V8 fue lanzado al mismo tiempo que la primera versión de Chrome: 2 de septiembre de 2008. También se ha utilizado en el lado del servidor, por ejemplo en Couchbase , y Node.js .
Autor (es) original (es) | Lars Bak de Google |
---|---|
Desarrollador (es) | El proyecto Chromium |
Versión inicial | 2 de septiembre de 2008 |
Lanzamiento estable | 9.0 [1] / 17 de marzo de 2021 |
Repositorio | |
Escrito en | C ++ [2] |
Plataforma | IA-32 , x86-64 , ARM , AArch64 , MIPS , MIPS64 [3] PowerPC , IBM s390 |
Tipo | Motor de JavaScript |
Licencia | BSD [4] |
Sitio web | v8 |
Historia
El ensamblador V8 se basa en el ensamblador Strongtalk . [7] El 7 de diciembre de 2010, se lanzó una nueva infraestructura de compilación denominada Crankshaft, con mejoras de velocidad. [8] Desde la versión 41 de Chrome en 2015, proyecto turboventilador se ha añadido para permitir más velocidad, por ejemplo, para asm.js . [9]
En 2016, el intérprete de Ignition se agregó al V8 con el objetivo de diseño de reducir el uso de memoria en teléfonos Android con memoria pequeña en comparación con TurboFan y Crankshaft. [10]
En 2017, V8 envió una nueva línea de compiladores, que consta de Ignition (el intérprete) y TurboFan (el compilador de optimización). A partir de la versión 5.9 de V8, el código completo y el cigüeñal ya no se utilizan en V8 para la ejecución de JavaScript, ya que el equipo creía que ya no podían seguir el ritmo de las nuevas funciones del lenguaje JavaScript y las optimizaciones que requerían esas funciones. [11]
Diseño
V8 primero genera un árbol de sintaxis abstracto con su propio analizador. Luego, Ignition, el intérprete de V8, genera un código de bytes a partir de este árbol de sintaxis utilizando el formato de código de bytes interno de V8. [12] TurboFan es el compilador de optimización de V8, toma este código de bytes y genera código de máquina a partir de él. En otras palabras, V8 compila JavaScript directamente en el código de máquina nativo utilizando la compilación justo a tiempo antes de ejecutarlo. [13] El código compilado se optimiza adicionalmente (y re-optimiza) dinámicamente en tiempo de ejecución, basado en la heurística del perfil de ejecución del código. Las técnicas de optimización utilizadas incluyen la integración , la eliminación de costosas propiedades de tiempo de ejecución y el almacenamiento en caché en línea . El recolector de basura es un recolector incremental generacional . [14]
Uso
V8 puede compilar en arquitecturas de conjuntos de instrucciones x86 , ARM o MIPS en sus ediciones de 32 y 64 bits; también, ha sido portado a PowerPC [15] e IBM s390 [16] [17] para su uso en servidores. [3] [18]
V8 puede usarse en un navegador o integrarse en proyectos independientes. V8 se utiliza en el siguiente software:
- Google Chrome y otros navegadores web basados en Chromium , incluidos Brave , Opera , Vivaldi y Microsoft Edge .
- Servidor de base de datos de Couchbase
- Entorno de ejecución de Deno [19]
- Marco de aplicación de escritorio de Electron , utilizado por los editores de texto Atom y Visual Studio Code
- Servidor de base de datos MarkLogic
- Marco de aplicación móvil NativeScript [20]
- Entorno de ejecución de Node.js [21]
- Entorno de ejecución rápida de Qt [22]
Ver también
- Blink , el motor del navegador Chromium
- Comparación de motores JavaScript
Referencias
- ^ "Versión V8 v9.0" . Consultado el 17 de marzo de 2021 .
- ^ "Motor JavaScript V8" . Google LLC .
- ^ a b "Introducción - Chrome V8" . Corporación Google.
- ^ "v8 / LICENSE.v8 en master" . Github.
- ^ Lenssen, Philipp (1 de septiembre de 2008). "Google en Google Chrome - cómic" . Google Blogoscoped . Consultado el 17 de agosto de 2010 .
- ^ Minto, Rob (27 de marzo de 2009). "El genio detrás del navegador web de Google" . Financial Times . Consultado el 17 de agosto de 2010 .
- ^ "Motor JavaScript V8: Licencia" . Código de Google . Archivado desde el original el 22 de julio de 2010 . Consultado el 17 de agosto de 2010 .
- ^ "Un nuevo cigüeñal para V8" . Blog de Chromium . 7 de diciembre de 2010 . Consultado el 22 de abril de 2011 .
- ^ "Acelerando el rendimiento de JavaScript con TurboFan" . 7 de julio de 2015 . Consultado el 5 de marzo de 2016 .
- ^ "BlinkOn 6 Day 1 Talk 2: Ignition - un intérprete para V8" . 26 de junio de 2016 . Consultado el 2 de septiembre de 2016 .
- ^ "Lanzamiento de Ignition y TurboFan" . 16 de mayo de 2017 . Consultado el 13 de julio de 2017 .
- ^ Hinkelmann, Franziska (19 de diciembre de 2017). "Comprensión del código de bytes de V8" . Medio . Consultado el 17 de octubre de 2019 .
- ^ "Encendido del intérprete de encendido · V8" . v8.dev . Consultado el 30 de septiembre de 2020 .
- ^ "Un cambio de juego para el rendimiento interactivo" . Blog de Chromium . Consultado el 1 de mayo de 2012 .
- ^ "GitHub - ibmruntimes / v8ppc: Puerto del motor javascript de Google V8 a PowerPC®" . 21 de abril de 2019 - a través de GitHub.
- ^ "Puerto del motor JavaScript de Google V8 a z / OS. El puerto de Linux en Z se mantiene en la comunidad: ibmruntimes / v8z" . 2 de abril de 2019 - a través de GitHub.
- ^ "El soporte PPC para Google V8 se generaliza" . 30 de junio de 2015.
- ^ "Registro de cambios V8 v3.8.2" . Archivado desde el original el 22 de octubre de 2012 . Consultado el 23 de octubre de 2012 .
- ^ "Un tiempo de ejecución seguro de JavaScript / TypeScript construido con V8, Rust y Tokio: denoland / deno" . 8 de julio de 2019 - a través de GitHub.
- ^ "Descripción general: documentos de NativeScript" . docs.nativescript.org .
- ^ Jolie O'Dell (10 de marzo de 2011). "Por qué todo el mundo habla de Node" . Mashable.
- ^ "Diferencia entre qt qml y qt quick" . Desbordamiento de pila . Consultado el 26 de septiembre de 2020 .
enlaces externos
- Página web oficial