Telegram Web Link
⚡️ Do expressions не переходят на stage 2. После обсуждения презентации чемпион решил проработать нерешённые вопросы и пока оставить пропозал на stage 1.
Первый день июньской встречи #TC39 окончен. Ниже представлен список презентаций во временном порядке с ссылкой на слайды (если есть) и комментариями.


Планирование встреч TC39
Слайды: https://docs.google.com/presentation/d/1NyD7mS7qFXUPVWtUhCsR7gPGEZJKCRwznx4a6efz9yU

До конца этого года встречи скорее всего будут удаленными, в те же даты, что и были запланированы оффлайновые встречи, но 4 дня по 5 часов вместо 2 дней по 7 часов + заключительного дня 6 часов. На 2021 год планируется совсем новый график:
- 4 оффлайновые встречи в традиционном трёхдневном формате (с фоллбеком на четырёхдневный удалённый)
- 8 ежемесячных удалённых встреч по 2 дня и 3 часа в течение дня (кроме месяцев, когда проходят квартальные встречи)


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

Встреча Генеральной Ассамблеи, на которой должны официально одобрить ES2020 и ECMA402 2020, пройдёт 16-17 июня. Стандарты TC39 по-прежнему самые скачиваемые с сайта Ecma (около половины загрузок, при том, что теперь есть tc39.es, куда рекомендуется ходить за свежайшей версией спецификации).


Обновления ECMA262 (JavaScript)
Слайды: https://docs.google.com/presentation/d/1PxrkXXrtgnTgE14k8WnuKtjjyNDJ9ce15ZL_uvl-P9U

В слайдах много ссылок на редакционные и нормативные изменения.


Обновление ECMA402 (Intl API)
Слайды: https://docs.google.com/presentation/d/1leorSs4oYKFh7WYxoR5H2YtYANM8YgYpGQuEW1jMFBc

В слайдах ссылки на PR в спеку и на активные пропозалы от 3 до 0 стейджей.


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

Всё хорошо, работа кипит.


Нормативное изменение: Promise.{all,allSettled,race} should check "resolve" before iterating
Слайды: <отсутствуют>

Достигнут консенсус.


Пропозал Ergonomic brand checks for Private Fields (stage 1 -> stage 2)
Слайды: <не опубликованы>

Переходит на stage 2


Пропозал Logical Assignment (stage 3 обновление)
Слайды: <не опубликованы>

Работает в V8 8.5 (Chromium 85 Canary) и JavaScriptCore (Safari Technology Preview) без флага, в SpiderMonkey (Firefox 77 Beta) под флагом. Решается последний корнер кейс и если всё хорошо, то в июле пропозал будет запрашивать stage 4


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

Было предложено три варианта реализации, из которых ни один не получил консенсуса. Как только какой-то из вариантов будет выбран, пропозал будет пытаться брать stage 3.

Пропозал: Do Expressions (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/14UYf30NeOd5TFZ4QJFigwBLZVotOwuQq3E-BCMIhGgk

Было представлено несколько сложных кейсов, по которым мнения разошлись. Остаётся на stage 1.


Пропозал: Records & Tuples (stage 1 обновление)
Слайды: https://button.dev/talks/record-and-tuple-tc39-june-2020.pdf

Основные вопросы по синтаксису решены, у делегатов возникли разногласия по семантике сравнения. Пропозал собирался подавать на stage 2 на июльской встрече, но пока не понятно сможет ли. Кажется из-за этого может затянуться.
Вебня pinned «Первый день июньской встречи #TC39 окончен. Ниже представлен список презентаций во временном порядке с ссылкой на слайды (если есть) и комментариями. Планирование встреч TC39 Слайды: https://docs.google.com/presentation/d/1NyD7mS7qFXUPVWtUhCsR7gPGEZJKCRwznx4a6efz9yU…»
Вышел браузер Samsung Internet 12 Beta. Этот релиз основан на Chromium 79 и добавляет CSS.registerProperty, Clipboard API, LayoutShift API, SVG favicon. Обещают, что в Internet 12.1 добавится поддержка дополненной реальности в WebXR.

Кроме того, среди новых фич, не указанных в статье:
- Payment Request API
- CSS Backdrop filter
- CSS функции min(), max(), clamp()
- атрибут lazy для изображений и iframe-ов
- Promise.allSettled (ES2020)
⚡️ В самом начале второго дня #TC39 String.prototype.replaceAll переходит на stage 4, а значит станет первым пропозалом, попавшим в ES2021!
⚡️ Function implementation hiding был разделён на два новых пропозала — сокрытие имплементации функции и сокрытие Error.prototype.stack (который, кстати, не является частью стандарта). Чемпион запросил stage 3 для директивы сокрытия имплементации и дальнейшей работы над вторым пропозалом в stage 2. Первый пропозал встретил сопротивление имплементоров движков со стороны Mozilla и Apple, так что оба остаются на stage 2.
Выпущены обновления безопасности Node.js 10.21.0, 12.18.0, 14.4.0.
Добил пост с результатами второго дня июньской встречи TC39. Он вышел настолько большим, что пришлось разбить его на два. Патроны уже получили доступ к посту. В этом канале он опубликуется в 13:00 🕐
Следующая версия Firefox (78, запланированная дата релиза — 30 июня) будет ESR (Extended Support Release), то есть будет поддерживаться в течение года для энтерпрайз юзеров. Для того, чтобы не сломать интеренеты, в 78 было отложено выпиливание некоторых устаревших фич, таких как TLS 1.0/1.1, DTLS 1.0 для WbRTC, FTP, AppCache. Кроме того, отложены внедрение блокировки скриптов с неправильным MIME типом в воркерах и внедрение SameSite=Lax по умолчанию. Некоторые из этих изменений попадут в релиз Firefox 79, а некоторые возможно будут отложены на последующие из-за продолжающейся пандемии COVID-19.

Ну и бонусная информация от меня: об этом нигде не пишут, но SharedArrayBuffer также отключен в Firefox 78 (даже если включить флаг javascript.options.shared_memory в about:config)
Только что в Firefox 79 Nightly была добавлена начальная поддержка приватных полей под отдельным флагом, а это означает, что фича больше не экспериментальная. Билд с этой функциональностью пока не собрался, ждём!

https://bugzilla.mozilla.org/show_bug.cgi?id=1635839
Результаты второго дня июньской встречи #TC39 (первый день здесь)


Пропозал: String.prototype.replaceAll (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/143RkssdqvENZIKCpZVGaHYC5JaIm4mJIdHdTor58IMQ

Пропозал переходит на stage 4 и станет первым пропозалом, который попадёт в ES2021.


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

За этот пропозал я переживаю отдельно, так как являюсь его соавтором (написал большую часть текста спецификации). Были обсуждены и решены все текущие проблемы с новым типом ошибок AggragateError, и, надеюсь, в июле ждём переход на stage 4.


Пропозал: Temporal (stage 2 обновление)
Слайды: http://pipobscure.github.io/temporal-2020-06/

Группой чемпионов была проведена просто невероятная работа! Опубликована документация на MDN, Temporal Cookbook, а также на этой неделе будет опубликован полифилл (внимание, пропозал всё ещё на stage 2, не рекомендуется использовать его в критически важных проектах). Очень надеюсь, что пропозал возьмёт stage 3 в июле и Temporal начнёт появляться в движках.


Обсуждение: поддержка версий Unicode в спецификации
Слайды: https://docs.google.com/presentation/d/1lRTBNs9J8D2__d5a45JqDO2gWMEhjGye8bHIXvtjFnM

Обсуждалось как упростить обновление Unicode для вендоров и при этом не добавить в веб несовместимости. Сложный вопрос, открытая дискуссия.


Пропозал: Decorators (stage 2 обновление)
Слайды: https://slides.com/pzuraq/decorators-status-update-2020-06

Знаю, что многим из читателей интересна судьба декораторов. Для обсуждения этого пропозала существуют отдельные созвоны, проходящие раз в 2 недели. Для тех, кто не сильно следит за этой фичей, стоит рассказать, что некоторое время назад было решено сделать декораторы статическими, то есть движки должны генерировать необходимый код во время компиляции, а не во время исполнения. Иначе сильно упадёт производительность, а также придётся иметь дела с проблемами типа невозможности применить декораторы к функциям из-за хоистинга (если убрать хоистинг, то это сломает обратную совместимость). Чемпионами пропозала было проведено очень крутое исследование, для которого были привлечены авторы фреймворков и библиотек (и хэлперов для этих библиотек), использующих декораторы в TypeScript или Babel (Loopback, Nest, Angular, Aspect.js, Ember, LitElement, Vuex, MobX и мноих других). Были выявлены различные проблемные места, и, к сожалению, выяснилось, что существуют только компромиссные решения. Авторы пропозала работают над тем, чтобы определить наиболее частые паттерны использования и предложить решение с минимальным количеством компромиссов. Это очень сложная и долгая работа. Не ожидайте переход декораторов на stage 3 В ближайшее время.


Пропозал: Function implementation hiding (stage 2 -> stage 3)
Слайды: https://docs.google.com/presentation/d/1zCACnOkueOZHruXv2UzUvKIUA6L7w7W6S2N4bdzwwkM

Пропозал был разделён на два новых — сокрытие имплементации функции и сокрытие Error.prototype.stack (который, кстати, не является частью стандарта). Чемпион запросил stage 3 для директивы сокрытия имплементации и дальнейшей работы над вторым пропозалом в stage 2. Первый пропозал встретил сопротивление имплементоров движков со стороны Mozilla и Apple, так что оба остаются на stage 2.


Пропозал: Intl.NumberFormat V3 (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1uxw0Dd_lNW3zNgpKKsrnwCj2H7tVdlXkS8QJjVeW21k

Этот пропозал добавляет локалезависимое форматирование промежутков чисел, валют и единиц измерения, варианты группировки цифр, варианты точности вещественных чисел, парсинг строк, представляющих числа за пределами значений Number и режимы округления. Stage 2 был взят. Планируется выдвинуть Intl.NumberFormat на stage 3 в сентября. Вероятно я буду одним из рецензентов этого пропозала, так что наверное вы о нём еще почитаете в течение лета 😅.
(продолжение)

Пропозал: Intl.DurationFormat (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1QmrhwsYwlsfe8FJqgGarCIAySWxeZzDqCrVN3-DWiGk

Это фича для локалезависимого представления продолжительности событий во времени. Также переходит на stage 2.


Пропозал: Symbols as WeakMap keys (stage 0 -> stage 1)
Слайды: https://docs.google.com/presentation/d/1g5F3PiIVJosKQPZrwMKGzqBcELd1wShU-NnFby7jFXQ

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


Обсуждение: Arbitrary Module Namespace Names
Слайды: https://docs.google.com/presentation/d/1kYG69h_-x4qULJ9vw24agdt6hhJbpeOFFLC-6t55jVM

Обсуждалась возможность импорта и экспорта произвольных биндингов. Это нужно для случаев, когда имя идентификатора является некорректным в JavaScript (ключевое слово, зарезервированное слово, строка). Автор собирается представить новый пропозал на последующих встречах. Сам сталкивался с такой проблемой, поэтому очень жду!
Вебня pinned «Результаты второго дня июньской встречи #TC39 (первый день здесь) Пропозал: String.prototype.replaceAll (stage 3 -> stage 4) Слайды: https://docs.google.com/presentation/d/143RkssdqvENZIKCpZVGaHYC5JaIm4mJIdHdTor58IMQ Пропозал переходит на stage 4 и станет…»
2025/07/13 18:20:01
Back to Top
HTML Embed Code: