В Chrome 83 появится Secure DNS (по сути DNS-over-HTTPS).
https://blog.chromium.org/2020/05/a-safer-and-more-private-browsing-DoH.html
https://blog.chromium.org/2020/05/a-safer-and-more-private-browsing-DoH.html
Chromium Blog
A safer and more private browsing experience with Secure DNS
With Chrome 83, we’ve started rolling out Secure DNS, a feature built on top of a secure DNS protocol called DNS-over-HTTPS, which is desi...
Вышел Chrome 83. В нём:
- Trusted Types
- улучшеный UI форм
- новый способ обнаружить утечки памяти — performance.measureMemory() (под origin trial)
- новые возможности Native File System API (origin trial)
- COOP и COEP
- обновленный Lighthouse 6.0
Другие статьи:
- что нового в DevTools
- Chrome 83 deprecations & removals
- V8 8.3
Видео обзор нововведений:
https://www.youtube.com/watch?v=RsMikJZhnSQ
- Trusted Types
- улучшеный UI форм
- новый способ обнаружить утечки памяти — performance.measureMemory() (под origin trial)
- новые возможности Native File System API (origin trial)
- COOP и COEP
- обновленный Lighthouse 6.0
Другие статьи:
- что нового в DevTools
- Chrome 83 deprecations & removals
- V8 8.3
Видео обзор нововведений:
https://www.youtube.com/watch?v=RsMikJZhnSQ
Chrome for Developers
New in Chrome 83 | Blog | Chrome for Developers
Chrome 83 is rolling out now! It adds support for trusted types, which help prevent cross site scripting vulnerabilities. Form elements get an important make-over. There's a new way to detect memory leaks. And the native file system API starts a new origin…
Тем временем в блоге V8 вышла новая статья — Understanding the ECMAScript spec часть 4.
Предыдущие статьи из серии:
- https://v8.dev/blog/understanding-ecmascript-part-1
- https://v8.dev/blog/understanding-ecmascript-part-2
- https://v8.dev/blog/understanding-ecmascript-part-3
Предыдущие статьи из серии:
- https://v8.dev/blog/understanding-ecmascript-part-1
- https://v8.dev/blog/understanding-ecmascript-part-2
- https://v8.dev/blog/understanding-ecmascript-part-3
v8.dev
Understanding the ECMAScript spec, part 4 · V8
Tutorial on reading the ECMAScript specification
В SpiderMonkey была добавлена поддержка ECMA402 пропозала Intl.DisplayNames (stage 3)
https://bugzilla.mozilla.org/show_bug.cgi?id=1557727#c19
https://bugzilla.mozilla.org/show_bug.cgi?id=1557727#c19
MDN Web Docs
Intl.DisplayNames - JavaScript | MDN
The Intl.DisplayNames object enables the consistent translation of language, region and script display names.
В браузере Edge теперь тоже есть origin trials. Программа origin trials позволяет обкатать на своём сайте новые / экспериментальные возможности веб платформы. Ранее эта программа была запущена для браузера Chrome.
Microsoft
Origin Trials - Microsoft Edge Developer
Microsoft Edge Developer Resources
Новые статьи в блоге web.dev:
- Wake Lock API case study — о том как API, не позволяющее компьютеру уходить в сон повысило продажи популярного сайта с кулинарными рецептами
- Detect inactive users with the Idle Detection API — об API, позволяющем определить бездействие пользователя
- Wake Lock API case study — о том как API, не позволяющее компьютеру уходить в сон повысило продажи популярного сайта с кулинарными рецептами
- Detect inactive users with the Idle Detection API — об API, позволяющем определить бездействие пользователя
WeakRefs (stage 3) вероятно будут включены по умолчанию в Firefox 79.
https://bugzilla.mozilla.org/show_bug.cgi?id=1639246#c2
https://bugzilla.mozilla.org/show_bug.cgi?id=1639246#c2
GitHub
GitHub - tc39/proposal-weakrefs: WeakRefs
WeakRefs. Contribute to tc39/proposal-weakrefs development by creating an account on GitHub.
Building FunctionTrace, a graphical Python profiler — интересная статья о том, как инженеры Mozilla интегрировали профилировку кода на Python в Firefox Profiler.
Mozilla Hacks – the Web developer blog
Building FunctionTrace, a graphical Python profiler
Firefox Profiler is a powerful web-based performance analysis interface featuring call trees, stack charts, flame graphs, and more. All data filtering, zooming, slicing, and transformation actions are preserved in shareable ...
Опубликовано ещё две статьи о метриках Web Vitals в цифрах:
- The Science Behind Web Vitals
- Defining the Core Web Vitals metrics thresholds
- The Science Behind Web Vitals
- Defining the Core Web Vitals metrics thresholds
LinkedIn рассказали как они автоматизируют тестирование доступности для веба и мобильных платформ.
https://engineering.linkedin.com/blog/2020/automated-accessibility-testing
https://engineering.linkedin.com/blog/2020/automated-accessibility-testing
Linkedin
LinkedIn’s approach to automated accessibility (A11y) testing
Деврел специалисты Google написали статью о возможностях шрифта system-ui, системного шрифта для macOS, а также о том, как они сломали его (это задело и некоторые другие вариативные шрифты, например Roboto) в графической библиотеке Skia (используется также в Firefox) и починили в Chromium 83.
web.dev
More variable font options for the macOS system-ui font in Chromium 83 | Articles | web.dev
Chromium 80 had a system-ui font weight regression on macOS. The reason it broke, and the new super powers post-resolution, are worth the wait in Chromium 83.
Буквально только что наступил дедлайн для добавления пропозалов для продвижения на следующий stage в повестку следующей #TC39 встречи, которая пройдет с 1 по 4 июня.
Среди таких оказались:
String.prototype.replaceAll (stage 3 -> stage 4)
Это способ заменить все вхождения без глобальной регулярки (флаг g) и экранирования специальных символов
Function implementation hiding (stage 2 -> stage 3)
Способ спрятать имплементацию функции (от Function.prototype.toString и Error.prototype.stack)
Intl.NumberFormat V3 (stage 1 -> stage 2)
Добавляет новые методы и опции при форматировании чисел
Ergonomic brand checks for private fields (stage 1 -> stage 2)
Способ обработать выброс исключения при обращении к несуществующим приватным свойствам класса
Intl.DurationFormat (stage 1 -> stage 2)
Локалезависимое форматирование продолжительности
Do expressions (stage 1 -> stage 2)
Синтаксис, позволяющий использовать statement в качестве expression
Module attributes (stage 1 -> stage 2)
Тут немного предыстории. Чуть более года назад (17 мая 2019) в стандарт HTML была добавлена поддержка JSON модулей, что позволяло импортировать JSON файлы напрямую из JavaScript как в Node.js, но спустя несколько месяцев (18 сентября 2019) стало понятно, что это небезопасно, т.к. злоумышленник может подменить MIME тип модуля и заставить загрузчик выполнить потенциально небезопасный код. Для решения этой проблемы было предложено добавить специальный атрибут, который бы указывал явно намерение обработать код модуля желаемого типа. Помимо данной задачи, атрибуты модуля могут быть использованы для последующих расширений взаимодействия со средой исполнения, а также пригодиться для сборщиков вроде webpack.
Новые пропозалы, которые собираются пытаться брать stage 1:
Intl Enumeration API
Новое ECMA 402 API, позволяющее определить поддерживаемые средой исполнения значения локалей для календарей, валют, систем счисления, временных зон и единиц измерения
Async Context
Продолжение идеи замороженного пропозала Zones. Автор Zones прекратил своё участие в #TC39 и сам свернул работу над ним. Новый автор взял всё то же самое и слегка адаптировал описание к текущим обстоятельствам
Deep Path Properties in Record Literals
Синтаксис для удобной работы с иммутабельными типами (stage 1) наподобие того, как это реализовано в библиотеке Immer.js
Intl.NumberFormat#usage
Способ более точно затюнить локализированные единицы измерения
from … import
Новый синтаксис импортов, решающий проблему отсутствия автодополнения в редакторах и IDE
Generic Comparison
Способ сравнить два массива по значениям. Как по мне, в описании пропозала присутствуют пробелы. Например, хорошо бы иметь возможность сравнивать как минимум и другие Iterable объекты. Кроме того, концепция three-way comparison кажется понравится не всем.
.item()
Новый метод в прототипах Array, String и TypedArray, который позволит брать элементы также с конца с отрицательным индексом
Subclassing support in built-in methods delenda est
Попытка исправить проблемы безопасности при наследовании типов от некоторых нативныхJS типов. Это важно также ввиду необходимости продвижения пропозала Realms. Очень сложный и очень важный пропозал. Когда (если) найду время, то отдельно распишу всё, что касается Realms и около
Symbols as WeakMap keys
Возможность использовать Symbol в качестве ключа в WeakMap
Среди таких оказались:
String.prototype.replaceAll (stage 3 -> stage 4)
Это способ заменить все вхождения без глобальной регулярки (флаг g) и экранирования специальных символов
Function implementation hiding (stage 2 -> stage 3)
Способ спрятать имплементацию функции (от Function.prototype.toString и Error.prototype.stack)
Intl.NumberFormat V3 (stage 1 -> stage 2)
Добавляет новые методы и опции при форматировании чисел
Ergonomic brand checks for private fields (stage 1 -> stage 2)
Способ обработать выброс исключения при обращении к несуществующим приватным свойствам класса
Intl.DurationFormat (stage 1 -> stage 2)
Локалезависимое форматирование продолжительности
Do expressions (stage 1 -> stage 2)
Синтаксис, позволяющий использовать statement в качестве expression
Module attributes (stage 1 -> stage 2)
Тут немного предыстории. Чуть более года назад (17 мая 2019) в стандарт HTML была добавлена поддержка JSON модулей, что позволяло импортировать JSON файлы напрямую из JavaScript как в Node.js, но спустя несколько месяцев (18 сентября 2019) стало понятно, что это небезопасно, т.к. злоумышленник может подменить MIME тип модуля и заставить загрузчик выполнить потенциально небезопасный код. Для решения этой проблемы было предложено добавить специальный атрибут, который бы указывал явно намерение обработать код модуля желаемого типа. Помимо данной задачи, атрибуты модуля могут быть использованы для последующих расширений взаимодействия со средой исполнения, а также пригодиться для сборщиков вроде webpack.
Новые пропозалы, которые собираются пытаться брать stage 1:
Intl Enumeration API
Новое ECMA 402 API, позволяющее определить поддерживаемые средой исполнения значения локалей для календарей, валют, систем счисления, временных зон и единиц измерения
Async Context
Продолжение идеи замороженного пропозала Zones. Автор Zones прекратил своё участие в #TC39 и сам свернул работу над ним. Новый автор взял всё то же самое и слегка адаптировал описание к текущим обстоятельствам
Deep Path Properties in Record Literals
Синтаксис для удобной работы с иммутабельными типами (stage 1) наподобие того, как это реализовано в библиотеке Immer.js
Intl.NumberFormat#usage
Способ более точно затюнить локализированные единицы измерения
from … import
Новый синтаксис импортов, решающий проблему отсутствия автодополнения в редакторах и IDE
Generic Comparison
Способ сравнить два массива по значениям. Как по мне, в описании пропозала присутствуют пробелы. Например, хорошо бы иметь возможность сравнивать как минимум и другие Iterable объекты. Кроме того, концепция three-way comparison кажется понравится не всем.
.item()
Новый метод в прототипах Array, String и TypedArray, который позволит брать элементы также с конца с отрицательным индексом
Subclassing support in built-in methods delenda est
Попытка исправить проблемы безопасности при наследовании типов от некоторых нативныхJS типов. Это важно также ввиду необходимости продвижения пропозала Realms. Очень сложный и очень важный пропозал. Когда (если) найду время, то отдельно распишу всё, что касается Realms и около
Symbols as WeakMap keys
Возможность использовать Symbol в качестве ключа в WeakMap
GitHub
agendas/2020/06.md at main · tc39/agendas
TC39 meeting agendas. Contribute to tc39/agendas development by creating an account on GitHub.
Вебня
Последний Firefox Nightly 78 получил поддержку трёх ранее неподдерживаемых им ES2018 фич в связи с обновлением используемой библиотеки для работы с регулярными выражениями: - RegExp.prototype.dotAll - RegExp Lookbehind Assertions - RegExp Unicode Property…
Поддержка недостающего ES2018 пропозала RegExp named capture groups также добавлена в Firefox.
https://bugzilla.mozilla.org/show_bug.cgi?id=1362154
Теперь Firefox 78 Nightly проходит все тесты таблицы совместимости для ES2016-ES2020 пропозалов.
Дисклеймер: таблица совместимости не покрывает все тесты из набора test262, поэтому 100% в столбцах таблицы не обязательно означает 100% совместимости на самом деле.
https://bugzilla.mozilla.org/show_bug.cgi?id=1362154
Теперь Firefox 78 Nightly проходит все тесты таблицы совместимости для ES2016-ES2020 пропозалов.
Дисклеймер: таблица совместимости не покрывает все тесты из набора test262, поэтому 100% в столбцах таблицы не обязательно означает 100% совместимости на самом деле.
bugzilla.mozilla.org
1362154 - Implement RegExp named groups
NEW (nobody) in Core - JavaScript Engine. Last updated 2020-05-07.
Оказывается у Chrome не только проблемы с памятью, а ещё и проблемы с безопасностью от этого.
А вообще статья интересна также и предложенными способами решения. Советую ознакомиться и с оригиналом.
https://www.opennet.ru/opennews/art.shtml?num=53019
А вообще статья интересна также и предложенными способами решения. Советую ознакомиться и с оригиналом.
https://www.opennet.ru/opennews/art.shtml?num=53019
www.opennet.ru
70% проблем с безопасностью в Chromium вызваны ошибками при работе с памятью
Разработчики проекта Chromium проанализировали 912 опасных и критических уязвимостей, выявленных в стабильных выпусках Chrome с 2015 года, и пришли к выводу, что 70% из них были вызваны небезопасной работой с памятью (ошибками при работе с указателями в коде…
Поучаствовал в Podlodka Podcast, рассказал о #WebAssembly. Кажется там было несколько неточностей ближе к концу (усталость, извиняйте), но в целом надеюсь, что получилось круто и должно быть интересно! :)
Telegram
Podlodka Podcast – анонсы и новости подкаста про IT
Анонсы новых выпусков, голосования и прочие замечательные инфоповоды от лучшего подкаста про IT.
Манифест выбора гостей и тем: podlodka.io/manifest
SoundCloud: https://soundcloud.com/podlodka
Чат: @podlodka
По всем вопросам: @tanyasanovna
Манифест выбора гостей и тем: podlodka.io/manifest
SoundCloud: https://soundcloud.com/podlodka
Чат: @podlodka
По всем вопросам: @tanyasanovna
Forwarded from Podlodka Podcast – анонсы и новости подкаста про IT (Anna Banana)
Podlodka #165 – WebAssembly
Если JS убьет все языки, а Wasm убьет JS, то что нам останется? Вместе с Сергеем Рубановым разобрались откуда родилась идея технологии, обсудили технические детали и что ждет Wasm в будущем. Кажется, WebAssembly может вдохнуть новую жизнь в браузеры, потому что уже сейчас начинает уверенно занимать нишу тяжелых вычислений на стороне клиента в браузере. А в списке компаний, уже сейчас использующих Wasm, можно встретить и Zoom, и Unreal, и EOS, и eBay!
Сайт: https://podlodka.io/165
Soundcloud: https://bit.ly/3d4it98
iTunes: https://apple.co/2vCBRcs
Я.Музыка: http://bit.ly/38yDJBz
Поддержи лучший подкаст про IT: www.patreon.com/podlodka
Если JS убьет все языки, а Wasm убьет JS, то что нам останется? Вместе с Сергеем Рубановым разобрались откуда родилась идея технологии, обсудили технические детали и что ждет Wasm в будущем. Кажется, WebAssembly может вдохнуть новую жизнь в браузеры, потому что уже сейчас начинает уверенно занимать нишу тяжелых вычислений на стороне клиента в браузере. А в списке компаний, уже сейчас использующих Wasm, можно встретить и Zoom, и Unreal, и EOS, и eBay!
Сайт: https://podlodka.io/165
Soundcloud: https://bit.ly/3d4it98
iTunes: https://apple.co/2vCBRcs
Я.Музыка: http://bit.ly/38yDJBz
Поддержи лучший подкаст про IT: www.patreon.com/podlodka
podlodka.io
Podlodka #165 – WebAssembly
Если JS убьет все языки, а Wasm убьет JS, то что нам останется? Вместе с Сергеем Рубановым разобрались откуда родилась идея технологии, обсудили технические детали и что ждет Wasm в будущем. Кажется, WebAssembly может вдохнуть новую жизнь в браузеры, потому…
Статья с анализом производительности небезызвестного Notion от Ивана Акулова, из которой можно почерпнуть что-нибудь полезное.
Forwarded from Иван Акулов про разработку
Ю-ху, вышла новая большая кейс-стади про перформанс Notion-а!
Разбираемся, как ускорить запуск Реакт-приложения на ~30%, просто подтюнив конфиги и отсрочив часть кода.
Внутри:
— как переход на СommonJS-модули может (внезапно) ускорить инициализацию бандла
— как находить и удалять неиспользуемые зависимости
— как откладывать аналитику до полного запуска приложения (и почему requestIdleCallback тут не подходит)
и ещё много чего.
→ https://3perf.com/blog/notion/
Разбираемся, как ускорить запуск Реакт-приложения на ~30%, просто подтюнив конфиги и отсрочив часть кода.
Внутри:
— как переход на СommonJS-модули может (внезапно) ускорить инициализацию бандла
— как находить и удалять неиспользуемые зависимости
— как откладывать аналитику до полного запуска приложения (и почему requestIdleCallback тут не подходит)
и ещё много чего.
→ https://3perf.com/blog/notion/
Вышла Node.js 12.17.0. Основные изменения:
- флаг
- экспериментальная поддержка AsyncLocalStorage API
- в REPL теперь доступно превью автодополнения и некоторые операции для работы с текстом
- EventEmmiter теперь может отлавливать исключения через специальный символ
- необработтаные исключения теперь можно мониторить без переопределения стандартного поведения с выходом из процесса
- новый метод и мелкие улучшения встроенного модуля fs
- конструктор Console теперь поддерживает настраиваемые отступы для групп
- опция для настройки максимального количества видимых символов при выводе строк в консоль
- N-API 6
- отчеты диагностики перешли в статус стабильной фичи
- стандартное значение таймаута заголовков было увеличено до 60 секунд, чтобы соответствовать значениям таймаутов популярных AWS ELB и прочих сервисов
Полный список изменений:
https://nodejs.org/en/blog/release/v12.17.0/#increase-of-the-default-server-headers-timeout
- флаг
--experimental-modules был удалён и теперь ECMAScript модули можно использовать без него. ESM всё ещё остаются экспериментальной фичей. Ожидается, что её стабилизируют в конце октября с выходом Node 14 LTS.- экспериментальная поддержка AsyncLocalStorage API
- в REPL теперь доступно превью автодополнения и некоторые операции для работы с текстом
- EventEmmiter теперь может отлавливать исключения через специальный символ
EventEmitter.errorMonitor- необработтаные исключения теперь можно мониторить без переопределения стандартного поведения с выходом из процесса
- новый метод и мелкие улучшения встроенного модуля fs
- конструктор Console теперь поддерживает настраиваемые отступы для групп
- опция для настройки максимального количества видимых символов при выводе строк в консоль
- N-API 6
- отчеты диагностики перешли в статус стабильной фичи
- стандартное значение таймаута заголовков было увеличено до 60 секунд, чтобы соответствовать значениям таймаутов популярных AWS ELB и прочих сервисов
Полный список изменений:
https://nodejs.org/en/blog/release/v12.17.0/#increase-of-the-default-server-headers-timeout
Новая статья в блоге JavaScript движка V8 о mark’n’sweep сборщике мусора Oilpan для управления памятью в С++. Он используется в основном для сборки DOM объектов в Blink (ренденр движок Chromium), но скоро также будет интегрирован с V8. Oilpan умеет работать инкрементально и конкурентно. Его внедрение в Chrome 78 позволило ускорить сборку мусора на 25-50%. Ожидается, что некоторые ближайшие изменения позволят улучшить эти показатели ещё сильнее.
https://v8.dev/blog/high-performance-cpp-gc
https://v8.dev/blog/high-performance-cpp-gc
v8.dev
High-performance garbage collection for C++ · V8
This post describes the Oilpan C++ garbage collector, its usage in Blink, and how it optimizes sweeping, i.e., reclamation of unreachable memory.
CSS спецификация Box Sizing Module Level 4 перешла в статус First Public Working Draft. В сравнении с Level 3, в новой версии добавлены новые ключевые слова
stretch, fit-content, contain для свойств размеров, а также добавлены свойства aspect-ratio и contain-intristic-size.www.w3.org
First Public Working Draft: CSS Box Sizing Module Level 4
The CSS Working Group has published a First Public Working Draft of CSS Box Sizing Module Level 4. This module extends the CSS sizing properties with keywords that represent content-based “intrinsic” sizes and context-based “extrinsic” sizes, allowing CSS…