Pular para o conteúdo principal

Análise extremamente rápida, parte 1: otimizando o scanner

· Leitura de 12 minutos
Toon Verwaest ([@tverwaes](https://twitter.com/tverwaes)), otimização escandalosa

Para executar um programa JavaScript, o texto-fonte precisa ser processado para que o V8 possa entendê-lo. O V8 começa analisando o texto-fonte em uma árvore de sintaxe abstrata (AST), um conjunto de objetos que representam a estrutura do programa. Essa AST é compilada em bytecode pelo Ignition. O desempenho dessas fases de análise + compilação é importante: o V8 não pode executar o código antes que a compilação esteja concluída. Nesta série de posts de blog, focamos na análise e no trabalho feito no V8 para entregar um analisador extremamente rápido.

Lançamento do V8 v7.4

· Leitura de 9 minutos
Georg Neis

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é ramificada a partir da ramificação principal do Git do V8 imediatamente antes de um marco Beta do Chrome. Hoje, temos o prazer de anunciar nosso mais novo branch, V8 versão 7.4, que está em beta até seu lançamento em coordenação com o Chrome 74 Stable em algumas semanas. O V8 v7.4 está repleto de recursos voltados para desenvolvedores. Este post oferece uma prévia de alguns dos destaques em antecipação ao lançamento.

V8 sem JIT

· Leitura de 4 minutos
Jakob Gruber ([@schuay](https://twitter.com/schuay))

O V8 v7.4 agora suporta execução de JavaScript sem alocar memória executável em tempo de execução.

Na sua configuração padrão, o V8 depende muito da capacidade de alocar e modificar memória executável em tempo de execução. Por exemplo, o compilador otimizador TurboFan cria código nativo para funções JavaScript (JS) em tempo de execução, e a maioria das expressões regulares de JS são compiladas em código nativo pelo motor irregexp. Criar memória executável em tempo de execução é parte do que torna o V8 rápido.

Lançamento do V8 v7.3

· Leitura de 4 minutos
Clemens Backes, especialista em compiladores

A cada seis semanas, criamos um novo branch do V8 como parte de nosso processo de lançamento. Cada versão é derivada do Git master do V8 imediatamente antes de um marco do Chrome Beta. Hoje estamos felizes em anunciar nosso mais novo branch, V8 versão 7.3, que está em beta até seu lançamento em coordenação com o Chrome 73 Stable em algumas semanas. O V8 v7.3 está repleto de melhorias voltadas aos desenvolvedores. Este post fornece uma prévia de alguns destaques em antecipação ao lançamento.

Trash talk: o coletor de lixo Orinoco

· Leitura de 14 minutos
Peter ‘o garbo’ Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

Ao longo dos últimos anos, o coletor de lixo (GC) do V8 mudou bastante. O projeto Orinoco transformou um coletor de lixo sequencial e de pausa total em um coletor em grande parte paralelo e concorrente com fallback incremental.

Lançamento do V8 v7.2

· Leitura de 5 minutos
Andreas Haas, manipulador de traps

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é criada a partir do repositório Git master do V8 imediatamente antes de um marco Beta do Chrome. Hoje estamos felizes em anunciar nosso mais novo branch, V8 versão 7.2, que está em beta até seu lançamento em coordenação com o Chrome 72 Estável em algumas semanas. O V8 v7.2 está cheio de novidades para desenvolvedores. Este post apresenta uma prévia de alguns dos destaques na expectativa do lançamento.

Acelerando elementos espalhados

· Leitura de 10 minutos
Hai Dang & Georg Neis

Durante seu estágio de três meses na equipe do V8, Hai Dang trabalhou na melhoria do desempenho de [...array], [...string], [...set], [...map.keys()] e [...map.values()] (quando os elementos espalhados estão no início do literal do array). Ele até tornou Array.from(iterable) muito mais rápido também. Este artigo explica alguns dos detalhes técnicos de suas mudanças, que estão incluídas no V8 a partir da versão v7.2.

Funções assíncronas mais rápidas e promessas

· Leitura de 20 minutos
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), sempre antecipando, e Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)), profissional em desempenho de promessas

O processamento assíncrono em JavaScript tradicionalmente tinha a reputação de não ser particularmente rápido. Para piorar, depurar aplicativos JavaScript ao vivo — especialmente servidores Node.js — não é uma tarefa fácil, especialmente quando se trata de programação assíncrona. Felizmente os tempos estão mudando. Este artigo explora como otimizamos funções assíncronas e promessas no V8 (e até certo ponto em outros motores JavaScript também), e descreve como melhoramos a experiência de depuração para código assíncrono.

Lançamento do V8 v7.1

· Leitura de 4 minutos
Stephan Herhut ([@herhut](https://twitter.com/herhut)), clonador clonado de clones

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é derivada diretamente do Git master do V8 antes de um marco Beta do Chrome. Hoje estamos animados em anunciar nosso mais novo branch, V8 versão 7.1, que está em beta até seu lançamento em coordenação com o Chrome 71 Stable em algumas semanas. O V8 v7.1 está repleto de todos os tipos de novidades para desenvolvedores. Este post fornece uma prévia de alguns dos destaques em antecipação ao lançamento.

Lançamento do V8 v7.0

· Leitura de 3 minutos
Michael Hablich

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é derivada do master do Git do V8 imediatamente antes de uma etapa Beta do Chrome. Hoje estamos felizes em anunciar nosso branch mais recente, V8 versão 7.0, que está em beta até seu lançamento em coordenação com o Chrome 70 Stable em algumas semanas. O V8 v7.0 está repleto de várias novidades para desenvolvedores. Este post fornece uma prévia de alguns destaques em antecipação ao lançamento.