Pular para o conteúdo principal

Lançamento do V8 v5.7

· Leitura de 4 minutos
A equipe V8

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é ramificada a partir do Git master do V8 imediatamente antes de um marco Beta do Chrome. Hoje, estamos felizes em anunciar nosso mais novo branch, V8 versão 5.7, que estará em beta até seu lançamento em coordenação com o Chrome 57 Stable em algumas semanas. O V8 5.7 está repleto de novidades voltadas para desenvolvedores. Gostaríamos de oferecer um prévia de alguns destaques em antecipação ao lançamento.

Melhorias de desempenho

Funções assíncronas nativas tão rápidas quanto Promises

As funções assíncronas agora são aproximadamente tão rápidas quanto o mesmo código escrito com Promises. O desempenho de execução das funções assíncronas quadruplicou de acordo com nossos microbenchmarks. Durante o mesmo período, o desempenho geral de Promises também dobrou.

Melhorias no desempenho assíncrono do V8 em Linux x64

Melhoria contínua do ES2015

O V8 continua a tornar os recursos da linguagem ES2015 mais rápidos para que os desenvolvedores utilizem novos recursos sem sofrer custos de desempenho. O operador spread, a desestruturação e os geradores agora são aproximadamente tão rápidos quanto seus equivalentes ingênuos do ES5.

RegExp 15% mais rápido

Migrar funções RegExp de uma implementação de JavaScript auto-hospedada para uma que se conecta à arquitetura de geração de código do TurboFan resultou em um desempenho de RegExp ~15% mais rápido no geral. Mais detalhes podem ser encontrados no post dedicado do blog.

Recursos da linguagem JavaScript

Várias adições recentes à biblioteca padrão ECMAScript estão incluídas nesta versão. Dois métodos de String, padStart e padEnd, fornecem recursos úteis de formatação de strings, enquanto Intl.DateTimeFormat.prototype.formatToParts oferece aos autores a capacidade de personalizar a formatação de data/hora de forma sensível ao idioma.

WebAssembly habilitado

O Chrome 57 (que inclui o V8 v5.7) será o primeiro lançamento a habilitar o WebAssembly por padrão. Para mais detalhes, consulte os documentos introdutórios em webassembly.org e a documentação da API no MDN.

Adições à API do V8

Por favor, confira nosso resumo das alterações da API. Este documento é atualizado regularmente algumas semanas após cada grande lançamento. Desenvolvedores com um checkout ativo do V8 podem usar git checkout -b 5.7 -t branch-heads/5.7 para experimentar os novos recursos do V8 v5.7. Alternativamente, você pode assinar o canal Beta do Chrome e experimentar os novos recursos em breve.

PromiseHook

Esta API C++ permite aos usuários implementar código de perfil que rastreia o ciclo de vida de Promises. Isso habilita a futura API AsyncHook do Node, que permite construir propagação de contexto assíncrono.

A API PromiseHook fornece quatro ganchos de ciclo de vida: init, resolve, antes e depois. O gancho init é executado quando uma nova Promise é criada; o gancho resolve é executado quando uma Promise é resolvida; os ganchos antes & depois são executados imediatamente antes e depois de um PromiseReactionJob. Para mais informações, confira o issue de acompanhamento e o documento de design.