⚡️ Do expressions не переходят на stage 2. После обсуждения презентации чемпион решил проработать нерешённые вопросы и пока оставить пропозал на stage 1.
GitHub
GitHub - tc39/proposal-do-expressions: Proposal for `do` expressions
Proposal for `do` expressions. Contribute to tc39/proposal-do-expressions development by creating an account on GitHub.
Первый день июньской встречи #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 на июльской встрече, но пока не понятно сможет ли. Кажется из-за этого может затянуться.
Планирование встреч 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 на июльской встрече, но пока не понятно сможет ли. Кажется из-за этого может затянуться.
Вышел браузер 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 функции
- атрибут
- Promise.allSettled (ES2020)
Кроме того, среди новых фич, не указанных в статье:
- Payment Request API
- CSS Backdrop filter
- CSS функции
min()
, max()
, clamp()
- атрибут
lazy
для изображений и iframe-ов- Promise.allSettled (ES2020)
Medium
Samsung Internet 12.0
Try it now in Beta
⚡️ В самом начале второго дня #TC39 String.prototype.replaceAll переходит на stage 4, а значит станет первым пропозалом, попавшим в ES2021!
GitHub
GitHub - tc39/proposal-string-replaceall: ECMAScript proposal: String.prototype.replaceAll
ECMAScript proposal: String.prototype.replaceAll. Contribute to tc39/proposal-string-replaceall development by creating an account on GitHub.
Вышел Firefox 77. В нём:
- Много улучшений DevTools
- String.prototype.replaceAll, который только что перешёл на stage 4
- IDBCursor.request
Список изменений для разработчиков: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/77
Список изменений для конечных пользователей: https://www.mozilla.org/en-US/firefox/77.0/releasenotes/
- Много улучшений DevTools
- String.prototype.replaceAll, который только что перешёл на stage 4
- IDBCursor.request
Список изменений для разработчиков: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/77
Список изменений для конечных пользователей: https://www.mozilla.org/en-US/firefox/77.0/releasenotes/
Mozilla Hacks – the Web developer blog
New in Firefox 77: DevTool improvements and web platform updates
Firefox 77 is now available with a variety of developer tool updates and new web platform features. With your feedback, we've removed performance bottlenecks, resulting in faster, leaner JavaScript debugging. ...
⚡️ Function implementation hiding был разделён на два новых пропозала — сокрытие имплементации функции и сокрытие Error.prototype.stack (который, кстати, не является частью стандарта). Чемпион запросил stage 3 для директивы сокрытия имплементации и дальнейшей работы над вторым пропозалом в stage 2. Первый пропозал встретил сопротивление имплементоров движков со стороны Mozilla и Apple, так что оба остаются на stage 2.
GitHub
GitHub - tc39/proposal-function-implementation-hiding: JavaScript language proposal: function implementation hiding
JavaScript language proposal: function implementation hiding - tc39/proposal-function-implementation-hiding
⚡️ Intl.NumberFormat V3 переходит на stage 2
GitHub
GitHub - tc39/proposal-intl-numberformat-v3: Additional features for Intl.NumberFormat to solve key pain points.
Additional features for Intl.NumberFormat to solve key pain points. - GitHub - tc39/proposal-intl-numberformat-v3: Additional features for Intl.NumberFormat to solve key pain points.
Следующая версия 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 (даже если включить флаг
Ну и бонусная информация от меня: об этом нигде не пишут, но SharedArrayBuffer также отключен в Firefox 78 (даже если включить флаг
javascript.options.shared_memory
в about:config)Только что в Firefox 79 Nightly была добавлена начальная поддержка приватных полей под отдельным флагом, а это означает, что фича больше не экспериментальная. Билд с этой функциональностью пока не собрался, ждём!
https://bugzilla.mozilla.org/show_bug.cgi?id=1635839
https://bugzilla.mozilla.org/show_bug.cgi?id=1635839
bugzilla.mozilla.org
1635839 - Initial Private Fields Functionality
RESOLVED (mgaudet) in Core - JavaScript Engine. Last updated 2020-06-03.
Результаты второго дня июньской встречи #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 в сентября. Вероятно я буду одним из рецензентов этого пропозала, так что наверное вы о нём еще почитаете в течение лета 😅.
Пропозал: 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 (ключевое слово, зарезервированное слово, строка). Автор собирается представить новый пропозал на последующих встречах. Сам сталкивался с такой проблемой, поэтому очень жду!
Пропозал: 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 (ключевое слово, зарезервированное слово, строка). Автор собирается представить новый пропозал на последующих встречах. Сам сталкивался с такой проблемой, поэтому очень жду!
Вышел Tor Browser 9.5, основанный на Firefox 68 ESR. Об этом можно во всех подробностях почитать вот тут, а я пойду готовиться к третьему дню TC39.
www.opennet.ru
Доступен Tor Browser 9.5
После шести месяцев разработки сформирован значительный релиз специализированного браузера Tor Browser 9.5, в котором продолжено развитие функциональности на базе ESR-ветки Firefox 68. Браузер сосредоточен на обеспечении анонимности, безопасности и приватности…
⚡️ Пропозал Module attributes не смог перейти на stage 2, но возможно к этой теме ещё вернутся завтра.
GitHub
GitHub - tc39/proposal-import-assertions: Proposal for syntax to import ES modules with assertions
Proposal for syntax to import ES modules with assertions - GitHub - tc39/proposal-import-assertions: Proposal for syntax to import ES modules with assertions