Вебня
4.65K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Вышел Safari Technology Preview 116

В нём добавились исправления Web Extensions, улучшения и исправления Web Inspector, улучшения Web Audio (включен AudioWorklet!) и MediaRecorder, исправления и улучшения CSS и другие правки и улучшения.
Приватные поля экземпляров классов и приватные статические поля классов (stage 3) включены по умолчанию в JSC

https://bugs.webkit.org/show_bug.cgi?id=219179
Вебня
Вышел Safari Technology Preview 116 В нём добавились исправления Web Extensions, улучшения и исправления Web Inspector, улучшения Web Audio (включен AudioWorklet!) и MediaRecorder, исправления и улучшения CSS и другие правки и улучшения.
Ну офигеть. Как всегда со списками изменений у них всё плохо. Только что проверил сам что там есть из JS фич, и оказалось что там также включили WeakRefs (которые уже влиты в спецификацию и попадут в ES2021)!
API isInputPending() от Facebook добавлен в Chrome 87

В апреле 2019 я уже писал об этом API, которое позволяет улучшить usabilty за счёт возможности обнаружения пользовательского ввода. Теперь он добавлен по умолчанию в Chrome 87. Другие браузеры пока не высказали свой интерес в поддержке этой фичи.
Статья: Постепенная миграция на Next.js

Разработчики Next.js написали статью о том, как можно мигрировать постепенно на этот фреймворк одним из трёх способов:
- конфигурация пути для открытия новых страниц с помощью Next.js
- проксирование на старые страницы через конфиг Next.js
- микрофронтенды с монорепой и субдоменами

https://nextjs.org/blog/incremental-adoption
Electron 11

17 ноября вышел Electron 11 (а потом и ещё 2 патча), в основе которого теперь Chromium 87 и Node.js 12.8.3. В новой версии, помимо всего прочего, имеется экспериментальная поддержаа Apple Silicon.
Неделя релизов продолжается. Вчера вышел TypeScript 4.1. Дениэл Розенвассер рассказал о всех изменениях в новой версии.

В TypeScript 4.1 были добавлены литеральные шаблонные типы (Template Literal Types). Благодаря им можно описывать типы, состоящие из нескольких строковых литеральных типов. Также они позволяют на уровне типов "извлекать" строковые литералы из других литералов. В рамках этой фичи были добавлены новые утилитарные типы для манипуляции строками — Uppercase, Lowercase, Capitalize , Uncapitalize.

С новой версии можно ремапить ключи в отображаемых типах (mapped types). Это можно использовать для фильтрации свойств объектных типов или создания новых объектных типов с ключами, использующими литеральные шаблонные типы.

Появилась полноценная поддержка рекурсивных условных типов. Полезно для описания типов рекурсивных структур. Разработчики советуют не злоупотреблять этой фичей, так как она может негативно повлиять на производительность проверки типов.

Добавлен флаг --noUncheckedIndexedAccess для более строгой проверки доступа к элементам массивов или свойствам объектов. Параметр paths теперь можно использовать без указания baseUrl. Теперь необязательно включать allowJs при использовании опции checkJs. Добавлена поддержка фабрик jsx и jsxs из React 17 (используются транспиляторами).

Есть несколько ломающих изменений. Условные спрэды создают опциональные свойства. Нужно обязательно указывать параметр функции resolve у промисов. Абстрактные члены больше не могут объявляться с async. Если в условном выражении falsy-позиция возвращает тип any`/`unknown, то any`/`unknown будет распространено на всё выражение.

#release #typescript

https://devblogs.microsoft.com/typescript/announcing-typescript-4-1
В описание “same-site” будет добавлена URL схема

Таким образом вебсайт теперь будет представлен как схема + регистрируемый домен, так что ссылки между HTTP и HTTPS будут представлены как cross-site запросы. Деврелы Chrome написали статью о том, как это повлияет на передачу cookie и как подготовиться.

https://web.dev/schemeful-samesite/
Имплементация for..of для 32-битной версии JavaScriptCore

Paulo Matos из Igalia написал статью, которая будет полезна тем, кто интересуется внутренностями JavaScript. Igalia занимается поддержкой JSC для 32-битных архитектур. При работе над имплементацией затрагиваются интерпретатор LLInt, baseline JIT-компилятор и JIT-компилятор DFG.

https://linki.tools/2020/11/a-tour-of-the-for-of-implementation-for-32bits-jsc.html
MediaRecorder API в Safari

В последних версиях Safari MediaRecorder API включен оп умолчанию (и будет включен также на iOS 14.3). В блоге WebKit рассказали о том, как можно его использовать.

https://webkit.org/blog/11353/mediarecorder-api/
Я (Рома Дворнов) решил попробовать вести телеграм канал, как пристанище мыслей, идей и того что случается в работе над разными проектами. Название говорит за себя, пока пишу много, как будет дальше — посмотрим. Сейчас в эфире история с написанием «поточного» парсера JSON, но будет и про другие аспекты фронтенда и около:
https://t.iss.one/gorshochekvarit
WebGL 2 в WebKit

В вышедшем месяц назад Safari Technology Preview 114 появилась поддержка WebGL 2. Это стало возможно благодаря коллаборации компаний Google и Apple. Google разрабатывает ANGLE — имплементацию OpenGL ES поверх других графических API. ANGLE уже использовался в Chromium и Firefox. В результате коллаборации двух компаний, ANGLE стал также поддерживать Metal бэкенд. Так WebKit (а также остальные браузеры под iOS, где используется WKWebView) получил поддержку WebGL 2, а другие браузеры (под macOS) — лучшую нативную поддержку Metal и новых чипов M1.
Результаты проекта Open Prioritization от Igalia

В июле была запущена инициатива Open Prioritization, которая по сути является сбором средств для разработки недостающих фич в браузерах. Brian Kardell подвёл итоги этого проекта, финалистом которого стала фича :focus-visible для WebKit.
#WebAssembly пропозал Numeric Values in WAT Data Segments отправляется на phase 2

Он позволяет в удобном виде писать числовые типы вместо текущего строкового представления. Влияет только на инструменты, которые работают с текстовым форматом.

https://github.com/WebAssembly/wat-numeric-values
В тритере написали, что в Chrome Canary выгрузили поддержку селекторов (точнее псевдоклассов) :is() и :where(). Сейчас они за флагом в Blink, и поддерживаются только в Safari. Так что месяца через три они станут доступны в большинстве браузеров.
Вчера Daniel Ehrenberg из Igalia, пожалуй, самый активный делегат #TC39, рассказал на проходящем сейчас HolyJS доклад о возможном будущем JavaScript модулей.

Доступны слайды: https://docs.google.com/presentation/d/1H52SGdUTnE1i4i8lcK7deGrQlV4iPcwmzZd2mhKwPTE/edit#slide=id.p
Новый JS пропозал Array find from right

Добавляет не только эргономики, но и может стать более оптимальным решением, чем текущие его альтернативы.

https://github.com/Kingwl/proposal-array-find-from-right
Сайт Internet Archive добавляет поддержку Flash через WebAssembly

Не смотря на то, что поддержка Flash заканчивается 31 декабря 2020 года, сайт Internet Archive будет поддерживать эту технологию и после этой даты. Поддержка сохранится за счёт Ruffle — эмулятора Flash плеера с помощью #WebAssembly.
В Chrome 88 появится поддержка отключения ускорения указателя

Это может понадобится, например, если Вы создаёте FPS игру. Chrome 88 сейчас находится в статусе beta, релиз намечен на 19 января 2021.

https://web.dev/disable-mouse-acceleration/
Оказывается у Миши Башурова тоже есть канал. Миша эксперт в вопросах типизации JavaScript и не только.
Помнится, чтобы элемент был ниже (а не прилипал к краю вьюпорта) когда вьюпорт скролится к нему, использовали разные хаки/трюки. В современных браузерах эта проблема решается в одну строку с помощью CSS свойства scroll-margin (статья на css-tricks). В Safari используется нестандартное scroll-snap-margin