Вебня
4.7K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Компания Mozilla открыла новый канал для разработчиков на YouTube. Среди первых выложенных видео три руководства по CSS. Подробнее об этом, а также саи видео в статье https://hacks.mozilla.org/2019/10/video-shorts-from-mozilla-developer/
Эрик Лоуренс (Microsoft Edge) о включении Same-Site Cookies по умолчанию в Chrome 80, а также о том:
- как эта директива (а также secure и httponly) поможет с приватностью и безопасностью: запретит куки от третьих лиц, предотвратит CSRF, MiTM атаки, XSS атаки
- что может пойти не так
- каков план отката
- как проверить свой сайт на готовность к SameSite используя Chrome DevTools
- других возможных проблемах (Safari 12, .NET Framework)
- что об этом думают другие вендоры браузеров

Бонус:
- статья о SameSite cookies от Google
- поддержка SameSite в браузерах на CanIUse
Вот уже час как идёт первый день октябрьской встречи #TC39 в Нью-Йорке. Сегодня из возможных продвижений пропозалов в повестке только Records & Tuples (со stage 0 на stage 1), в остальном апдейты и нормативные изменения, так что результаты опубликую по окончанию встречи (а скорее всего уже завтра). Пока что предлагаю ознакомиться со слайдами к презентации Records & Tuples, которая пройдёт практически в самом конце этого дня встречи.
Итоги первого дня октябрьской встречи #TC39:

- 📌 апдейт ECMA262 от редактора (который, кстати, остался один, т.к. Кевин Смит из Microsoft от своей роли редактора отказался)
- 📌 апдейт ECMA402, в котором можно узнать о создании подгруппы для работой над FormatMessage
- 📌 апдейт TEST262
- консенсус по нормативному изменению Evaluate all computed names before any values in object literals не был достигнут
- консенсус по нормативному изменению Remove ToUint32 from array literal evaluation был достигнут и PR уже влит в спецификацию
- консенсус по нормативному изменению Prevent DFS invariants from being broken был достигнут
- консенсус по нормативному изменению Redefine CatchParameter as FormalParameter не был достигнут, было оформить перенести данное нормативное как отдельное предложение в спецификацию
- консенсус по нормативному изменению Strengthening Atomics.wait and Atomics.notify был достигнут
- 📌 апдейт по Optional Chaining и Nullish Coalescin — оба будут представлены для перехода на stage 4 на декабрьской встрече #TC39
- 🚀предложение Object.map переходит со stage 0 на stage 1, но скорее всего не будет методом в Object
- 🚀предложение Records & Tuples переходит со stage 0 на stage 1
- 📌 был представлен доклад Grammar Validity
- 📌 апдейт по Top-level await, у него всё хорошо
- 🚀предложение globalThis, которое уже давно реализовано во всех движках, отправляется на stage 4, а значит попадёт в ES2020
- 🚀 предложение for-in order переходит со stage 2 на stage 3

Очень продуктивный день, комитет сделал гораздо больше, чем изначально планировалось.
Все 3 спецификации #WebAssembly перешли из статуса Candidate Recommendation в статус Proposed Recommendation:
- WebAssembly Core Specification
- WebAssembly JavaScript Interface
- WebAssembly Web API
Все последние правки в эти спецификации принимаются до 27 октября, после чего будет инициирован их переход в (финальный) статус W3C Recommendation.
Разработчики Chromium рассказали о своих планах по выключению TLS 1.0 и 1.1. Напомню, что в Safari Technology Preview и Firefox Nightly устаревшие небезопасные версии протокола уже отключены. Ранее я также публиковал тут новость со статьёй о том, как проверить свои сайты на поддержку TLS 1.2 и 1.3.
Через 2 часа начнётся второй день #TC39. Сегодня повестка дня выглядит вот так (в часовой зоне EDT):
• 10:00-11:00
◦ 15m Promise.any for Stage 3 Mathias Bynens
◦ 15m Reduce the amount of implementation-defined behavior in Array.prototype.sort (comment) Mathias Bynens
◦ 30m String.prototype.replaceAll for Stage 3 Mathias Bynens
• [optional] break (5 minutes)
• 11:05-12:05
◦ 30m Update on sequence property escapes in Unicode regular expressions Mathias Bynens
◦ 30m Proposal Disclosure Policy Michael Saboff
• lunch (60 minutes)
• 13:05-14:35
◦ 30m Revisit ECMA-402 casing conventions Shane Carr
◦ 30m Map#upsert , previously Map#insertOrUpdate for Stage 2 Erica Pramer
◦ 30m Update on Temporal Philipp Dunkel
• break (10 minutes)
• 14:45-15:45
◦ 30m Declarations in Conditionals for Stage 1 Devin Rousso
◦ 30m Intl.DisplayNames for Stage 3 Frank Tang
• break (15 minutes)
• 16:00-17:00
◦ 15m Update on RegExp Match Indices Ron Buckton


Первым же будет обсуждаться пропозал Promise.any, над текстом спецификации которого я работал, и как раз исправил в ней (надеюсь что) последний баг. 😬

Результаты предыдущего дня встречи комитета читайте тремя сообщениями выше.
Спустя примерно год разработки, вышел Preact X. Среди новых фич:
- Фрагменты
- componentDidCatch
- preact/hooks addon
- preact/test-utils addon
- createContext API
- полная совместимость с React из коробки (ранее требовался слой совместимости в виде preact/compat)
При этом размер библиотеки остался так же 3кб.
Итоги второго дня октябрьской встречи #TC39:

- предложение Promise.any пока остаётся на stage 2 (сегодня будет дополнительное обсуждение)
- консенсус по нормативному изменению Reduce the amount of implementation-defined behavior in Array.prototype.sort достигнут
- 🚀 String.prototype.replaceAll переходит со stage 2 на stage 3
- апдейт sequence property escapes in Unicode regular expressions (stage 2) — есть прогресс, нужно решить еще некоторые вопросы
- 📌 Proposal Disclosure Policy — не очень понятно как это сделать и кто именно должен этим заниматься (явно не сам TC39, возможно ExeCom или GA)
- Revisit ECMA-402 casing conventions — документ заапрувлен
- 🚀 Map.prototype.upsert переходит со stage 2 на stage 3
- 📌 апдейт Temporal (stage 2) — всё идёт по плану
- 🚀 Declarations in Conditionals переходит на stage 1
- 🚀 Intl.DisplayNames переходит со stage 2 на stage 3
- 📌 RegExp Match Indices в декабре будет пытаться взять stage 4, ожидает имплементации в JavaScriptCore (движке WebKit/Safari) или SpiderMonkey (движке Firefox)
- Unifying private field errors — имена, начинающиеся с решётки будут всплывать (hoist), чтобы не было TDZ и ReferenceError.

Итоги первого дня можно найти тут.
Вышел Safari Technology Preview 93. Включает в основном правки багов. Ознакомиться со списком изменений можно тут:
https://webkit.org/blog/9600/release-notes-for-safari-technology-preview-93/
Итоги третьего дня октябрьской встречи #TC39:

- UUID не смог взять stage 1
- 🚀 Readonly Collections переходит на stage 1
- 🚀 Eventual-Send: Support for distributed promise pipelining переходит на stage 1
- 🚀 Wavy Dot syntax for promise pipelining переходит на stage 1
- 🚀 OOM Fails Fast переходит на stage 1

Итоги первого дня можно найти тут.
Итоги второго дня можно найти там.
Джейк Арчибальд о результатах встречи #W3C на TPAC в Фукуоке относительно Service workers. В посте он рассказывает про новые добавленные, а также убранные из стандарта фичи.
https://jakearchibald.com/2019/service-workers-tpac/
Опубликованы 4 видео с прошедшей встречи #TC39 с докладами-презентациями новых предложений в ECMAScript от Марка Миллера из компании Agoric. Все эти предложения перешли на stage 1:
- Readonly Collections
- Eventual Send
- Wavy Dot syntax
- OOM Fails Fast
Instance Class Fields (stage 3) проходят очередное ревью в JavaScriptCore.

https://bugs.webkit.org/show_bug.cgi?id=174212#c140

Напомню, что Public Instance Class Fields поддерживаются в Firefox 69+ и Chrome 72+, а Private Instance Class Fields в только в Chrome 74+.
Майлс Боринс рассказывает о своём пропозале Top-level await (stage 3), который уже поддерживается в REPL Chrome, Node.js и Safari:
https://v8.dev/features/top-level-await
Совсем забыл рассказать. Несколько дней назад был открыт репозиторий с исходным кодом грядущего Vue 3.

https://github.com/vuejs/vue-next
Unicode Consortium создали страницу с частотой использования различных emoji. Анализ частоты использования текущих emoji позволяет принять решение о включении новых предложений в стандарт.

https://home.unicode.org/emoji/emoji-frequency/
Как известно, Mozilla собирается добавить в Firefox встроенный VPN. В данный момент он доступен только пользователям США. Сервис предоставляется в партнерстве с Cloudflare. Как выяснилось, согласно private police, Cloudflare собирает IP пользователя и сайта, время запроса и уникальный идентификатор пользователя, который хранится 24 часа или более в случае необходимости. Помимо этого, Mozilla также собирает информацию об устройстве, операционной системе, а также уникальный идентификатор пользователя и другую информацию. Всё это ставит под некоторое сомнение гарантии приватности при использовании Firefox Private Network. В любом случае, это неплохая альтернатива другим бесплатным VPN, у которых с приватность зачастую ещё хуже.

https://restoreprivacy.com/firefox-vpn-private-network/