⚡️ Intl.DateTimeFormat dateStyle/timeStyle отправляется на stage 4!
GitHub
GitHub - tc39/proposal-intl-datetime-style: dateStyle and timeStyle options for DateTimeFormat
dateStyle and timeStyle options for DateTimeFormat - GitHub - tc39/proposal-intl-datetime-style: dateStyle and timeStyle options for DateTimeFormat
⚡️ WeakRefs отправляются на stage 4, также от них отделяется CleanupSome, которому присваивается stage 2!
MDN Web Docs
WeakRef - JavaScript | MDN
A WeakRef object lets you hold a weak reference to another object, without preventing that object from getting garbage-collected.
⚡️ Numeric separators отправляются на stage 4!
GitHub
GitHub - tc39/proposal-numeric-separator: A proposal to add numeric literal separators in JavaScript.
A proposal to add numeric literal separators in JavaScript. - GitHub - tc39/proposal-numeric-separator: A proposal to add numeric literal separators in JavaScript.
⚡️ .item() переходит на stage 2!
GitHub
GitHub - tc39/proposal-relative-indexing-method: A TC39 proposal to add an .at() method to all the basic indexable classes (Array…
A TC39 proposal to add an .at() method to all the basic indexable classes (Array, String, TypedArray) - GitHub - tc39/proposal-relative-indexing-method: A TC39 proposal to add an .at() method to al...
Improving HTTP with structured header fields — статья о новой спецификации, которая добавит структурированные заголовки в HTTP. Уже доступны различные имплементации, в том числе имплементация в Chrome.
Fastly
Improving HTTP with structured header fields
The HTTP community has been busy modernizing the web’s protocol over the last decade, with multiple revisions of the core specification, a number of extensions, HTTP/2, and now HTTP/3. Unfortunately, the way we define and use HTTP header fields hasn’t changed…
В Firefox 79 (выйдет 28 июля) собираются снова включить SharedArrayBuffer по умолчанию. Ранее поддержка SAB была выключена во всех браузерах в начале 2018 из-за уязвимости и Spectre. Для использования SAB в Firefox потребуется добавить заголовки COOP и COEP.
Mozilla Hacks – the Web developer blog
Safely reviving shared memory
At Mozilla, we want the web to be capable of running high-performance applications so that users and content authors can choose the safety, agency, and openness of the web platform. ...
В Chrome 85 (выйдет 25 августа) появится поддержка Houdini Properties and Values API прямо в CSS.
https://web.dev/at-property/
https://web.dev/at-property/
web.dev
@property: giving superpowers to CSS variables | Articles | web.dev
Learn how to implement CSS custom properties with semantic typing, a fallback value, and more, directly in your CSS file.
В Svelte реализовали одну из самых долгожданных фич — поддержку TypeScript.
https://svelte.dev/blog/svelte-and-typescript
https://svelte.dev/blog/svelte-and-typescript
svelte.dev
Svelte <3 TypeScript
Typernetically enhanced web apps
Результаты второго дня июльской встречи #TC39. Результаты первого дня здесь.
Пропозал: Promise.any & AggregateError (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1PcfPP5nLVG8w5OosQt5PWwOmFUPuD5pg1rgGaF1JVis
Несказанно счастлив переходу этого пропозала на stage 4, т.к. я один из авторов и мной написана значительная часть текста спецификации.
Нормативное изменение: Strictness check for object's SetMutableBinding
Слайды: https://docs.google.com/presentation/d/1O_YdntfiZMTsxX_2FPk1YZypEy1vncL3X1NCg-vmC1E
Поведение, которое Вы никогда бы не обнаружили, потому что так не надо писать код. В любом случае, оно исправлено.
Пропозал: Intl.ListFormat (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/13gxxnt-JMuWXJhzwuU2jtBRZ8RGJgJ0Y8RsIvHEQU7k/edit#slide=id.p
Пропозал для локалезависимого отображения списков переходит на stage 4.
Пропозал: Intl.DateTimeFormat dateStyle/timeStyle (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1USMb1b_1zDMAlw3Aw5k9DpqZsZ3NS_q9gOyhRCQc-qg
Локалезависимое форматирование времени и даты также переходит на stage 4
Нормативное изменение: Fix Function.toString for builtins
Не достигло консенсуса, обсуждение продолжится в четверг (если хватит времени)
Пропозал: WeakRefs (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1NYhEELzOnhJGU7inKz0r0TrEa0h33krr1nEb3X_ze5w
Слабые ссылки переходят на stage 4, а CleanupSome ответвляется в отдельный stage 2 пропзал.
Пропозал: Logical Assignment (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1rq448C-mzxWzBs6RTInczGTjs4xv5gQenDJY1fGogX0
Берёт stage 4.
Пропозал: Decorators (stage 2 обновление)
Слайды: <позже>
Тут всё сложно. Чемпионы выявили ограничения, которые не позволяют удовлетворить всем требованиям к декораторам. Были представлены эти ограничения, комитет в процессе поиска наиболее удачного решения.
Пропозал: Numeric Separator (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1rLT5m3d0yk2KMlka4KZKf2uz9oITdpfr6evAV_jaKcc
Наконец-то решены последние спорные вопросы, и пропозал (уже очень давно реализованный во всех браузерах) попадает на stage 4.
Пропозал: Slice notation (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1EBpiGuYn2ChDvcd67fpz6gGY14kO8VCuAKOhFMxOqEQ
Остаётся на stage 1. Некоторые делегаты не одобрили текущую версию предложения.
Пропозал: Temporal (stage 2 обновление)
Слайды: https://pipobscure.dev/slides/temporal-2020-07/
Ну тут всё хорошо. Общими усилиями (в том числе и вашими, дорогие читательи!) собирается нужный фидбек. Думаю, есть все шансы увидеть пропозал на stage 3 уже в этом году.
Пропозал: Import Conditions (stage 2 -> stage 3)
Слайды: https://docs.google.com/presentation/d/18THsm_ZAog70m0ZlEokRCfyrarMiA1yr6YDAvFXjVNU
Пропозал пока что не переходит на stage 3, но в целом, больших проблем нет. Ждём на stage 3 на следующих встречах TC39.
Пропозал: Intl.Segmenter (stage 2 -> stage 3)
Слайды: https://docs.google.com/presentation/d/1LOOt4WPvQdOK3banHkz1V8sdl8Z-7Z9jXBRRS9Ek8-M
Stage 3 взят.
Пропозал: Iterator Helpers (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/1YNLzi_ENRtxp5bjhXMUplQ0VIQBUFLyucbNFt_oaNgQ
В Firefox уже есть тестовая рабочая имплементация (можне даже найти её под флагом в
Пропозал: .item() (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1N-oXRRKDA7patBA4HIYkzN67j1pbyOxuDZoYRvPFmuA
Stage 2 взят, определены ревьюеры для stage 3.
Пропозал: Promise.any & AggregateError (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1PcfPP5nLVG8w5OosQt5PWwOmFUPuD5pg1rgGaF1JVis
Несказанно счастлив переходу этого пропозала на stage 4, т.к. я один из авторов и мной написана значительная часть текста спецификации.
Нормативное изменение: Strictness check for object's SetMutableBinding
Слайды: https://docs.google.com/presentation/d/1O_YdntfiZMTsxX_2FPk1YZypEy1vncL3X1NCg-vmC1E
Поведение, которое Вы никогда бы не обнаружили, потому что так не надо писать код. В любом случае, оно исправлено.
Пропозал: Intl.ListFormat (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/13gxxnt-JMuWXJhzwuU2jtBRZ8RGJgJ0Y8RsIvHEQU7k/edit#slide=id.p
Пропозал для локалезависимого отображения списков переходит на stage 4.
Пропозал: Intl.DateTimeFormat dateStyle/timeStyle (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1USMb1b_1zDMAlw3Aw5k9DpqZsZ3NS_q9gOyhRCQc-qg
Локалезависимое форматирование времени и даты также переходит на stage 4
Нормативное изменение: Fix Function.toString for builtins
Не достигло консенсуса, обсуждение продолжится в четверг (если хватит времени)
Пропозал: WeakRefs (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1NYhEELzOnhJGU7inKz0r0TrEa0h33krr1nEb3X_ze5w
Слабые ссылки переходят на stage 4, а CleanupSome ответвляется в отдельный stage 2 пропзал.
Пропозал: Logical Assignment (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1rq448C-mzxWzBs6RTInczGTjs4xv5gQenDJY1fGogX0
Берёт stage 4.
Пропозал: Decorators (stage 2 обновление)
Слайды: <позже>
Тут всё сложно. Чемпионы выявили ограничения, которые не позволяют удовлетворить всем требованиям к декораторам. Были представлены эти ограничения, комитет в процессе поиска наиболее удачного решения.
Пропозал: Numeric Separator (stage 3 -> stage 4)
Слайды: https://docs.google.com/presentation/d/1rLT5m3d0yk2KMlka4KZKf2uz9oITdpfr6evAV_jaKcc
Наконец-то решены последние спорные вопросы, и пропозал (уже очень давно реализованный во всех браузерах) попадает на stage 4.
Пропозал: Slice notation (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1EBpiGuYn2ChDvcd67fpz6gGY14kO8VCuAKOhFMxOqEQ
Остаётся на stage 1. Некоторые делегаты не одобрили текущую версию предложения.
Пропозал: Temporal (stage 2 обновление)
Слайды: https://pipobscure.dev/slides/temporal-2020-07/
Ну тут всё хорошо. Общими усилиями (в том числе и вашими, дорогие читательи!) собирается нужный фидбек. Думаю, есть все шансы увидеть пропозал на stage 3 уже в этом году.
Пропозал: Import Conditions (stage 2 -> stage 3)
Слайды: https://docs.google.com/presentation/d/18THsm_ZAog70m0ZlEokRCfyrarMiA1yr6YDAvFXjVNU
Пропозал пока что не переходит на stage 3, но в целом, больших проблем нет. Ждём на stage 3 на следующих встречах TC39.
Пропозал: Intl.Segmenter (stage 2 -> stage 3)
Слайды: https://docs.google.com/presentation/d/1LOOt4WPvQdOK3banHkz1V8sdl8Z-7Z9jXBRRS9Ek8-M
Stage 3 взят.
Пропозал: Iterator Helpers (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/1YNLzi_ENRtxp5bjhXMUplQ0VIQBUFLyucbNFt_oaNgQ
В Firefox уже есть тестовая рабочая имплементация (можне даже найти её под флагом в
about:config
😉). Были определены ревьюеры для stage 3.Пропозал: .item() (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1N-oXRRKDA7patBA4HIYkzN67j1pbyOxuDZoYRvPFmuA
Stage 2 взят, определены ревьюеры для stage 3.
⚡️ новый пропозал await operations переходит на stage 1!
GitHub
GitHub - tc39/proposal-await.ops: Introduce await.all / await.race / await.allSettled / await.any to simplify the usage of Promises
Introduce await.all / await.race / await.allSettled / await.any to simplify the usage of Promises - GitHub - tc39/proposal-await.ops: Introduce await.all / await.race / await.allSettled / await.any...
⚡️ новый пропозал Array.prototype.unique() берёт stage 1!
GitHub
GitHub - tc39/proposal-array-unique: ECMAScript proposal for Deduplicating method of Array
ECMAScript proposal for Deduplicating method of Array - GitHub - tc39/proposal-array-unique: ECMAScript proposal for Deduplicating method of Array
Итоги третьего дня июльской встречи #TC39. Смотрите также результаты первого и второго дня.
Пропозал: Ergonomic brand checks for private fields (stage 2 -> stage 3)
Консенсус на продвижение не был достигнут. Некоторые делегаты высказались за то, чтобы приватные поля сначала попали на стейдж 4.
Пропозал: Upsert (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/16PtTpuvkTFycaaqkk5XGZRPLNwzUrzBuN9y7VSrGX9k/edit#slide=id.p
Изначально чемпион собирался запрашивать у комитета продвижене на stage 3, но отказался от этого до презентации. Также выявлены новые проблемы. Консенсус не был достигнут.
Пропозал: Number.range (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.p
Обсуждения не вложились в отведённое время, консенсус не достигнут.
Пропозал: await operations (-> stage 1)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.g89f56b0333_1_40
Переходит на stage 1.
Пропозал: Array.prototype.unique() (-> stage 1)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.g89f56b0333_1_150
Переходит на stage 1, но, кажется, имя метода придётся поменять из-за mootools.
Пропозал: Record and Tuple (stage 1 -> stage 2)
Слайды: https://button.dev/talks/record-and-tuple-tc39-july-2020.pdf
Переходит на stage 2! Выбраны ревьюеры для stage 3.
Пропозал: Symbols as WeakMap keys (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1AofgrikRJp4vTc_tqlchDk4DU9p4eqZdyxnlrFEYsvc/edit#slide=id.p
Обсуждения не вложились в отведённое время, а также было решено проработать мотивационную часть пропозала.
Пропозал: JSON.parse source text access (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1MGJhUvrWl4dE4otjUm8jXDrhaZLh9g7dnasnfK-VyZg/edit?usp=sharing
Stage 2 взят! Выбраны ревьюеры для stage 3.
Пропозал: Arbitrary Module Namespace Identifiers (stage 0 -> stage 1)
Было решено сделать нормативное изменение вместо пропозала на следующих встречах комитета.
Нормативное изменение: Host hooks for Job callbacks
Слайды: https://docs.google.com/presentation/d/19S97ZqhibJABqzeP5ZU6Flk6TVgWzXuvJWFbNTTfpWs/edit?usp=sharing
Продолжение обсуждений с первого дня. Консенсус достигнут.
Нормативное изменение: Function toString for builtins
Продолжение обсуждений с первого дня. Консенсус достигнут.
Пропозал: Ergonomic brand checks for private fields (stage 2 -> stage 3)
Консенсус на продвижение не был достигнут. Некоторые делегаты высказались за то, чтобы приватные поля сначала попали на стейдж 4.
Пропозал: Upsert (stage 2 обновление)
Слайды: https://docs.google.com/presentation/d/16PtTpuvkTFycaaqkk5XGZRPLNwzUrzBuN9y7VSrGX9k/edit#slide=id.p
Изначально чемпион собирался запрашивать у комитета продвижене на stage 3, но отказался от этого до презентации. Также выявлены новые проблемы. Консенсус не был достигнут.
Пропозал: Number.range (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.p
Обсуждения не вложились в отведённое время, консенсус не достигнут.
Пропозал: await operations (-> stage 1)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.g89f56b0333_1_40
Переходит на stage 1.
Пропозал: Array.prototype.unique() (-> stage 1)
Слайды: https://docs.google.com/presentation/d/116FDDK2klJoEL8s2Q7UXiDApC681N-Q9SwpC0toAzTU/edit#slide=id.g89f56b0333_1_150
Переходит на stage 1, но, кажется, имя метода придётся поменять из-за mootools.
Пропозал: Record and Tuple (stage 1 -> stage 2)
Слайды: https://button.dev/talks/record-and-tuple-tc39-july-2020.pdf
Переходит на stage 2! Выбраны ревьюеры для stage 3.
Пропозал: Symbols as WeakMap keys (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1AofgrikRJp4vTc_tqlchDk4DU9p4eqZdyxnlrFEYsvc/edit#slide=id.p
Обсуждения не вложились в отведённое время, а также было решено проработать мотивационную часть пропозала.
Пропозал: JSON.parse source text access (stage 1 -> stage 2)
Слайды: https://docs.google.com/presentation/d/1MGJhUvrWl4dE4otjUm8jXDrhaZLh9g7dnasnfK-VyZg/edit?usp=sharing
Stage 2 взят! Выбраны ревьюеры для stage 3.
Пропозал: Arbitrary Module Namespace Identifiers (stage 0 -> stage 1)
Было решено сделать нормативное изменение вместо пропозала на следующих встречах комитета.
Нормативное изменение: Host hooks for Job callbacks
Слайды: https://docs.google.com/presentation/d/19S97ZqhibJABqzeP5ZU6Flk6TVgWzXuvJWFbNTTfpWs/edit?usp=sharing
Продолжение обсуждений с первого дня. Консенсус достигнут.
Нормативное изменение: Function toString for builtins
Продолжение обсуждений с первого дня. Консенсус достигнут.
requestVideoFrameCallback — аналог requestAnimationFrame, но для видео. Пока что добавлен только в браузеры на основе Chromium 83+.
https://web.dev/requestvideoframecallback-rvfc/
С черновиком спецификации Web Platform Incubation Community Group можно ознакомиться вот тут: https://wicg.github.io/video-rvfc/
https://web.dev/requestvideoframecallback-rvfc/
С черновиком спецификации Web Platform Incubation Community Group можно ознакомиться вот тут: https://wicg.github.io/video-rvfc/
web.dev
Perform efficient per-video-frame operations on video with requestVideoFrameCallback()
The requestVideoFrameCallback() method allows web authors to register a callback that runs in the rendering steps when a new video frame is sent to the compositor.
В Chrome 85 (выйдет 25 августа) помимо прочего появятся две новых фичи под origin trial:
- WebHID API — позволяет использовать различные устройства управления вроде геймпадов через драйвера операционной системы
- потоковые Fetch запросы — возможность отправить запрос еще до того, как будет полностью доступно тело запроса, что полезно, например, для отправки данных, постепенно генерируемых на клиенте (аудио, видео, вводимые данные)
- WebHID API — позволяет использовать различные устройства управления вроде геймпадов через драйвера операционной системы
- потоковые Fetch запросы — возможность отправить запрос еще до того, как будет полностью доступно тело запроса, что полезно, например, для отправки данных, постепенно генерируемых на клиенте (аудио, видео, вводимые данные)