¿Qué es V8?
V8 es un motor open-source escrito en C++ para compilar JavaScript y WebAssembly en código máquina. Esto quiere decir que traduce JavasScript a un código puramente digital capaz de ser interpretado por la CPU donde se ejecuta.
Este motor fue desarrollado por Google para Google Chrome y su primera versión vio la luz en 2008 junto con la primera versión del navegador.
Además de Chrome, el resto de navegadores basados en Chromium también usan este motor como, por ejemplo, en el nuevo Microsoft Edge. El motivo por el que este motor es tan eficiente y rápido es precisamente porque compila el código JavaScript en lugar de interpretarlo, lo cual baja drásticamente su tiempo de ejecución.
Además de esto, V8 se encarga de gestionar el call stak,que es la pila de ejecución; el memory heap, que es la zona de almacenamiento dinámica donde se almacenan las variables declaradas en los bloques; y el garbage collector para limpiar y liberar espacio. Por último, proporciona todos los tipos de datos, operadores, objetos y funciones.
V8 y node.js
Una característica del motor V8 es que es independiente del navegador en el que está alojado. Esta característica fue clave el rápido auge de Node.js.
V8 fue elegido para ser el motor que impulsó Node.js en 2009. A medida que la popularidad de Node.js creció, V8 se convirtió en un gran motor para ejecutar JavaScript del lado del servidor.
Además, ha sumado al ecosistema grandes herramientas para ejecutar JavaScript también es escritorio como Electron o las famosas PWA.
Por su parte, V8 v8.0 ya está aquí. La esperada versión del famoso motor JavaScript y Web Assembly vio la luz hace unos días y, además de las típicas correcciones de bugs, nos trae varias novedades.
Tamaño y velocidad
Gracias a la compresión de punteros es capar de reducir en un 40% el uso de memoria. En la práctica, esto se traduce en una carga más rápida de las webs. Estos son los números de las pruebas que ha hecho el equipo de V8 sobre webs reales:
JavaScript
A partir de ahora podremos hacer uso de nuevas características del lenguaje. La que más nos ha llamado la atención es el Optional chaining que hará mucho más legible el código.
Hasta ahora esta era la forma de comprobar si un objeto contenía propiedades anidadas antes de asignarla a una variable:
A partir de ahora podremos hacerlo directamente de esta otra forma mucho más clara: