Telegram Web Link
Forwarded from Веб-стандарты (Веб-стандарты)
Value Definition Syntax. София Валитова объясняет, как в спецификациях CSS читать грамматику синтаксиса, который используется для описания типов, значений свойств и селекторов.

https://ariarzer.dev/value-definition-syntax.html
Как использовать асинхронные API из #WebAssembly

Статья Ингвара Степаняна о том, как использовать инструмент Asincify с C++ (из Emscripten) и другими языками.

https://web.dev/asyncify/
Расширение Bytecode Alliance

Организация была создана в конце 2019 совместными усилиями Mozilla, Fastly, Intel и Microsoft (в первом анонсе упоминается также Red Hat) для работы над #WebAssembly за пределами веба, WASI и инструментарием. Теперь к ней присоединились Arm, DFINITY, Foundation, Embark Studios, Google Shopify и Университет Калифорнии (Сан Диего).

https://bytecodealliance.org/press/calling-for-new-members
https://blog.mozilla.org/blog/2021/04/28/growing-the-bytecode-alliance/
В Angular 12 View Engine будет по умолчанию заменён на Ivy

По статистике большинство разработчиков уже использует новый render pipeline Ivy. Для разработчиков переход должен стать незаметным, но имеется возможность использования View Engine (который получит статус depricated) при необходимости.

https://blog.angular.io/upcoming-improvements-to-angular-library-distribution-76c02f782aa4
⚡️ Спецификация Web Authentication: An API for accessing Public Key Credentials Level 3 выпущена в статусе First Public Working Draft. Напомню, что в феврале вторая версия спецификации получила статус Proposed Recommendation.
Вышел Vivaldi 3.8

https://vivaldi.com/blog/vivaldi-crumbles-cookie-dialogs-raises-privacy/

В новой версии:
- блокировщик GDRP cookie панелей
- отключен FLoC
- улучшенный UI
- улучшенная работа с закладками
и некоторые минорные изменения
Официальный обзор новых фич Safari 14.1

В блоге WebKit появилась статья со списком нововведений Safari 14.1, релиз которого для macOS и iOS состоялся в понедельник 26 апреля.

https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/

Я публиковал такой список ранее в феврале.
Import Assertions и JSON Modules уже в Chrome 91 Beta

Это значит, что примерно через месяц JSON Modules станут доступны в браузерах на основе Chromium. Пока не понято будет ли работать в ServiceWorker'ах в Chrome 91 или уже в последующих версиях. И есть проблемы с корректностью ошибок парсинга, но это не посчитали блокером.
Progress Delayed Is Progress Denied

Alex Russell опубликовал обширную статью о том как монополия Safari на iOS негативно сказывается на развитии веб платформы. Полезно к прочтению, если хотели разобраться почему и за что критикуют Apple/Safari, с фактами и данными. Статья интересна еще и тем, что в ней перечисленно большое количество "старых" и будущих API с коментариями и судьбой – можно узнать что-то новое или освежить знания по статусам.

https://infrequently.org/2021/04/progress-delayed/
Work with cookies the modern way

https://mefody.dev/chunks/cookie-store-api/

Статья Никиты Дубко о новом Cookie Store API, которое приходит на смену document.cookie. Доступно с Chrome 87, а вот насчет других браузеров пока нет сигналов, но для них можно использовать полифил.
V8 релиз v9.1

- Включили private brand checks по умолчанию (было за флагом), что позволяет использовать оператор in с приватными полями, то есть #foo in obj
- Включили top-level await по умолчанию (было за флагом). Стоит отметить что фича уже включена в Chrome 89 по умолчанию, видимо на подходе Node.js
- Пара специфичных оптимизаций
В Safari 14.1 сломан localStorage

Вчера Jake Archibald обнаружил, что localStorage сломан в последнем релизе Safari таким образом, что каждая вкладка читает свой собственный экземпляр хранилища, а не делит общий с другими вкладкми origin'а. И хотя при записи в localStorage вкладки получают событие change, они не могут получить новое значение, так как читают из своего собственного экземпляра хранилища.
Эта механика используется как для синхронизации между вкладками, так использовалась и для коммуникации между вкладаками, пока не появился BroadcastChannel. Сегодня BroadcastChannel важен для PWA, так как используется для коммуникации между Service Worker'ом и закладками. Интерфейс появился в Chromium и Firefox 5 лет назад, в Edge с переходом на Chromium. В Safari же тикет на имплементацию висит без движения уже почти 5 лет. Поэтому для Safari используют полифилы, использующие синхронизацию через localStorage, которая сейчас сломана.
Баг связан с самим Safari, а не его движком (WebKit) и затрагивает только macOS – Safari на iOS не затронут. Инженеры Apple уже пофиксили проблему, но когда выкатится патч не известно, так как они не могут это комментировать, хотя понимают, что это существенная регрессия... Вероятно патч выйдет со следующим релизом macOS.
Пока обходное решение использовать IndexedDB в связке с Service Worker'ом.
WebTransport: новое API для взаимодествие клиент-сервер

WebTransport Working Group опубликовала первый публичный рабочий черновик WebTransport. Новое API можно будет использовать как WebSocket, но с поддержкой нескольких потоков, однонаправленных потоков, доставкой не по порядку (out-of-order delivery) и возможностью выбирать между надежным или ненадежным траспортом. Функциональность строится поверх HTTP3.
Предлагаемое API находится в ранней стадии, и почти наверняка изменится. Разработчики Blink начали экспериментировать с WebTransport около месяца назад. Новое API должно закрыть потребности таких направлений как игры и стриминг, поэтому в эксперименте участвуют такие сервисы как Twitch и Zoom.
Вышел Safari Technology Preview 124

В основном исправления, из нового:
- Имплементация color-mix() в соотвествии с текущим состоянием CSS Color Level 5
- В Element.focus() добавлена опция preventScroll
- Имплементирован AbortSignal.abort()
- Добавлен рендеринг текста на OffscreenCanvas в воркерах
- Для WebGL стал доступен Metal ANGLE бекенд
- Реализована передача RTCDataChannel между процессами

Полный список изменений:
Новые фичи Canvas 2D API

Разработчики Chromium некоторое время работают над нововведениями в Canvas 2D API, и это самое большое расширение API с момента его стандартизации. О новинках хорошо рассказано в видео и git репозитории, где представлено описание (explainer'ы) для каждого из расширений. Ключевые направления расширений:

- Паритет по функциям с другими 2D API;
- Доступ к возможностям Web/CSS;
- Улучшение производительности.

На данный момент в Chromium реализовано 9 фич:

- Reset function – метод reset(), который очищает канвас, текущий путь и стек трансформаций. Не понятно, почему его не было раньше. Позволяет избежать хаков и проседания производительности.
- Color input – добавляет возможность использовать экземпляры CSSColorValue и массивы чисел как значения цвета (сейчас можно использовать только строки).
- Text modifiers – аналоги CSS свойств letter-spacing, word-spacing, font-variant-caps, font-kerning, font-stretch и text-rendering.
- RoundRect – прямоугольник со скругленными углами, что-то вроде CSS border-radius.
- Conic Gradient - аналог CSS conical-gradient()
- Perspective transforms – трансформации с перспективой. На самом деле, сводится к поддержке матриц трансформации 4x4.
- Modern filters – сейчас в канвасе доступны SVG фильтры. Но пользоваться ими неудобно и к тому же они не доступны в воркерах (так как там нет DOM и, соответственно, SVG). Это расширение повторяет SVG фильтры, но в виде JavaScript API.
- willReadFrequently – опция при создании 2d контекста, которая сигнализирует браузеру, что будет активно использоваться getImageData() и браузер может это оптимизировать (как хранить). Сейчас браузеры эвристически решают будет ли активно использоваться getImageData() или нет, что является не надежным и сложным решением.
- Canvas context loss – позволяет браузеру освобождать ресурсы выделенные под контекст, когда канвас не используется (например, за пределами вьюпорта) и добавлять реакцию на восстановление контекста (начать отрисовывать, когда канвас возвращается во вьюпорт).

Еще около 7 фичей находятся на уровне идей.

В середине апреля было объявлено о начале экспериментов в Chrome. Новое API доступно за флагом new-canvas-2d-api (chrome://flags/#new-canvas-2d-api). Разработчики других браузеров в целом относятся позитивно к новым фичам, но есть вопросы по некоторым из них. В Firefox уже ведут разработку, Edge помогает с имплементацией в Chromium, насчет Safari пока информации нет.
Shared Element Transitions

Разработчики Blink собираются начать эксперимент с Shared Element Transitions – новое API, позволяющее делать плавные переходы между состояниями как для Single Page Application так и для Multiple Page Application. API предлагает как переходы между страницами, так и переходы для отдельных элементов страницы. Да, идея похожа на Transitions Filters – технологию, которая была еще в IE5 и IE6, и в дальнейшем спилена. Были попытки сделать что-то подобное и в Blink. Так что это новая попытка добавить функциональность в платформу.
Чтобы понять идею, можно посмотреть видео из статьи Sarah Drasner, в которой она описала как добиваться похожих эффектов используя Vue и Nuxt.js. С новым API все должно стать гораздо проще, и веб приложения смогут быть более похожими на мобильные (в плане интерактивности).
Разработчики других браузеров пока не высказили свое мнение относительно предложения, а вот со стороны веб разработчиков сигналы позитивные. Информации пока не много, будем следить.
Visualizing Garbage Collection Algorithms

Ken Fox разбирает пять алгоритмов работы сборщика мусора и визуализирует каждый из их. Среди алгоритмов есть и Reference Counting Collector, который использовался в первых JavaScript движках, и Copying Collector, который в основном используется в современных движках, когда есть два поколения памяти (молодое и старое).

https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/
Официальный отчет о 82й встрече TC39

Опубликован отчет последней встречи TC39, которая прошла 19-21 апреля. Сергей уже делал отчет по тому что происходило в каждый из дней. В отчете же от TC39 структура идет от самих пропосалов и их стадии, плюс больше деталей и ссылок.
Официальный сайт #TC39 теперь доступен на нескольких языках

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

Некоторые ссылки («Предстоящая повестка» и «Протокол последнего собрания») нуждаются в обновлении, что может стать полезным вкладом с Вашей стороны. Также принимаются предложения по улучшению перевода. Репозиторий сайта: https://github.com/tc39/tc39.github.io
2025/07/03 06:34:37
Back to Top
HTML Embed Code: