Вебня
4.66K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Вышел Safari Technology Preview 110. Внутри очередная пачка улучшений и исправлений WebRTC, WebAuthn, Web Animations, Media, CSS, рендеринга, доступности, JavaScript, Storage API, безопасности, Web Inspector и нескольких Web API. В целом ничего прям такого интересного, хотя изменений очень много.
Вышел Edge 84. Изменения такие же, как и у Chrome 84, за редкими специфическими исключениями.

https://docs.microsoft.com/en-us/DeployEdge/microsoft-edge-relnote-stable-channel#version-84052240-july-16
Интереснейший пейпер по безопасности #WebAssembly!

Everything Old is New Again: Binary Security of WebAssembly

Бонус: комментарии от Alon Zakai
Noam Rosenthal и Gilles Dubuc из Wikimedia Performance Team рассказывают о том, как они добавили поддержку Paint Timing API в WebKit.

https://techblog.wikimedia.org/2020/06/24/how-we-contributed-paint-timing-api-to-webkit/
Отличная подборка от Ивана.
📖 Тройка ссылок на воскресенье:

1️⃣ Как Википедия уменьшала JS-бойлерплейт с 36 до 28 кб: https://phabricator.wikimedia.org/phame/live/7/post/175/wikipedia_s_javascript_initialisation_on_a_budget/

Почему 28 кб? 14 кб — это тот объём данных, который сервер отправляет клиенту сразу же после установки соединения. (Больше про это. Ещё больше про это.) Ну а 28 кб — просто 14 кб × 2, красивая цифра.

2️⃣ webp vs jpeg vs avif: https://siipo.la/blog/is-webp-really-better-than-jpeg

Оказывается, если сжимать jpeg-файлы с помощью mozjpeg, то они не крупнее аналогичных webp-картинок.

3️⃣ Проблемы с HTTP/2-приоритизацией: https://blog.cloudflare.com/better-http-2-prioritization-for-a-faster-web/

Одна из фич HTTP/2 — это приоритизация запросов. Если браузеру нужно одновременно загрузить (важные) стили и (неважную) картинку, он может попросить сервер отдать стили быстрее. Cloudflare пишет, почему на практике это работает плохо.
Сегодня начинается 77я встреча #TC39, которая продлится 4 дня. В поветске очень много интересного и целых 6 пропозалов в ECMAScript и ECMAScript Internationalization API готовятся попасть на stage 4 (эти темы запланированы на завтра). Я как всегда буду рассказывать всё самое интересное в этом канале. Если что-то невероятно интересное или важное, то сразу же лайвом, а также буду публиковать результаты каждого дня ближе к ночи или утром следующего дня.
Время проведения встреч — 20:00 - 01:00 по Москве, Киеву, Минску.

Напоминаю, что можно поддержать этот канал на Patreon.
Результаты первого дня июльской встречи #TC39.

Отчёт секретариата TC39
Слайды: https://github.com/tc39/agendas/blob/master/2020/tc39-2020-036.pdf

Тут ничего нового (если Вы читали канал внимательно 😉). Самое главное — вышли версии стандартов ES2020 и ECMA402 2020


Отчёт редакторов ECMA262
Слайды: https://docs.google.com/presentation/d/1O8wGWehzMhqb_Jz2JfmyUxyUepxanc8sEVMlTRUVnfo/edit

В слайдах указаны основные нормативные и редакторские изменения с последней встречи, а также родмап на ближайшее время.


Отчёт редакторов ECMA402
Слайды: https://docs.google.com/presentation/d/1C54jVjcuE27wq658CbMi0KEfa5ded_WIWvdq1JP8QDI/edit#slide=id.g442f4955c0_0_50

Некоторые пропозалы готовятся продвигаться на stage 4 в сентябре.


Отчёт мейнтейнеров Test262
Слайды: https://docs.google.com/presentation/d/1tsqTUZioHi8YxRF_CapxcZTjZQYDClEgXOFUm0W4gHg/edit#slide=id.p

Всё как обычно. Много-много новых тестов для новых и старых пропозалов.


Нормативное изменение: Retroactive consensus on Unicode 13 property names and aliases
PR 1: https://github.com/tc39/ecma262/pull/1896
PR 2: https://github.com/tc39/ecma262/pull/1939

Эти два пулл реквеста были влиты, так как считались редакторскими изменениями (не затрагивающими работу движков), но оказалось, что они всё же нормативные. Был достигнут консенсус, чтобы оставить эти изменения.


Нормативное изменение: Specify \8 and \9 in sloppy (non-template) strings

Этот PR покрывает неспицифицированное ранее поведение. Был достигнут консенсус, PR будет влит.


Нормативное изменение: Adding Reflect[Symbol.toStringTag]

Reflect оставался единственным встроенным объектом, у которого не было Symbol.toStringTag. Теперь у него он тоже будет, консенсус достигнут.


Нормативное изменение: Should eval?.() be direct eval?

Решено было оставить данный вызов непрямым вызовом eval.


Обсуждене: Forbid Numeric Separators in NonOctalDecimalIntegerLiteral fractional / exponent parts
Issue в репозитории пропозала: https://github.com/tc39/proposal-numeric-separator/issues/49
Issue в репозитории спецификации: https://github.com/tc39/ecma262/issues/2090

Эта особенность блокировала переход пропозала Numeric separators на stage 4. Больше не блокирует, был достигнут консенсус.


Обсуждение: Cognitive Dimensions of Notation: a framework for reflecting on language design

Было предложено заменить TC39-специфичный сленг на более общепринятый.


Пропозал Class static blocks (stage 1 -> stage2)
Слайды: https://onedrive.live.com/view.aspx?resid=934F1675ED4C1638!291940&ithint=file%2cpptx&authkey=!ADFod3jufA89iM8

Пропозал был оценен достаточно позитивно, но продвижение было заблокировано некоторомы делегатами ввиду того, что он был добавлин в повестку после дедлайна для продвижения, поэтому не все смогли заранее ознакомиться с ним. Остаётся на stage 1.


Нормативное изменение: Host hooks for Job callbacks
Слайды: https://docs.google.com/presentation/d/19S97ZqhibJABqzeP5ZU6Flk6TVgWzXuvJWFbNTTfpWs

Дискуссия будет продолжена, консенсус не достигнут.


Нормативное изменение: Handle awkward rounding behaviour
Слайды: https://docs.google.com/presentation/d/1QGUTz61o-X_HEgYrkTUXtScoRpu_KhXsoKxGyMQJthc

Консенсус достигнут.
Сегодня должно быть поинтереснее. Должно быть много продвижений предложений в спецификацию на следующие стейджи.
В проекте V8 создана ветка для версии v8.5. Из нового там появятся:
- Promise.any и AggregateError (stage 3)
- String.prototype.replaceAll (ES2020)
- Logical assignment operators (stage 3)
- бейслайн компилатор #WebAssembly Liftoff теперь работает на всех платформах
- поддержка WebAssembly Multi-value (добавлены в спецификацию в мае)
- поддержка JavaScript BigInt в WebAssembly (добавлены в спецификацию в июне)
⚡️ WeakRefs отправляются на stage 4, также от них отделяется CleanupSome, которому присваивается stage 2!
В Firefox 79 (выйдет 28 июля) собираются снова включить SharedArrayBuffer по умолчанию. Ранее поддержка SAB была выключена во всех браузерах в начале 2018 из-за уязвимости и Spectre. Для использования SAB в Firefox потребуется добавить заголовки COOP и COEP.