Вебня
4.66K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Результаты третьего дня июньской встречи #TC39 (первый день здесь, второй здесь)


Пропозал: Module attributes (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1MOVBh0gw7-tqEx-maEvS2HsgwXd5X5pcwL80V67xCIg

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


Пропозал: Built In Modules (stage 1 обновление)
Слайды: https://github.com/msaboff/tc39/blob/master/Built%20In%20Modules%20TC39%20June%202020.pdf

Практически все предыдущие проблемы (такие как способ поллифиллить встроенные модули) были решены. Некоторые высказывают опасения насчет дихотомии глобальных неймспейсов и встроенных модулей. Чемпион собирается просить stage 2 для пропозала на ближайших встречах.


Пропозал: Deep Path Properties in Record Literals (stage 0 -> stage 1)
Слайды: https://button.dev/talks/deep-path-properties-tc39-june-2020.pdf

Было много обсуждений и остались некоторые сомнения, но пропозал смог взять stage 1. Из забавного: упомянули такой термин как monocle-mustache оператор aka “.{“. По-моему забавно.


Пропозал: Restrict subclassing support in built-in methods (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/1vJeJFueDwrj8ebXFdGsEO1J_Q-DzfU01dLEGVd26A9o

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


Пропозал: Async Context (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/1c9gZv0e_3kITQI7Wwo2Cap3WviudORclE2dWsX4SIJ8

На самом деле это воскрешённая и слегка изменённая версия старого пропозала Zones, который так и не смог сдвинуться со stage 0. Zones были отозваны чемпионом, т.к. тот прекратил своё участие в TC39. Новый пропозал пока тоже не смог взять stage 1, продвижение было заблокировано сразу несколькими делегатами.


Пропозал: Intl Enumeration API (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/17bkiVWuYxhMc24If72d6oENK3G6G-irO2EB4EEQCgxU/edit?usp=sharing

Были высказаны некоторые опасения относительно проблемы отслеживания пользователя (fingerprinting) через это API, но пропозал взял stage 1.
Вебня pinned «Результаты третьего дня июньской встречи #TC39 (первый день здесь, второй здесь) Пропозал: Module attributes (stage 1 -> stage 2) Слайды: https://docs.google.com/presentation/d/1MOVBh0gw7-tqEx-maEvS2HsgwXd5X5pcwL80V67xCIg Мнения разделились, и некоторые…»
⚡️ Новый пропозал Generic Comparison переходит на stage 1, но с условием, что это будет покрывать только массивы
Вебня
⚡️ Пропозал Module attributes не смог перейти на stage 2, но возможно к этой теме ещё вернутся завтра.
⚡️ Сегодня была вторая попытка для продвижения пропозала Module attributes (первая была вчера) иии stage 2 взят!
76я встреча #TC39 официально закончилась. Результаты четвёртого дня опубликую завтра. Полный обзор всех изменений в удобном виде скорее всего уже в выходные. Следующая встреча пройдёт 20-23 июля.
Инженеры, работающие над SpiderMonkey, написали о том, как они обновляли свой движок для регулярных выражений в коллаборации с командой V8.

https://hacks.mozilla.org/2020/06/a-new-regexp-engine-in-spidermonkey/
Исследователь безопасности Bhavuk Jain написал об обнаруженной им уязвимости нулевого дня в способе аутентификации Sign-in with Apple.

https://bhavukjain.com/blog/2020/05/30/zeroday-signin-with-apple/
Результаты четвёртого дня июньской встречи #TC39 (первый день здесь, второй здесь, третий тут)


Пропозал: Realms (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/1TfVtfolisUrxAPflzm8wIhBBv_7ij3KLeqkfpdvpFiQ

Кажется наконец-то этот важный пропозал начинает уверенное движение к stage 3. Перед этим необходимо согласовать дизайн с рабочей группой HTML и W3C TAG.


Пропозал: Smart Unit Preferences in Intl.NumberFormat (stage 0 -> stage 1)
Слайды: https://bit.ly/intl-number-format-usage

Эта фича позволит использовать локализованные единицы измерения, например, километры для измерения расстояния в России и мили для США. Отдельно интересно, что докладчику был задан вопрос о том, как пользователь сможет переопределить единицы измерения. На этот вопрос ответил председатель TG2 Shane Carr, который, как оказалось, готовит черновик пропозала для пользовательских предпочтений. Интересно! Ну а smart unit preferences взяли stage.


Пропозал: Intl.Segmenter (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/1Pe9eVhgK93cgB3KCufTQvzqCjIYj3RRxJaOeNIbWN_A

Вообще этот пропозал собирался брать stage 3, но чемпион не успел заявить его на продвижений до дедлайна (10 дней до начала встречи TC39). Но кажется пропозал требует уточнения, и возможно не продвинулся бы в любом случае. Надеюсь, что скоро всё же увидим Intl.Segmenter на stage 3, потому что в своей работе не раз испытывал необходимость в таком API.


Пропозал: Generic Comparison (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/1OO3QwtP4S0SOXGW9m4pdgG_CHo2eCz0sA6u3NXAgb9M/edit?usp=sharing

Переходит на stage 1, но с условием, что он будет покрывать только массивы


Пропозал: .item() (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/1vRjhR1Vl9GeOeXno-s8DkQppeZFE3xx59Od91HG6db4/edit

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


Обсуждение: Incubation call chartering
Слайды: <отсутствуют>

Не так давно в рамках TC39 стали проводить отдельные созвоны, позволяющие решить какие-то важные вопросы по конкретным пропозалам или затрагивающие несколько пропозалов. Это должно позволить решать различные проблемы еще до встречи TC39. Созвоны проводятся в течение часа раз в две недели. к участию были приглашены чемпионы пропозалов, которые столкнулись с критикой или недопониманием и все заинтересованные делегаты и приглашенные эксперты.


Пропозал: Module attributes (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1MOVBh0gw7-tqEx-maEvS2HsgwXd5X5pcwL80V67xCIg/edit#slide=id.g8634fc5940_28_0

Короткая презентация о решении проблем, озвученных в третий день встречи (ограничение возможностей атрибутов) всё же привела к консенсусу и stage 2.


Обсуждение: Editorial Direction
Слайды: https://docs.google.com/presentation/d/14NsIoRhr-z7HvRG0laq_F2c4iNPHF-Ld17-Yibshdo0

Редакторы спецификации предложили уточнить использование терминологии относительно хоста и имплементации. Дискуссия остаётся открытой.
Вебня pinned «Результаты четвёртого дня июньской встречи #TC39 (первый день здесь, второй здесь, третий тут) Пропозал: Realms (stage 2 обновление) Слайды: https://docs.google.com/presentation/d/1TfVtfolisUrxAPflzm8wIhBBv_7ij3KLeqkfpdvpFiQ Кажется наконец-то этот важный…»
Microsoft начал распространять обновление для Windows 10, в котором Edge Legacy будет заменён новым Edge на основе Chromium.

https://support.microsoft.com/en-us/help/4541302/the-new-microsoft-edge-is-available
Патч с приватными полями классов только что был добавлен в кодовую базу WebKit!

https://bugs.webkit.org/show_bug.cgi?id=206431#c57
Несколько статей с обсуждением нового (на самом деле не такого уж и нового) тренда — сканирование портов, которое используется в основном сайтами электронной коммерции и банками для проверки безопасности (удалённое подключение), антифрауда и/или сбора информации (фингерпринтинга) пользователей.

https://nullsweep.com/why-is-this-website-port-scanning-me/
https://blog.nem.ec/2020/05/24/ebay-port-scanning/
Axel Rauschmayer продолжает свой цикл статей о TypeScript. На этот раз он написал о type assertions как о самом крайнем способе точечно подменить тип.

https://2ality.com/2020/06/type-assertions-typescript.html
⚡️ На 77й встрече #TC39, которая пройдёт 20-23 июля, уже как минимум два пропозала будут представлены к переходу на stage 4. Это Promise.any & AggregateError и WeakRefs 🔥
Вероятнее всего к ним присоединится также Logical Assignment Operators

Обновление от 9.06.2020: пропозал Logic Assignment также запросит stage 4 на 77й встрече TC39
Protect your resources from web attacks with Fetch Metadata — статья о том, как избежать различных cross-origin атак, правильно используя метаданные заголовков fetch.

https://web.dev/fetch-metadata/
Experimenting with QuicTransport — статья о новом экспериметальном API, обеспечивающем двунаправленный обмен сообщениями с низкой задержкой (как без гарантий порядка сообщений, так и с ним). QuicTransport доступен в Chromium под origin trial.

https://web.dev/quictransport/
TypeScript: narrowing types via type guards and assertion functions — очередня статья от Axel Rauschmayer. В этот раз об уточнении типов.

https://2ality.com/2020/06/type-guards-assertion-functions-typescript.html#assertion-functions
WeakRefs (stage 3) только что были включены по умолчанию в Firefox Nightly 79, ждём билд.

https://bugzilla.mozilla.org/show_bug.cgi?id=1639246#c8