stringtranslate.com

V8 (motor JavaScript)

V8 es un motor JavaScript y WebAssembly desarrollado por Google para su navegador Chrome . [1] [4] V8 es un software gratuito y de código abierto que forma parte del proyecto Chromium y también se usa por separado en contextos que no son de navegador, en particular el sistema de tiempo de ejecución Node.js. [1]

Historia

Google creó V8 para su navegador Chrome , y ambos se lanzaron por primera vez en 2008. [4] El desarrollador principal de V8 fue Lars Bak , y recibió su nombre del potente motor de automóvil . [5] Durante varios años, Chrome fue más rápido que otros navegadores a la hora de ejecutar JavaScript . [6] [7] [8]

El ensamblador V8 se basa en el ensamblador Strongtalk . [9] El 7 de diciembre de 2010, se lanzó una nueva infraestructura de compilación llamada Crankshaft, con mejoras de velocidad. [10] En la versión 41 de Chrome en 2015, se agregó el proyecto TurboFan para proporcionar más mejoras de rendimiento con cargas de trabajo que antes eran desafiantes , como asm.js. [11] Gran parte del desarrollo de V8 está fuertemente inspirado en la máquina virtual Java HotSpot desarrollada por Sun Microsystems , siendo los procesos de ejecución más nuevos muy similares a los de HotSpot.

El soporte para el nuevo lenguaje WebAssembly comenzó en 2015. [12]

En 2016, se agregó el intérprete Ignition 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. [13] Ignition es una máquina basada en registros y comparte un diseño similar (aunque no exactamente igual) al intérprete de plantillas utilizado por HotSpot.

En 2017, V8 envió un nuevo compilador , que consta de Ignition (el intérprete ) y TurboFan (el compilador de optimización ). A partir de la versión 5.9 de V8, Full-codegen (el compilador básico inicial) y Crankshaft 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 características del lenguaje JavaScript y las optimizaciones que requerían esas características. . [14]

En 2021, se introdujo un nuevo canal de compilación por niveles con el lanzamiento del compilador SparkPlug, que complementa el compilador TurboFan existente dentro de V8, en paralelo directo al compilador C1 de creación de perfiles utilizado por HotSpot.

En 2023, se agregó el compilador basado en Maglev SSA , que es 10 veces más lento que Sparkplug pero 10 veces más rápido que TurboFan, cerrando la brecha entre Sparkplug y TurboFan para bucles que se ejecutan con menos frecuencia y que no se "calientan" lo suficiente como para optimizarlos. TurboFan, como es el caso de la mayoría de aplicaciones web que pasan más tiempo interactuando con el navegador que ejecutando JavaScript. [15]

Diseño

V8 primero genera un árbol de sintaxis abstracta con su propio analizador. [16] Luego, Ignition genera código de bytes a partir de este árbol de sintaxis utilizando el formato de código de bytes interno V8 . [17] TurboFan compila este código de bytes en código de máquina. En otras palabras, V8 compila ECMAScript directamente en código de máquina nativo mediante compilación justo a tiempo antes de ejecutarlo. [18] El código compilado se optimiza adicionalmente (y se vuelve a optimizar) dinámicamente en tiempo de ejecución, según la heurística del perfil de ejecución del código. Las técnicas de optimización utilizadas incluyen inserción en línea , elisión de costosas propiedades de tiempo de ejecución y almacenamiento en caché en línea . El recolector de basura es un recolector incremental generacional . [19]

Uso

V8 puede compilar en arquitecturas de conjuntos de instrucciones x86 , ARM o MIPS en sus ediciones de 32 y 64 bits ; Además, se ha portado a PowerPC , [20] [21] y a IBM ESA/390 y z/Architecture , [22] [20] para su uso en servidores. [23]

V8 se puede utilizar en un navegador o integrar en proyectos independientes. V8 se utiliza en el siguiente software:

Ver también

Referencias

  1. ^ abcd "Documentación · V8". Google . Consultado el 3 de marzo de 2024 .
  2. ^ "Estado de la plataforma Chrome" . Consultado el 29 de junio de 2023 .
  3. ^ "v8/LICENSE.v8 en el maestro". Github.
  4. ^ ab Lenssen, Philipp (1 de septiembre de 2008). "Google en Google Chrome: cómic". Blogografiado en Google . Consultado el 17 de agosto de 2010 .
  5. ^ "V8: un motor JavaScript de código abierto". YouTube . Google . Consultado el 15 de marzo de 2024 .
  6. ^ "Gran prueba de comparación de navegadores: Internet Explorer frente a Firefox, Opera, Safari y Chrome". Hardware de juegos de PC . Computec Media AG. 3 de julio de 2009. Archivado desde el original el 2 de mayo de 2012 . Consultado el 28 de junio de 2010 .
  7. ^ Purdy, Kevin (11 de junio de 2009). "Pruebas de velocidad de Lifehacker: Safari 4, Chrome 2". Hacker de vida . Archivado desde el original el 14 de abril de 2021 . Consultado el 8 de mayo de 2021 .
  8. ^ "Mozilla pregunta: '¿Ya somos rápidos?'". Cableado . Archivado desde el original el 22 de junio de 2018 . Consultado el 18 de enero de 2019 .
  9. ^ "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 .
  10. ^ "Un nuevo cigüeñal para V8". Blog de cromo . 7 de diciembre de 2010 . Consultado el 22 de abril de 2011 .
  11. ^ "Acelerando el rendimiento de JavaScript con TurboFan". 7 de julio de 2015 . Consultado el 5 de marzo de 2016 .
  12. ^ "Soporte experimental para WebAssembly en V8". v8.dev . Consultado el 12 de marzo de 2024 .
  13. ^ "BlinkOn 6 Día 1 Charla 2: Encendido: un intérprete para V8". YouTube . 26 de junio de 2016. Archivado desde el original el 21 de diciembre de 2021 . Consultado el 2 de septiembre de 2016 .
  14. ^ "Lanzamiento de Ignition y TurboFan". 16 de mayo de 2017 . Consultado el 13 de julio de 2017 .
  15. ^ "Maglev: el JIT de optimización más rápido de V8". 5 de diciembre de 2023 . Consultado el 26 de enero de 2024 .
  16. ^ Verwaest, Toon (25 de marzo de 2019). "Análisis increíblemente rápido, parte 1: optimización del escáner · V8". v8.dev . Archivado desde el original el 21 de abril de 2021 . Consultado el 1 de junio de 2021 .
  17. ^ Hinkelmann, Franziska (19 de diciembre de 2017). "Comprensión del código de bytes de V8". Medio . Consultado el 17 de octubre de 2019 .
  18. ^ "Encender el intérprete de Ignition · V8". v8.dev . Consultado el 30 de septiembre de 2020 .
  19. ^ "Un punto de inflexión para el rendimiento interactivo". blog.chromium.org . 21 de noviembre de 2011 . Consultado el 6 de febrero de 2022 .
  20. ^ ab "La compatibilidad con PPC para Google V8 se generaliza". 30 de junio de 2015. Archivado desde el original el 12 de septiembre de 2015.
  21. ^ "GitHub - ibmruntimes/v8ppc: migración del motor javascript de Google V8 a PowerPC®". 21 de abril de 2019 - vía GitHub.
  22. ^ "Puerto del motor JavaScript de Google V8 para z/OS. El puerto de Linux en Z se mantiene en la comunidad: ibmruntimes/v8z". 2 de abril de 2019 - vía GitHub.
  23. ^ "Registro de cambios V8 v3.8.2". Archivado desde el original el 22 de octubre de 2012 . Consultado el 23 de octubre de 2012 .
  24. ^ "Un tiempo de ejecución seguro de JavaScript/TypeScript creado con V8, Rust y Tokio: denoland/deno". 8 de julio de 2019 - vía GitHub.
  25. ^ "Descripción general: documentos de NativeScript". docs.nativescript.org .
  26. ^ Jolie O'Dell (10 de marzo de 2011). "Por qué todo el mundo habla de Node". Machacable.
  27. ^ "Diferencia entre qt qml y qt quick". Desbordamiento de pila . Consultado el 26 de septiembre de 2020 .

enlaces externos