Igalia запустили новый проект Open Prioritization. Это инициатива, которая помогает обычным людям помогать в приоритезации разработки фич, что должно положительно сказаться на совместимости в вебе и покрывать потребности разработчиков и дизайнеров, а не компаний.
Статьи:
- общая вводная
- со стороны Firefox
- со стороны WebKit
- со стороны Chrome
Статьи:
- общая вводная
- со стороны Firefox
- со стороны WebKit
- со стороны Chrome
Igalia
Open Prioritization | Igalia - Open Source Consultancy and Development
Igalia is an open source consultancy specialised in the development of innovative projects and solutions. Our engineers have expertise in a wide range of technological areas, including browsers and client-side web technologies, graphics pipeline, compilers…
Daniel Aleksandersen сделал сравнения размеров файлов для различных форматов изображений.
Сравнение AVIF и WebP
Сравнение WebP, FLIF и PNG
Сравнение AVIF и WebP
Сравнение WebP, FLIF и PNG
Вышел Chrome 84. Из нового:
- контекстное меню для веб приложений
- новые фичи Web Animations API
- API для индексирования контента
- Wake lock API
Новые origin trials:
- Idle Detection API
- #WebAssembly SIMD
Помимо этого:
- возобновлены изменения SameSite Cookies
- изменения UI уведомлений
- QuicTransport
Видео, в котором Pete LaPage рассказывает обо всех этих изменениях: https://www.youtube.com/watch?v=1XBUeaqjTA4
Изменения в V8 8.4: https://v8.dev/blog/v8-release-84
- контекстное меню для веб приложений
- новые фичи Web Animations API
- API для индексирования контента
- Wake lock API
Новые origin trials:
- Idle Detection API
- #WebAssembly SIMD
Помимо этого:
- возобновлены изменения SameSite Cookies
- изменения UI уведомлений
- QuicTransport
Видео, в котором Pete LaPage рассказывает обо всех этих изменениях: https://www.youtube.com/watch?v=1XBUeaqjTA4
Изменения в V8 8.4: https://v8.dev/blog/v8-release-84
Chrome for Developers
New in Chrome 84 | Blog | Chrome for Developers
Chrome 84 is rolling out now! Users can start common tasks within your app with App Icon Shortcuts. The Web Animations API adds support for a slew of previously unsupported features. Wake Lock, and the Content Indexing API graduate from origin trial. There…
Вышел Apollo Client 3.0 — новая версия клиентской библиотеки для работы с GraphQL. Из интересного стоит выделить новые API для работы с кэшем, включая сборщик мусора, наподобии того, что используется в Relay от Facebook (кстати, недавно обновился и он тоже), и хелперы для пагинации, а также улучшенные управление внутренним состоянием, реактивность. Кажется, этим релизом Apollo Client практически достиг паритета по фичам с Relay.
Появилась возможность скачать Safari 14 beta 1 для macOS Catalina или Mojave. Для этого нужно иметь аккаунт разработчика на сайте Apple.
https://developer.apple.com/download/more/?=Safari
https://developer.apple.com/download/more/?=Safari
Сегодня в 7 вечера по Москве пройдёт #WebAssembly Moscow meetup #3. В этот раз он пройдёт в онлайн.
Доклады:
WebAssembly Flexible Vectors Operations - развитие концепции кросс-платформ SIMD - Пётр Пензин (Intel)
Мифы и реальность портирования C/C++ приложений - Николай Ходов
Варианты использования С/С++ кода в JS-приложении - Евгений Карпов, Игорь Карпинский (Лаборатория Касперского)
Ссылка на трансляцию: https://www.youtube.com/watch?v=acDBVR8KalU
Доклады:
WebAssembly Flexible Vectors Operations - развитие концепции кросс-платформ SIMD - Пётр Пензин (Intel)
Мифы и реальность портирования C/C++ приложений - Николай Ходов
Варианты использования С/С++ кода в JS-приложении - Евгений Карпов, Игорь Карпинский (Лаборатория Касперского)
Ссылка на трансляцию: https://www.youtube.com/watch?v=acDBVR8KalU
YouTube
WebAssembly Moscow 3
WebAssembly Flexible Vectors Operations - развитие концепции кросс-платформ SIMD - Пётр Пензин
Мифы и реальность портирования C/C++ приложений - Николай Ходов
Варианты использования С/С++ кода в JS-приложении - Евгений Карпов, Игорь Карпинский
Подробнее…
Мифы и реальность портирования C/C++ приложений - Николай Ходов
Варианты использования С/С++ кода в JS-приложении - Евгений Карпов, Игорь Карпинский
Подробнее…
На 77 встречу #TC39, которая начнётся уже в понедельник, добавлена тема про обновление статуса декораторов. Выявлены ограничения, не позволяющие удовлетворить все требования, выдвигаемые к декоратором, поэтому чемпионы пропозала и рабочая группа по декораторам находятся в поиске наиболее удачного компромиссного решения.
Слайды: https://slides.com/pzuraq/decorators-3cb407
Документ с ограничениями и предложенными стратегиями развития: https://docs.google.com/document/d/1DSuLlEbAjBImDutX_rhjnA6821EUyj9rANzDVJS3QV0
Слайды: https://slides.com/pzuraq/decorators-3cb407
Документ с ограничениями и предложенными стратегиями развития: https://docs.google.com/document/d/1DSuLlEbAjBImDutX_rhjnA6821EUyj9rANzDVJS3QV0
Slides
Decorators Status Update 2020-07
A presentation created with Slides.
Спецификации JSON-LD 1.1 опубликованы в статусе W3C рекомендаций. JSON-LD — это основанный на JSON формат для сериализации связанных данных.
Спецификации:
- JSON-LD 1.1
- JSON-LD 1.1 Processing Algorithms and API
- JSON-LD 1.1 Framing
Спецификации:
- JSON-LD 1.1
- JSON-LD 1.1 Processing Algorithms and API
- JSON-LD 1.1 Framing
Вышел Safari Technology Preview 110. Внутри очередная пачка улучшений и исправлений WebRTC, WebAuthn, Web Animations, Media, CSS, рендеринга, доступности, JavaScript, Storage API, безопасности, Web Inspector и нескольких Web API. В целом ничего прям такого интересного, хотя изменений очень много.
WebKit
Release Notes for Safari Technology Preview 110
Safari Technology Preview Release 110 is now available for download for macOS Big Sur and macOS Catalina.
Вышел Edge 84. Изменения такие же, как и у Chrome 84, за редкими специфическими исключениями.
https://docs.microsoft.com/en-us/DeployEdge/microsoft-edge-relnote-stable-channel#version-84052240-july-16
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
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/
https://techblog.wikimedia.org/2020/06/24/how-we-contributed-paint-timing-api-to-webkit/
Forwarded from Иван Акулов про разработку
📖 Тройка ссылок на воскресенье:
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 пишет, почему на практике это работает плохо.
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.
Время проведения встреч — 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 оставался единственным встроенным объектом, у которого не было
Нормативное изменение: Should eval?.() be direct 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
Консенсус достигнут.
Отчёт секретариата 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 (добавлены в спецификацию в июне)
- Promise.any и AggregateError (stage 3)
- String.prototype.replaceAll (ES2020)
- Logical assignment operators (stage 3)
- бейслайн компилатор #WebAssembly Liftoff теперь работает на всех платформах
- поддержка WebAssembly Multi-value (добавлены в спецификацию в мае)
- поддержка JavaScript BigInt в WebAssembly (добавлены в спецификацию в июне)
v8.dev
V8 release v8.5 · V8
V8 release v8.5 features Promise.any, String#replaceAll, logical assignment operators, WebAssembly multi-value and BigInt support, and performance improvements.
⚡️ Promise.any и AggregateError отправляются на stage 4!
MDN Web Docs
Promise.any() - JavaScript | MDN
The Promise.any() static method takes an iterable of promises as input and returns a single Promise. This returned promise fulfills when any of the input's promises fulfills, with this first fulfillment value. It rejects when all of the input's promises reject…