Вебня
4.69K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Наверное все уже в курсе, что Facebook недавно купили сервис Giphy, который интегрирован в очень многие вебсайты, мобильные и десктопные приложения. На The Verge вышла статья о том, какие продукты используют Giphy, и как это скажется на приватности пользователей.

https://www.theverge.com/2020/5/16/21260104/facebook-giphy-acquisition-twitter-slack-snapchat-apple-imessage-signal-facebook-tinder

А помните те времена, когда для трекинга использовали прозрачное изображение 1 на 1 пиксель, вместо анимированных gif на несколько мегабайт?
В репозитории дизайн документов #WebAssembly обсуждается новый пропозал — Await. Предполагается, что он поможет упростить работу с асинхронными задачами на хосте, а также уменьшит накладные расходы (например, Asyncify из Emscripten увеличивает итоговый размер кода на 50%, а также замедляет его также примерно на 50%).

https://github.com/WebAssembly/design/issues/1345
Вышел Lighthouse 6.0. В нём добавились новые метрики (Web Vitals), обновление способов подсчета очков производительности, новые инструменты аудита (неиспользуемый JavaScript, доступность и т.д.). Появился Lighthouse CI — CLI для Node.js для использования в CI.
В браузере Edge теперь тоже есть origin trials. Программа origin trials позволяет обкатать на своём сайте новые / экспериментальные возможности веб платформы. Ранее эта программа была запущена для браузера Chrome.
Новые статьи в блоге web.dev:
- Wake Lock API case study — о том как API, не позволяющее компьютеру уходить в сон повысило продажи популярного сайта с кулинарными рецептами
- Detect inactive users with the Idle Detection API — об API, позволяющем определить бездействие пользователя
Опубликовано ещё две статьи о метриках Web Vitals в цифрах:
- The Science Behind Web Vitals
- Defining the Core Web Vitals metrics thresholds
LinkedIn рассказали как они автоматизируют тестирование доступности для веба и мобильных платформ.

https://engineering.linkedin.com/blog/2020/automated-accessibility-testing
Деврел специалисты Google написали статью о возможностях шрифта system-ui, системного шрифта для macOS, а также о том, как они сломали его (это задело и некоторые другие вариативные шрифты, например Roboto) в графической библиотеке Skia (используется также в Firefox) и починили в 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
Вебня
Последний 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% совместимости на самом деле.
Поучаствовал в Podlodka Podcast, рассказал о #WebAssembly. Кажется там было несколько неточностей ближе к концу (усталость, извиняйте), но в целом надеюсь, что получилось круто и должно быть интересно! :)
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
Статья с анализом производительности небезызвестного Notion от Ивана Акулова, из которой можно почерпнуть что-нибудь полезное.