Saltar al contenido principal

Lanzamiento de V8 v6.3

· 4 min de lectura
el equipo de V8

Cada seis semanas, creamos una nueva rama de V8 como parte de nuestro proceso de lanzamiento. Cada versión se deriva del Git master de V8 inmediatamente antes de un hito de Chrome Beta. Hoy nos complace anunciar nuestra rama más reciente, versión 6.3 de V8, que está en beta hasta su lanzamiento en coordinación con Chrome 63 Stable en varias semanas. V8 v6.3 está repleta de todo tipo de novedades para desarrolladores. Este post proporciona un adelanto de algunos de los aspectos destacados en anticipación al lanzamiento.

Velocidad

Jank Busters III llegó como parte del proyecto Orinoco. El marcado concurrente (70-80% del marcado se realiza en un hilo no bloqueante) está incluido.

El analizador ahora no necesita preanalizar una función por segunda vez. Esto se traduce en una mejora mediana del 14% en el tiempo de análisis en nuestro benchmark interno de inicio Top25.

string.js ha sido completamente migrado a CodeStubAssembler. Muchas gracias a @peterwmwong por sus increíbles contribuciones! Para los desarrolladores, esto significa que las funciones incorporadas de cadenas como String#trim son mucho más rápidas a partir de V8 v6.3.

El rendimiento de Object.is() ahora está más o menos a la par con las alternativas. En general, V8 v6.3 sigue mejorando el rendimiento de ES2015+. Entre otros elementos, incrementamos la velocidad de acceso polimórfico a símbolos, la inclusión polimórfica de llamadas a constructores y literales de plantilla (etiquetados).

Rendimiento de V8 durante las últimas seis versiones

La lista de funciones optimizadas débiles ha sido eliminada. Más información se puede encontrar en el post dedicado.

Los elementos mencionados son una lista no exhaustiva de las mejoras de velocidad. Se han realizado muchos otros trabajos relacionados con el rendimiento.

Consumo de memoria

Las barreras de escritura ahora utilizan CodeStubAssembler. Esto ahorra alrededor de 100 KB de memoria por aislado.

Características del lenguaje JavaScript

V8 ahora soporta las siguientes características de etapa 3: importación dinámica de módulos vía import(), Promise.prototype.finally() y iteradores/generadores asíncronos.

Con importación dinámica de módulos es muy sencillo importar módulos basados en condiciones de tiempo de ejecución. Esto es útil cuando una aplicación debe cargar ciertos módulos de código de forma diferida.

Promise.prototype.finally introduce una forma fácil de realizar limpieza después de que una promesa se resuelve.

La iteración con funciones asíncronas se ha vuelto más ergonómica con la introducción de iteradores/generadores asíncronos.

En el lado de Intl, Intl.PluralRules ahora es compatible. Esta API permite pluralizaciones internacionalizadas eficientes.

Inspector/Depuración

En Chrome 63, la cobertura de bloques también es compatible en la interfaz de DevTools. Por favor, tenga en cuenta que el protocolo del inspector ya soporta cobertura de bloques desde V8 v6.2.

API de V8

Por favor, revise 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 6.3 -t branch-heads/6.3 para experimentar con las nuevas características en V8 v6.3. Alternativamente, puede suscribirse al canal Beta de Chrome y probar las nuevas características pronto usted mismo.