Pular para o conteúdo principal

Conteúdo adicional para "Compreendendo a especificação ECMAScript, parte 2"

· Leitura de 3 minutos
[Marja Hölttä](https://twitter.com/marjakh), espectadora especulativa de especificações

Por que o2.foo é uma AssignmentExpression?

o2.foo não parece ser uma AssignmentExpression, já que não há atribuição. Por que ela é uma AssignmentExpression?

Na verdade, a especificação permite uma AssignmentExpression tanto como um argumento quanto como o lado direito de uma atribuição. Por exemplo:

function simple(a) {
console.log('O argumento foi ' + a);
}
simple(x = 1);
// → Registra “O argumento foi 1”.
x;
// → 1

…e…

x = y = 5;
x; // 5
y; // 5

o2.foo é uma AssignmentExpression que não atribui nada. Isso decorre das seguintes produções gramaticais, cada uma tomando o caso "mais simples" até a última:

Uma AssignmentExpression não precisa ter uma atribuição, ela pode ser apenas uma ConditionalExpression:

AssignmentExpression : ConditionalExpression

(Existem outras produções também, aqui mostramos apenas a relevante.)

Uma ConditionalExpression não precisa ter uma condicional (a == b ? c : d), ela pode ser apenas uma ShortcircuitExpression:

ConditionalExpression : ShortCircuitExpression

E assim por diante:

ShortCircuitExpression : LogicalORExpression

LogicalORExpression : LogicalANDExpression

LogicalANDExpression : BitwiseORExpression

BitwiseORExpression : BitwiseXORExpression

BitwiseXORExpression : BitwiseANDExpression

BitwiseANDExpression : EqualityExpression

EqualityExpression : RelationalExpression

RelationalExpression : ShiftExpression

Lançamento do V8 v8.1

· Leitura de 2 minutos
Dominik Inführ, homem internacional(mistério da internacionalização)

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é originada do Git master do V8 imediatamente antes de um marco Beta do Chrome. Hoje temos o prazer de anunciar nosso mais novo ramo, V8 versão 8.1, que está em beta até seu lançamento em coordenação com o Chrome 81 Stable em algumas semanas. O V8 v8.1 está repleto de vários recursos voltados para desenvolvedores. Este post fornece uma prévia de alguns dos destaques em antecipação ao lançamento.

Entendendo a especificação ECMAScript, parte 1

· Leitura de 10 minutos
[Marja Hölttä](https://twitter.com/marjakh), espectador especulativo da especificação

Todos os episódios

Neste artigo, analisamos uma função simples na especificação e tentamos entender a notação. Vamos lá!

Prefácio

Mesmo que você saiba JavaScript, ler sua especificação de linguagem, Especificação da Linguagem ECMAScript, ou apenas a especificação ECMAScript, pode ser bastante assustador. Pelo menos foi assim que me senti quando comecei a lê-la pela primeira vez.

Lançamento do V8 v8.0

· Leitura de 6 minutos
Leszek Swirski, o oitavo de seu nome

Finalmente chegou. Em cada lançamento do V8, a cada seis semanas quando criamos um branch como parte do nosso processo de lançamento, surge a pergunta sobre o que acontecerá quando o V8 atingir a versão 8. Teremos uma festa? Lançaremos um novo compilador? Pularemos as versões 8 e 9 e permaneceremos eternamente na versão X do V8? Finalmente, após mais de 10 anos de trabalho, em nosso 100º post no blog, temos o prazer de anunciar nosso mais novo branch, V8 versão 8.0 V8, e finalmente podemos responder a essa pergunta:

Fora da web: binários autônomos WebAssembly usando Emscripten

· Leitura de 14 minutos
Alon Zakai

O Emscripten sempre se concentrou em compilar primeiro para a Web e para outros ambientes JavaScript, como o Node.js. Mas à medida que o WebAssembly começa a ser usado sem JavaScript, novos casos de uso estão surgindo, e por isso estamos trabalhando no suporte para a emissão de arquivos Wasm autônomos no Emscripten, que não dependem do runtime JS do Emscripten! Este post explica por que isso é interessante.

Lançamento do V8 v7.9

· Leitura de 5 minutos
Santiago Aboy Solanes, especialista em compressão de ponteiros

A cada seis semanas, criamos um novo branch do V8 como parte do nosso processo de lançamento. Cada versão é ramificada do master do Git do V8 imediatamente antes de um marco Beta do Chrome. Hoje, estamos felizes em anunciar nosso mais novo branch, V8 versão 7.9, que está em beta até seu lançamento em coordenação com o Chrome 79 Stable em algumas semanas. O V8 v7.9 está repleto de novidades voltadas para desenvolvedores. Esta postagem fornece uma prévia de alguns dos destaques em antecipação ao lançamento.

Melhorando expressões regulares no V8

· Leitura de 7 minutos
Patrick Thier e Ana Peško, expressadores regulares de opiniões sobre expressões regulares

Na configuração padrão, o V8 compila expressões regulares para código nativo na primeira execução. Como parte do nosso trabalho no V8 sem JIT, introduzimos um interpretador para expressões regulares. Interpretar expressões regulares tem a vantagem de usar menos memória, mas vem com uma penalidade de desempenho. Neste post de blog, descrevemos como aproveitamos as vantagens de interpretar expressões regulares enquanto mitigamos as desvantagens.

Lançamento V8 v7.8

· Leitura de 7 minutos
Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser)), o feiticeiro preguiçoso

A cada seis semanas, criamos uma nova ramificação do V8 como parte de nosso processo de lançamento. Cada versão é criada a partir do master do Git do V8 imediatamente antes de uma etapa Beta do Chrome. Hoje estamos felizes em anunciar nossa ramificação mais recente, V8 versão 7.8, que está em beta até seu lançamento em coordenação com o Chrome 78 Stable em algumas semanas. O V8 v7.8 está recheado de diversos recursos voltados para desenvolvedores. Este artigo fornece uma prévia de alguns dos destaques na antecipação do lançamento.

Um V8 mais leve

· Leitura de 12 minutos
Mythri Alle, Dan Elphick, e [Ross McIlroy](https://twitter.com/rossmcilroy), observadores de peso do V8

No final de 2018, começamos um projeto chamado V8 Lite, com o objetivo de reduzir drasticamente o uso de memória do V8. Inicialmente, este projeto foi concebido como um modo Lite separado do V8, focado especificamente em dispositivos móveis com pouca memória ou em cenários de uso que priorizam uma menor utilização de memória em vez da velocidade de execução. No entanto, durante o desenvolvimento, percebemos que muitas das otimizações de memória feitas para este modo Lite poderiam ser implementadas no V8 regular, beneficiando todos os seus usuários.

A história de um declínio de desempenho no V8 do React

· Leitura de 19 minutos
Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)) e Mathias Bynens ([@mathias](https://twitter.com/mathias))

Anteriormente, discutimos como os motores de JavaScript otimizam o acesso a objetos e arrays por meio do uso de Shapes e Inline Caches, e exploramos como os motores aceleram o acesso a propriedades do protótipo em particular. Este artigo descreve como o V8 escolhe representações otimizadas na memória para vários valores JavaScript e como isso afeta a máquina de formas — tudo isso ajuda a explicar um recente declínio de desempenho no núcleo do React.