Lanzamiento de V8 v5.7
Cada seis semanas, creamos una nueva rama de V8 como parte de nuestro proceso de lanzamiento. Cada versión se ramifica desde el repositorio maestro de Git de V8 inmediatamente antes de un hito Beta de Chrome. Hoy nos complace anunciar nuestra nueva rama, V8 versión 5.7, que estará en beta hasta que sea lanzada en coordinación con Chrome 57 Estable en varias semanas. V8 5.7 está llena de todo tipo de beneficios visibles para los desarrolladores. Nos gustaría ofrecerte un adelanto de algunos de los aspectos destacados en anticipación al lanzamiento.
Mejoras de rendimiento
Funciones async nativas tan rápidas como las promesas
Las funciones async ahora son aproximadamente tan rápidas como el mismo código escrito con promesas. El rendimiento de ejecución de las funciones async se cuadruplicó según nuestros microbenchmarks. Durante el mismo período, el rendimiento general de las promesas también se duplicó.
Continuas mejoras en ES2015
V8 sigue haciendo que las características del lenguaje ES2015 sean más rápidas para que los desarrolladores las utilicen sin incurrir en costos de rendimiento. El operador de propagación, la desestructuración y los generadores ahora son aproximadamente tan rápidos como sus equivalentes ingenuos en ES5.
RegExp un 15% más rápido
La migración de las funciones RegExp de una implementación en JavaScript autoalojada a una que se conecta con la arquitectura de generación de código de TurboFan ha generado un ~15% más de rendimiento general en RegExp. Más detalles pueden encontrarse en la publicación de blog dedicada.
Características del lenguaje JavaScript
En esta versión se incluyen varios añadidos recientes a la biblioteca estándar de ECMAScript. Dos métodos de String, padStart
y padEnd
, brindan características útiles de formateo de cadenas, mientras que Intl.DateTimeFormat.prototype.formatToParts
permite a los autores personalizar el formato de fechas/horas de manera sensible a la configuración regional.
WebAssembly habilitado
Chrome 57 (que incluye V8 v5.7) será la primera versión en habilitar WebAssembly por defecto. Para más detalles, consulta los documentos de inicio en webassembly.org y la documentación de la API en MDN.
Adiciones a la API de V8
Por favor, consulta nuestro resumen de cambios en la API. Este documento se actualiza regularmente unas semanas después de cada lanzamiento importante. Los desarrolladores con un checkout activo de V8 pueden usar git checkout -b 5.7 -t branch-heads/5.7
para experimentar con las nuevas características en V8 v5.7. Alternativamente, puedes suscribirte al canal Beta de Chrome y probar las nuevas características tú mismo pronto.
PromiseHook
Esta API en C++ permite a los usuarios implementar código de perfilado que rastrea el ciclo de vida de las promesas. Esto habilita la próxima API AsyncHook de Node que permite construir propagación de contexto async.
La API PromiseHook
proporciona cuatro ganchos de ciclo de vida: init, resolve, before y after. El gancho init se ejecuta cuando se crea una nueva promesa; el gancho resolve se ejecuta cuando una promesa se resuelve; los ganchos pre y post se ejecutan justo antes y después de un PromiseReactionJob
. Para más información, consulta el issue de seguimiento y el documento de diseño.