Перейти к основному содержимому

Дополнительный контент для "Понимание спецификации ECMAScript, часть 2"

· 2 мин. чтения
[Марья Хёлтта](https://twitter.com/marjakh), наблюдатель за спекулятивной спецификацией

Почему o2.foo является AssignmentExpression?

o2.foo не выглядит как AssignmentExpression, так как нет присваивания. Почему он является AssignmentExpression?

Спецификация на самом деле позволяет AssignmentExpression как аргумент и как правую часть присваивания. Например:

function simple(a) {
console.log('Аргумент был ' + a);
}
simple(x = 1);
// → Выводит “Аргумент был 1”.
x;
// → 1

…и…

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

o2.foo является AssignmentExpression, который ничего не присваивает. Это следует из следующих грамматических правил, каждое из которых выбирает "самый простой" случай до последнего:

AssignmentExpression не обязательно должен содержать присваивание, он также может быть просто ConditionalExpression:

AssignmentExpression : ConditionalExpression

(Есть и другие правила, здесь мы показываем только релевантное.)

ConditionalExpression не обязательно должен содержать условие (a == b ? c : d), он также может быть просто ShortcircuitExpression:

ConditionalExpression : ShortCircuitExpression

И так далее:

ShortCircuitExpression : LogicalORExpression

LogicalORExpression : LogicalANDExpression

LogicalANDExpression : BitwiseORExpression

BitwiseORExpression : BitwiseXORExpression

BitwiseXORExpression : BitwiseANDExpression

BitwiseANDExpression : EqualityExpression

EqualityExpression : RelationalExpression

RelationalExpression : ShiftExpression

Релиз V8 версии v8.1

· 2 мин. чтения
Доминик Инфюэр, международный человек-загадка

Каждые шесть недель мы создаем новую ветку V8 в рамках нашего процесса выпуска. Каждая версия создаётся из основной ветки Git V8 непосредственно перед стадией бета-версии Chrome. Сегодня мы рады представить нашу новую ветку, V8 версии 8.1, которая будет находиться в стадии бета-тестирования до её выпуска в стабильной версии Chrome 81 через несколько недель. V8 v8.1 наполнена разнообразными функциями для разработчиков. В этом посте представлен предварительный обзор некоторых ключевых моментов, ожидаемых в выпуске.

Понимание спецификации ECMAScript, часть 1

· 8 мин. чтения
[Марья Хёльтта](https://twitter.com/marjakh), наблюдатель за спецификациями

Все эпизоды

В этой статье мы рассмотрим простую функцию в спецификации и попробуем понять её обозначения. Поехали!

Введение

Даже если вы знаете JavaScript, читать его языковую спецификацию, спецификацию языка ECMAScript, или просто спецификацию ECMAScript, может быть довольно сложно. По крайней мере, я так чувствовал, когда впервые начал её читать.

V8 выпуск v8.0

· 5 мин. чтения
Лешек Свирски, V8-ой по счёту

Наконец-то это здесь. Каждый выпуск V8, каждые шесть недель, когда мы делаем ветку согласно нашему процессу выпуска, возникает вопрос о том, что произойдет, когда V8 достигнет версии 8. Будет ли вечеринка? Выпустим ли мы новый компилятор? Пропустим ли версии 8 и 9 и останемся на вечной версии V8 Х? Наконец, после более 10 лет работы, в нашем 100-м посте в блоге, мы рады объявить о нашей новой ветке, V8 version 8.0 V8, и наконец можем ответить на этот вопрос:

Вне Интернета: автономные бинарные файлы WebAssembly с использованием Emscripten

· 13 мин. чтения
Алон Закай

Emscripten всегда был ориентирован в первую очередь на компиляцию для использования в Интернете и других средах JavaScript, таких как Node.js. Однако по мере того, как WebAssembly начинает использоваться без JavaScript, появляются новые варианты применения, и поэтому мы работаем над поддержкой генерации автономных файлов Wasm с помощью Emscripten, которые не зависят от JavaScript-рантайма Emscripten! Этот пост объясняет, почему это интересно.

Релиз V8 v7.9

· 5 мин. чтения
Сантьяго Абой Соланес, мастер компрессии указателей

Каждые шесть недель мы создаем новую ветку V8 в рамках нашего процесса релиза. Каждая версия отделяется от главной ветки Git V8 непосредственно перед выпуском Chrome Beta. Сегодня мы рады объявить о нашей новой ветке, V8 версии 7.9, которая будет в бете до своего релиза в координации с Chrome 79 Stable через несколько недель. V8 v7.9 содержит множество улучшений для разработчиков. Этот пост предоставляет обзор некоторых ключевых моментов в преддверии релиза.

Улучшение регулярных выражений в V8

· 6 мин. чтения
Патрик Тир и Ана Пешко, регулярные выразители мнений о регулярных выражениях

В стандартной конфигурации V8 компилирует регулярные выражения в машинный код при первом выполнении. В рамках нашей работы над V8 без JIT, мы внедрили интерпретатор для регулярных выражений. Интерпретация регулярных выражений имеет преимущество в том, что требует меньше памяти, но приводит к снижению производительности. В этом блоге мы описываем, как мы используем преимущества интерпретации регулярных выражений, минимизируя их недостатки.

Релиз V8 v7.8

· 6 мин. чтения
Ингвар Степанян ([@RReverser](https://twitter.com/RReverser)), ленивый разработчик

Каждые шесть недель мы создаем новую ветку V8 в рамках нашего процесса релиза. Каждая версия создается из основной ветки Git перед бета-вехой Chrome. Сегодня мы рады объявить о нашей новой ветке, V8 версии 7.8, которая находится в бета-версии до выпуска вместе с Chrome 78 Stable через несколько недель. V8 v7.8 наполнен полезными инструментами для разработчиков. В этом посте мы предлагаем краткий обзор некоторых основных моментов перед релизом.

Легкий V8

· 10 мин. чтения
Митри Алле, Дэн Элфик и [Росс МакИлрой](https://twitter.com/rossmcilroy), специалисты по оптимизации V8

В конце 2018 года мы начали проект под названием V8 Lite, целью которого было значительно уменьшить использование памяти V8. Изначально этот проект был задуман как отдельный легкий режим V8, специально предназначенный для мобильных устройств с низким объемом памяти или сценариев использования, где важнее снижение использования памяти, чем скорость выполнения. Однако в процессе этой работы мы поняли, что многие из сделанных нами оптимизаций памяти для этого легкого режима можно перенести в обычный V8, тем самым улучшив его для всех пользователей.

История о производительности V8 в React

· 17 мин. чтения
Бенедикт Меурер ([@bmeurer](https://twitter.com/bmeurer)) и Матиас Биненс ([@mathias](https://twitter.com/mathias))

Ранее мы обсуждали, как движки JavaScript оптимизируют доступ к объектам и массивам с помощью Shapes и Inline Caches, а также исследовали как движки ускоряют доступ к свойствам прототипа. В этой статье описано, как V8 выбирает оптимальные внутренние представления в памяти для различных значений JavaScript и как это влияет на механизм форм — что помогает объяснить недавнее падение производительности V8 в ядре React.