Официальный отчет о 82й встрече TC39
Опубликован отчет последней встречи TC39, которая прошла 19-21 апреля. Сергей уже делал отчет по тому что происходило в каждый из дней. В отчете же от TC39 структура идет от самих пропосалов и их стадии, плюс больше деталей и ссылок.
Опубликован отчет последней встречи TC39, которая прошла 19-21 апреля. Сергей уже делал отчет по тому что происходило в каждый из дней. В отчете же от TC39 структура идет от самих пропосалов и их стадии, плюс больше деталей и ссылок.
SpiderMonkey JavaScript/WebAssembly Engine
TC39 meeting, April 19-21 2021
In this TC39 meeting, the updates to JavaScript Classes around private state have moved to stage 4. Other proposals of note this meeting were proposals related to ArrayBuffers, notably resizable ArrayBuffers and a new proposal, introducing read-only ArrayBuffers…
Официальный сайт #TC39 теперь доступен на нескольких языках
Добавлены русскоязычная, немецкая и китайская версии сайта. Также в скором времени будет добавлена японская версия.
Некоторые ссылки («Предстоящая повестка» и «Протокол последнего собрания») нуждаются в обновлении, что может стать полезным вкладом с Вашей стороны. Также принимаются предложения по улучшению перевода. Репозиторий сайта: https://github.com/tc39/tc39.github.io
Добавлены русскоязычная, немецкая и китайская версии сайта. Также в скором времени будет добавлена японская версия.
Некоторые ссылки («Предстоящая повестка» и «Протокол последнего собрания») нуждаются в обновлении, что может стать полезным вкладом с Вашей стороны. Также принимаются предложения по улучшению перевода. Репозиторий сайта: https://github.com/tc39/tc39.github.io
Ускорение стек трейсов в Chrome DevTools
Бенедикт Мoйрер рассказал про ускорение стек трейсов в DevTools в Chrome 90. Ускорение в среднем десятикратное, так что открытые DevTools стали значительно меньше тормозить выполнение JavaScript на странице. Это была длинная история, которая включала в себя в том числе изменения в V8. Например, выпилили displayName у функций, так как на поиск (lookup) этого свойства у функции было затратным, а само свойство появилось до ES2015 как хак, так как Function#name тогда было неизменным (immutable) – в ES2015 это исправили и в displayName отпала необходимость (его использовали для нормальных имен функций в стек трейсах). В целом, выходит, что на самом деле ускорили не только DevTools, но и V8.
Бенедикт Мoйрер рассказал про ускорение стек трейсов в DevTools в Chrome 90. Ускорение в среднем десятикратное, так что открытые DevTools стали значительно меньше тормозить выполнение JavaScript на странице. Это была длинная история, которая включала в себя в том числе изменения в V8. Например, выпилили displayName у функций, так как на поиск (lookup) этого свойства у функции было затратным, а само свойство появилось до ES2015 как хак, так как Function#name тогда было неизменным (immutable) – в ES2015 это исправили и в displayName отпала необходимость (его использовали для нормальных имен функций в стек трейсах). В целом, выходит, что на самом деле ускорили не только DevTools, но и V8.
Действительно ли WebAssembly настолько быстрый?
Таким вопросом задался Surma в статье Is WebAssembly magic performance pixie dust? Короткий ответ неизменен – зависит от многих факторов. Нужно уметь готовить: если сделать что-то не так, то WebAssembly может быть гораздо медленей JavaScript. В статье приводятся такие примеры, сравнивнение разных методов компиляции в WASM и немного опыта по использованию AssemblyScript.
Таким вопросом задался Surma в статье Is WebAssembly magic performance pixie dust? Короткий ответ неизменен – зависит от многих факторов. Нужно уметь готовить: если сделать что-то не так, то WebAssembly может быть гораздо медленей JavaScript. В статье приводятся такие примеры, сравнивнение разных методов компиляции в WASM и немного опыта по использованию AssemblyScript.
surma.dev
Is WebAssembly magic performance pixie dust? — surma.dev
Add WebAssembly, get performance. Is that how it really works?
Shadow DOM + Event = ?
Когда говорят про Shadow DOM, обычно вспоминают только про изоляцию DOM элементов и стилей. Но Shadow DOM также добавляет новые правила и особенности в работе событий, а именно в том как они распространяются по DOM дереву. Тема непростая, и Pierre-Marie Dartus взялся написать по ней полноценный гайд. И у него хорошо получилось, всё по делу, а главная фишка гайда – интерактивные визуализации, с которыми проще разобраться в том, что происходит с событием по шагам и с разными свойствами.
Когда говорят про Shadow DOM, обычно вспоминают только про изоляцию DOM элементов и стилей. Но Shadow DOM также добавляет новые правила и особенности в работе событий, а именно в том как они распространяются по DOM дереву. Тема непростая, и Pierre-Marie Dartus взялся написать по ней полноценный гайд. И у него хорошо получилось, всё по делу, а главная фишка гайда – интерактивные визуализации, с которыми проще разобраться в том, что происходит с событием по шагам и с разными свойствами.
Learn CSS — An evergreen CSS course
https://web.dev/learn/css/
На сайте web.dev появился курс для изучения CSS. В нем основные фундаментальные темы CSS вынесены в отдельные секции, что удобно для изучения конкретной части, а не все сразу. Как можно понять из определения, обещают поддерживать в актуальном состоянии.
Кстати, на web.dev есть множество курсов по другим темам
https://web.dev/learn/css/
На сайте web.dev появился курс для изучения CSS. В нем основные фундаментальные темы CSS вынесены в отдельные секции, что удобно для изучения конкретной части, а не все сразу. Как можно понять из определения, обещают поддерживать в актуальном состоянии.
Кстати, на web.dev есть множество курсов по другим темам
С начала мая накопилось много новостей, которые я ещё обязательно опубликую, а пока хочу напомнить, что сегодня начинается очередное пленарное заседание #TC39, которое продлится два дня. Ознакомиться с повесткой можно здесь: https://github.com/tc39/agendas/blob/master/2021/05.md
GitHub
agendas/2021/05.md at main · tc39/agendas
TC39 meeting agendas. Contribute to tc39/agendas development by creating an account on GitHub.
⚡️ Stage 3 пропозал RegExp Match Indices отправляется на stage 4 и попадёт в ES2022
GitHub
GitHub - tc39/proposal-regexp-match-indices: ECMAScript RegExp Match Indices
ECMAScript RegExp Match Indices. Contribute to tc39/proposal-regexp-match-indices development by creating an account on GitHub.
⚡️ Stage 3 пропозал Top-level await отправляется на stage 4 и попадёт в ES2022
GitHub
GitHub - tc39/proposal-top-level-await: top-level `await` proposal for ECMAScript (stage 4)
top-level `await` proposal for ECMAScript (stage 4) - tc39/proposal-top-level-await
⚡️ Stage 2 пропозал Accessible Object.prototype.hasOwnProperty() переходит на stage 3
GitHub
GitHub - tc39/proposal-accessible-object-hasownproperty: Object.hasOwn() proposal for ECMAScript
Object.hasOwn() proposal for ECMAScript. Contribute to tc39/proposal-accessible-object-hasownproperty development by creating an account on GitHub.
⚡️ ECMA402 пропозал Extend TimeZoneName Option Proposal также переходит со stage 2 на stage 3
GitHub
GitHub - tc39/proposal-intl-extend-timezonename: Extend TimeZoneName Option Proposal
Extend TimeZoneName Option Proposal. Contribute to tc39/proposal-intl-extend-timezonename development by creating an account on GitHub.
Разработчики Flow о будущем проекта
Flow приоритезирует потребности Facebook (ещё больше? 🙃) перед остальным сообществом, собирается добавлять (видимо, несовместимий с JavaScript и TypeScript) новый синтаксис, а также будет (ещё меньше?) уделять внимания внешним контрибьюшнам.
https://medium.com/flow-type/clarity-on-flows-direction-and-open-source-engagement-e721a4eb4d8b
Flow приоритезирует потребности Facebook (ещё больше? 🙃) перед остальным сообществом, собирается добавлять (видимо, несовместимий с JavaScript и TypeScript) новый синтаксис, а также будет (ещё меньше?) уделять внимания внешним контрибьюшнам.
https://medium.com/flow-type/clarity-on-flows-direction-and-open-source-engagement-e721a4eb4d8b
Medium
Clarity on Flow’s Direction and Open Source Engagement
Summary: Flow prioritizes the Facebook codebase’s need for more type safety and fast performance on very large codebases. Flow’s…
⚡️ Stage 1 пропозал RegExp Unicode set notation + properties of strings отправляется на stage 2
------------------
На этом 83я встреча #TC39 заканчивается. Следующая встреча состоится 13-16 июля. Не уверен, что смогу там присутствовать, потому что в моей таймзоне они будут проходить с 04:00 до 09:00 :(
------------------
На этом 83я встреча #TC39 заканчивается. Следующая встреча состоится 13-16 июля. Не уверен, что смогу там присутствовать, потому что в моей таймзоне они будут проходить с 04:00 до 09:00 :(
GitHub
GitHub - tc39/proposal-regexp-v-flag: UTS18 set notation in regular expressions
UTS18 set notation in regular expressions. Contribute to tc39/proposal-regexp-v-flag development by creating an account on GitHub.
Вышел Safari Technology Preview 125
В нём улучшения Web Inspector, много исправлений и улучшений CSS, веб анимации, продолжение работы над #WebAssembly Typed Function References, улучшения и исправления разных Web API, рендеринга и WebRTC.
В нём улучшения Web Inspector, много исправлений и улучшений CSS, веб анимации, продолжение работы над #WebAssembly Typed Function References, улучшения и исправления разных Web API, рендеринга и WebRTC.
WebKit
Release Notes for Safari Technology Preview 125
Safari Technology Preview Release 125 is now available for download for macOS Big Sur and macOS Catalina.
Вышел Chrome 91
В нём много нового: улучшения File System Access API, возможность копирования файлов из буфера обмена, возможность добавления подсказок для менеджера паролей, Web Transport под origin trial, #WebAssembly SIMD, API для обнаружения поверхностей в WebXR под origin trial, WebSockets через HTTP/2, ES модули в сервис воркерах.
https://developer.chrome.com/blog/new-in-chrome-91/
Также:
- блог разработчиков
- новое в DevTools
- новое в V8
В нём много нового: улучшения File System Access API, возможность копирования файлов из буфера обмена, возможность добавления подсказок для менеджера паролей, Web Transport под origin trial, #WebAssembly SIMD, API для обнаружения поверхностей в WebXR под origin trial, WebSockets через HTTP/2, ES модули в сервис воркерах.
https://developer.chrome.com/blog/new-in-chrome-91/
Также:
- блог разработчиков
- новое в DevTools
- новое в V8
Chromium Blog
Chrome 91: Handwriting Recognition, WebXR Plane Detection and More
Unless otherwise noted, changes described below apply to the newest Chrome beta channel release for Android, Chrome OS, Linux, macOS, and W...
📢 Ищутся волонтёры для помощи с переводом русскоязычной версии сайта #TC39, а конкретно stage 3 пропозалов (от JSON Modules и ниже). Там необходимо перевести заголовки, описания и названия месяцев. Вот файл, в котором находятся все необходимые строки. Можете сразу добавить меня (https://github.com/chicoxyzzy) в ревьюеры или заменшнить в Вашем PR. На всякий случай, — у нас есть code of conduct.
Апдейт: PR уже есть, помогайте улучшать перевод тут https://github.com/tc39/tc39.github.io/pull/254
Апдейт: PR уже есть, помогайте улучшать перевод тут https://github.com/tc39/tc39.github.io/pull/254
Sparkplug — новый неоптимизирующий компилятор JavaScript
Оказывается V8 9.1 был добавлен новый неоптимизирующий компилятор Sparkplug. Благодаря отсутствию оптимизации, процесс компиляции происходит гораздо быстрее. По сути, этот компилятор переводит байткод в соответствующие им инструкции. Такой подход позволяет быстрее начать выполнять код на этапе загрузки, а также переключаться на оптимизированный код и обратно. Подход дает выигрыш, так как на старте многие оптимизации все равно не возможны из-за отсутствия фидбека по исполнению кода. На данный момент получилось достичь 5-15% прироста производительности, но пока реализованы не все идеи связанные с новым компилятором. Больше технических деталей и графиков в статье блога V8: https://v8.dev/blog/sparkplug
Оказывается V8 9.1 был добавлен новый неоптимизирующий компилятор Sparkplug. Благодаря отсутствию оптимизации, процесс компиляции происходит гораздо быстрее. По сути, этот компилятор переводит байткод в соответствующие им инструкции. Такой подход позволяет быстрее начать выполнять код на этапе загрузки, а также переключаться на оптимизированный код и обратно. Подход дает выигрыш, так как на старте многие оптимизации все равно не возможны из-за отсутствия фидбека по исполнению кода. На данный момент получилось достичь 5-15% прироста производительности, но пока реализованы не все идеи связанные с новым компилятором. Больше технических деталей и графиков в статье блога V8: https://v8.dev/blog/sparkplug
v8.dev
Sparkplug — a non-optimizing JavaScript compiler · V8
In V8 v9.1 we’re improving V8 performance by 5–15% with Sparkplug: a new, non-optimizing JavaScript compiler.
Вышел Firefox 89
https://www.mozilla.org/en-US/firefox/89.0/releasenotes/
В этом релизе обновлен внешний вид браузера, улучшен UX, в частности, стало меньше алертов и сообщений. Для пользователей macOS несколько исправлений и улучшений, например, добавили эластичный оверскрол (как в других браузерах и приложениях). В режиме инкогнито (приватный режим) теперь используется Total Cookie Protection, что не позволяет сайтам использовать куки других сайтов.
- Включен
- На 64-битных системах теперь можно создавать
- Добавлен интерфейс PerformanceEventTiming из Event Timing API
- Контентом
- В CSS добавлено:
- Медиа фича
- Дескрипторы
- Функция
- В контентных скриптах (те что встраиваются в страницу) расширений теперь можно использовать динамический
Все изменения для разработчиков
Статья в Mozilla Hacks
https://www.mozilla.org/en-US/firefox/89.0/releasenotes/
В этом релизе обновлен внешний вид браузера, улучшен UX, в частности, стало меньше алертов и сообщений. Для пользователей macOS несколько исправлений и улучшений, например, добавили эластичный оверскрол (как в других браузерах и приложениях). В режиме инкогнито (приватный режим) теперь используется Total Cookie Protection, что не позволяет сайтам использовать куки других сайтов.
- Включен
top level await- На 64-битных системах теперь можно создавать
ArrayBuffer до 8GB (было 2GB)- Добавлен интерфейс PerformanceEventTiming из Event Timing API
- Контентом
<input> и <textarea> теперь можно манипулировать с помощью document.execCommand() как в других браузерах и с сохранением истории изменений- В CSS добавлено:
- Медиа фича
forced-colors- Дескрипторы
ascent-override, descent-override и line-gap-override для @font-face- Функция
type() для image-set()- В контентных скриптах (те что встраиваются в страницу) расширений теперь можно использовать динамический
import()Все изменения для разработчиков
Статья в Mozilla Hacks
Mozilla
Firefox 89.0, See All New Features, Updates and Fixes
Некоторые интереные новости W3C за май
Спецификация Web Audio API получила статус Proposed Recommendation и возможно получит статус W3C Recommendation уже 3 июня.
Черновик спецификации Web Content Accessibility Guidelines (WCAG) 2.2 и готовится получит статус Proposed Recommendation, что может произойти 4 июня.
Спецификации WebGPU и WebGPU Shading Language опубликованы в статусе First Public Working Draft.
Спецификация Page Visibility Level 2 опубликована в статусе W3C Candidate Recommendation.
Спецификация Geolocation API опубликована в статусе First Public Working Draft.
Спецификация Web Audio API получила статус Proposed Recommendation и возможно получит статус W3C Recommendation уже 3 июня.
Черновик спецификации Web Content Accessibility Guidelines (WCAG) 2.2 и готовится получит статус Proposed Recommendation, что может произойти 4 июня.
Спецификации WebGPU и WebGPU Shading Language опубликованы в статусе First Public Working Draft.
Спецификация Page Visibility Level 2 опубликована в статусе W3C Candidate Recommendation.
Спецификация Geolocation API опубликована в статусе First Public Working Draft.