Pular para o conteúdo principal

Lançamento do V8 v6.3

· Leitura de 4 minutos
A equipe V8

A cada seis semanas, criamos um novo ramo do V8 como parte do nosso processo de lançamento. Cada versão é ramificada do Git master do V8 imediatamente antes de um marco Beta do Chrome. Hoje estamos felizes em anunciar nosso novo ramo, V8 versão 6.3, que estará em beta até seu lançamento em conjunto com o Chrome 63 Stable em algumas semanas. O V8 v6.3 está repleto de todos os tipos de benefícios voltados para desenvolvedores. Esta postagem fornece uma prévia de alguns dos destaques em antecipação ao lançamento.

Velocidade

Jank Busters III chegou como parte do projeto Orinoco. A marcação simultânea (70-80% da marcação é feita em uma thread não bloqueante) foi lançada.

O analisador agora não precisa pré-analisar uma função pela segunda vez. Isso se traduz em uma melhoria mediana de 14% no tempo de análise em nosso benchmark interno de inicialização Top25.

string.js foi completamente portado para CodeStubAssembler. Muito obrigado a @peterwmwong por suas incríveis contribuições! Para os desenvolvedores, isso significa que funções de string embutidas como String#trim são muito mais rápidas a partir do V8 v6.3.

O desempenho de Object.is() agora está aproximadamente no mesmo nível de alternativas. Em geral, o V8 v6.3 continua o caminho para melhorar o desempenho do ES2015+. Além de outros itens, aumentamos a velocidade de acesso polimórfico a símbolos, inlining polimórfico de chamadas de construtor e (tagged) template literals.

Desempenho do V8 nas últimas seis versões

A lista de funções otimizadas fracas foi removida. Mais informações podem ser encontradas na postagem dedicada do blog.

Os itens mencionados são uma lista não exaustiva de melhorias de velocidade. Muitos outros trabalhos relacionados ao desempenho foram realizados.

Consumo de memória

Barreiras de gravação foram transferidas para usar o CodeStubAssembler. Isso economiza cerca de 100 KB de memória por isolado.

Recursos da linguagem JavaScript

O V8 agora suporta os seguintes recursos de estágio 3: importação dinâmica de módulos via import(), Promise.prototype.finally() e iteradores/geradores assíncronos.

Com importação dinâmica de módulos é muito simples importar módulos com base em condições de tempo de execução. Isso é útil quando um aplicativo deve carregar determinados módulos de código de forma preguiçosa.

Promise.prototype.finally introduz uma maneira fácil de limpar após a resolução de uma promessa.

A iteração com funções assíncronas ficou mais ergonômica com a introdução de iteradores/geradores assíncronos.

No lado do Intl, Intl.PluralRules agora é suportado. Essa API permite pluralizações internacionalizadas de alto desempenho.

Inspector/Depuração

No Chrome 63, block coverage também é suportado na interface do usuário do DevTools. Observe que o protocolo do inspector já suporta block coverage desde o V8 v6.2.

API V8

Confira nosso resumo de alterações na API. Este documento é regularmente atualizado algumas semanas após cada grande lançamento.

Os desenvolvedores com um checkout ativo do V8 podem usar git checkout -b 6.3 -t branch-heads/6.3 para experimentar os novos recursos no V8 v6.3. Alternativamente, você pode assinar o canal Beta do Chrome e experimentar os novos recursos em breve.