Вебня
4.63K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Обновился веб-сайт Ecma International

Ассоциация Ecma International получила обновлённый веб-сайт. Казалось бы новость не очень важная, но вы просто вспомните какой сайт у них был раньше — табличная верстка, адрес и пункты меню картинками gif.
Список TC39 пропозалов, которые запрашивают продвежения на следующий стейдж

25-28 января пройдёт первое в этом году заседание #TC39, для которого уже финализирован список пропозалов, которые могут попасть на следующий стейдж (дедлайн был в пятницу 15 января). Список очень большой, поэтому вероятно, что не все предложения из него комитет успеет обсудить.

Stage 3 -> Stage 4
- Intl.DateTimeFormat.prototype.formatRange

Stage 2 -> Stage 3
- JSON modules
- Array.isTemplateObject
- Class static Initialization Blocks
- Ergonomic brand checks for private fields

Stage 1 -> Stage 2
- Intl Locale Info
- Intl DisplayNames v2
- Dynamic code brand checks
- JS Module Blocks
- do expressions

Новые пропозалы (-> Stage 1)
- Array find from last
- Extend TimeZoneName Option Proposal
- eraDisplay option for Intl.DateTimeFormat
- Intl LocaleMatcher
- async do expressions
- index from end syntax
- class brand check
- defer module import eval
Вебня
Интересный факт. Количество страниц в печатных версиях разных редакций спецификации ECMAScript: ES1 (1997) — 110 ES2 (1998) — 117 ES3 (1999) — 188 ES5 (2009) — 252 ES5.1 (2011) — 258 ES2015 (2015) — 566 ES2016 (2016) — 586 ES2017 (2017) — 885 ES2018 (2018)…
Количество страниц в печатных версиях разных редакций спецификации ECMAScript:

ES1 (1997) — 110
ES2 (1998) — 117
ES3 (1999) — 188
ES5 (2009) — 252
ES5.1 (2011) — 258
ES2015 (2015) — 566
ES2016 (2016) — 586
ES2017 (2017) — 885
ES2018 (2018) — 805
ES2019 (2019) — 764
ES2020 (2020) — 860
Вышел Chrome 88

В новой версии:
- Manifest v3 для расширений, который должен улучшить производительность, безопасность и приватность (не нашел нигде дату, когда v2 перестанут публиковать и начнут убирать из Chrome Web Store, если вы обладаете такой информацией — поделитесь, пожалуйста)
- поддержка CSS-свойства aspect-ratio
- точность таймеров будет уменьшена для повторяющихся вызовов
- биллинг Google Play для Trusted Web Activities доступен под origin trial на Android
- в соответствии с изменениями в стандарте HTML, target="_blank" теперь по умолчанию имеет также поведение rel="no-opener"
- Pointer Lock API
- addEventListener теперь может принимать AbortSignal

Видео о новых фичах Chrome 88.

Об изменениях DevTools можно почитать тут.
О деприкейтах и убранных фичах тут.
Изменения в поддержке SharedArrayBuffer в Chrome

Поддержка SharedArrayBuffer уже доступна в десктопной версии Chrome, но начиная с версии 91 для его работы потребуется настройка cross-origin isolation. Начиная с версии 88 для Android, поддержка также включается для страниц с cross-origin изоляцией.

https://developer.chrome.com/blog/enabling-shared-array-buffer/
Портирование Firefox на Apple Silicon

Большая статья о том, с какими трудностями пришлось столкнуться инженерам Mozilla для портирования Firefox на новые процессоры Apple.

https://hacks.mozilla.org/2021/01/porting-firefox-to-apple-silicon/
Вышел GraalVM 21.0.0

В JS версии добавлены поля классов (stage 3), Promise.any (ES2021), String.prototype.replaceAll (ES2021), Logical Assignment Operators (ES2021), а также Relative Indexing Method (aka .at(), stage 3) под флагом.

Кроме того, в GraalVM 21 много других классных изменений.

https://medium.com/graalvm/graalvm-21-0-introducing-a-new-way-to-run-java-df894256de28

Поддержка GraalVM относительно JavaScript уже обновлена в таблице совместимости.
Puppeteer мигрирует на TypeScript

Команда Chrome DevTools собирается использовать TypeScript не только в самих DevTools, но и в инструменте автоматизации браузера Puppeteer.

https://developers.google.com/web/updates/2021/01/puppeteer-typescript
Проблемы совместимости Relative Indexing Method

У этого stage 3 пропозала очередные проблемы совместимости. Они были обнаружены разработчиками из Apple после включения метода .at() у массивов. Надо сказать, что код, который используется на проблемном сайте очень сомнительный. Напомню, что ранее метод назывался .item(), и проблема совместимости при использовании этого имени была обнаружена разработчиками из Mozilla. В этот раз проблема не такая серьёзная, как в прошлый, т.к., судя по всему, пока обнаружена лишь на одном сайте и в кастомном коде, так что #TC39 может попробовать связаться с владельцами сайта и попросить изменить код. посмотрим, что из этого выйдет.
У WebAssembly в JavaScriptCore появится JIT-less режим

Режим без JIT позволит исполнять #WebAssembly в JavaScriptCore (движке, используемом в WebKit/Safari) на платформах, которые не поддерживают B3 и Air оптимизаторы. В таких случаях будет использоваться только интерпретатор LLInt.

https://bugs.webkit.org/show_bug.cgi?id=220365
Сегодня начинается первое в этом году заседание #TC39

Я как всегда буду рассказывать об итогах каждого дня, о каких-либо важных событиях сразу же онлайн, и напишу общие итоги январской встречи одним большим постом. Честно говоря, я не ожидал такого количества тем для обсуждения. Казалось, что какие-то основные изменения в плане синтаксиса уже пришли в язык, но в повестке можно найти много нового (и хорошо забытого старого), что может значительно поменять синтаксис. Будем следить вместе вечерами с понедельника по четверг, присоединяйтесь!
В Chromium перестанет работать синхронизация через API от Google

Google собирается ограничить доступ к своим API для сторонних браузеров на базе Chromium 15 марта 2021. Ранее пользователи таких браузеров могли синхронизировать свои данные с аккаунтом Google. В результате авторы дистрибутивов Arch Linux, Fedora, Debian, Slackware и openSUSE подняли вопрос о том, чтобы убрать Chromium из поставки в своих дистрибутивах. Разработчики браузеров на основе Chromium пока никак не прокомментировали грядущие изменения, но очевидно, что такой шаг может перевести их пользователей в ряды пользователей Google Chrome.
Важные новости CSS с прошлой недели

Опубликованы W3C Accessibility Guidelines (WCAG 3) в статусе First Public Working Draft. Новая версия документа имеет переработанную структуру, соответствие гайдлайнам теперь применяется не к страницам, а к сайтам или продуктам, 100% соответствие теперь не обязательно (достаточно отсутствие критических ошибок).

Опубликованы CSS Cascading and Inheritance Level 5 также в статусе First Public Working Draft. В новой версии добавлен концепт слоёв каскадности.
Разработчики Chromium из Google в очередной раз отчитались о результатах тестирования технологий приватности, которые должны заменить куки

В блоге рассказывается о нескольких технологиях. Federated Learning of Cohorts поможет избавиться от персонализированных данных, заменив группами людей по интересам. Другие технологии, такие как Trust Tokens, First Party Sets, Conversion Measurement помогут бороться с фродом, указать, что разные домены относятся к одной и той же компании, и подсчитывать конверсию от веб-рекламы без использования 3rd party cookies.
Open Web Docs

Google, Microsoft, Mozilla, Coil, W3C, Samsung и Igalia публично объявили о создании коллективного проекта Open Web Docs для поддержания технических писателей, которые пишут документацию для технологий веб платформы. В первую очередь проект нацелен на поддержание проектов вроде MDN (сейчас основной фокус), но не ограничивается этим.

Пост на Mozilla Hacks
Пост на web.dev
Пост на W3C
Пост на OpenCollective
⚡️Пропозал JSON modules отправляется на stage 3
⚡️ Пропозал JS Module Blocks переходит на stage 2
⚡️ Пропозал Class static Initialization Blocks переходит на Stage 3 (с некоторыми изменениями)
Итоги первого дня 80й встречи #TC39

Отчёт секретариата Ecma (слайды)
Тут особо ничего интересного нет. Интересно разве что (и о чём я уже писал) то, что в 2021 вместо 6 встреч TC39 проведёт 8. 4 встречи будут длиться по 4 дня, а ещё 4 между ними по 2 дня.

Отчёты редакторов
- ECMA262 — тут редакторы отметили, что в конце текущего пленарного заседания произойдёт фича фриз ES2021, то есть уже в пятницу мы узнаем полный список фич, которые попадут в эту версию спецификации
- ECMA402 — то же самое, готовятся к фича фризу 2021
Рекомендую полистать и сами слайды.
А ещё TC53 (комитет, занимающийся ECMAScript модулями для встраиваемых систем) готовится представить черновик спеки в феврале и выпустить первую версию спецификации в июне.

Нормативные изменения
Runtime Semantics for MemberExpression do not conform to web reality — было принято, но комитет собирается ещё обсудить возможные последствия этого изменения, чтобы учесть это в будущем. В поддержку изменения высказались все имплементоры.

Пропозалы
RegExp match indices (слайды) — консенсус достигнут, но предложение не смогло взять stage 4 из-за того, что разработчики движков не успели заимплементить последнее обновление — добавление флага d (что позволит избежать проблем производительности для регулярок в целом, с чем ранее столкнулись Google и Apple).
JSON Modules (слайды) — stage 3 взят! Ждём в браузерах и Node.js.
Array.isTemplateObject (слайды) — консенсус не достигнут, пропозал не смог взять stage 3. Интересно, что чемпион этого предложения работает в Google, но критика была в значительной степени и от его коллег.
JS Module blocks (слайды) — консенсус и stage 2
Class static Initialization Blocks (слайды) — консенсус по stage 3 получен, но с условием, что в текст спецификации будут внесены некоторые изменения (самое значительное из которых — возможность добавлять несколько статических блоков), после чего ревьеры пропозала и редакторы спецификации должны будут заапрувить их.
Вебня pinned «Итоги первого дня 80й встречи #TC39 Отчёт секретариата Ecma (слайды) Тут особо ничего интересного нет. Интересно разве что (и о чём я уже писал) то, что в 2021 вместо 6 встреч TC39 проведёт 8. 4 встречи будут длиться по 4 дня, а ещё 4 между ними по 2 дня.…»