Вебня
4.7K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Forwarded from Wild Wild Web
🎉 Релиз TypeScript 4.4 🎉

Вы можете подумать, а чего я тут фейерверки устраиваю? А потому что они таки улучшили то, с чем я уже довольно долго воюю. Надеюсь, они и дальше будут улучшать эти моменты. А какие именно, давайте обсудим в комментариях позже 🙂

Вчера команда TypeScript выпустила новую версию компилятора, в которой есть несколько интересных мест. Давайте подчеркнём самые интересные, по моему мнению:

- Улучшили Control Flow Analysis. Теперь, так называемые type guards, можно выносить в отдельные переменные и TypeScript не потеряет эту информацию по пути. Например, вы хотите проверить что что-то строка const isString = typeof someParam === 'string' и дальше вы можете писать просто if(isString) {}, TypeScript такое скушает (раньше это было ошибкой компиляции). И таких примеров побольше, можете почитать у них в посте.

- Все catch блоки по умолчанию приводятся к unknown типу (за флагом strict). Unknown тип это более безопасный вариант неизвестного типа, по сравнению с any. Я об этих типах, как раз, недавно писал. С этим релизом, TypeScript будет ошибки в catch блоках неявно приводить к unknown. И вам, собственно, нужно будет проверить что ошибка это та ошибка, которую вы ожидаете или нет.

- С этим релизом добавилась возможность иметь "inlay hints". Я с таким часто встречаюсь при разработке на Rust и, если честно, меня это немного бесит. Но, знаю людей, которым это очень даже заходит. Речь идёт о том, что в IDE у вас будут добавляться имена параметров к вашим аргументам или выведенный тип возврата функции будет добавлен как "inlay hint" возле вашей функции и так далее. Насколько я знаю, такое есть давно в Intelliji и им активно пользуются. А в этом релизе они добавили это на уровне компилятора.

Все остальные моменты, по моему мнению, не такие уж и большие, но, безусловно, интересные и для кого-то могут оказаться нововведением "вовремя". Вы можете почитать более подробно об изменениях в этой версии в их блог посте.
👍1
React Native 0.65 и Hermes 0.8.1

17 августа вышел React Native 0.65, в котором JavaScript движок Hermes обновлён до версии 0.8.1. Новая версия движка поддерживаем процессоры Apple M1, добавляет улучшенную компрессию SMI и новый конкурентный сборщик мусора Hades, а также добавляет поддержку ECMAScript Internationalization API прямо в движок, что позволяет избавиться от локальных полифиллов.
Новое в Chrome 94 Beta

Главные изменения:
- WebCodecs
- WebGPU (под origin trail), о котором также появилась статья на web.dev; планируется, что в Chrome 97 (релиз намечен на 4 января 2022) новый API будет включен по умолчанию
- scheduler.postTask() — метод для управления приоритезацией (с режимами user-blocking, user-visible и background)

Остальные изменения можно посмотреть вот тут. Релиз ожидается 21 сентября.
⚡️ Первая новость с 85й встречи #TC39 (идёт прямо сейчас): метод .at() отправляется на stage 4
⚡️ Object.hasOwn() также отправляется на stage 4!
⚡️ Class static initiallization blocks тоже отправляется на stage 4!
⚡️ Пропозал Change Array by copy переходит на stage 2
⚡️ Pipeline operator отправляется на stage 2! 🎉
⚡️ String is USV String берёт stage 1
⚡️ Array.asyncFrom также берёт stage 1
⚡️ BigInt Math берёт stage 1
⚡️ Get Intrinsic переходит на stage 1
⚡️ Fixed shape objects переходит на stage 1
Сегодня вечером должен состояться релиз Safari 15 (о новых фичах можно почитать тут), а пока я напишу в следующих сообщениях о релизах браузеров, которые состоялись за время моего отсутствия.
Safari Technology Preview 131 (1 сентября)

Релиз включает улучшения Web Inspector, минорные исправления и улучшения CSS, начальную поддержку для COEP/COOP (добавление которых должно помочь в будущем включить поддержку SharedArrayBuffer и потоков в #WebAssembly!), исправления различных Web API, ускорение и улучшения обработки строки и регулярок, улучшения WebRTC, исправления медиа.

https://webkit.org/blog/11962/release-notes-for-safari-technology-preview-131/
Samsung Internet 16.0 Beta (1 сентября)

В этой версии улучшен UX поиска и добавлены новые возможности сохранения приватности пользователей. Новая версия основывается на Chromium 92, а это также означает, что добавилась поддержка position: sticky.

https://medium.com/samsung-internet-dev/introducing-the-samsung-internet-16-0-beta-9ec45f1412c2
Chrome 93 (31 августа)

- 27 исправлений безопасности
- теперь можно подтвердить OTP-код на десктопе с устройства на Android
- обработка URL в PWA
- поддержка работы с несколькими экранами и окнами (под флагом)

Также:
- изменения для разработчиков
Firefox 92 (7 сентября)

https://hacks.mozilla.org/2021/09/time-for-a-review-of-firefox-92/

- WebRender активирован на всех платформах
- Реализована поддержка корректного воспроизведения видео в Full RGB
- Автоматическое улучшение до HTTPS через заголовок Alt-Svc
- различные улучшения CSS
- Поддержка Object.hasOwn (ES2022)
- Поддержка Imperative Slotting API

Также:
- Исправления уязвимостей
- Изменения для разработчиков
- Изменения для конечных пользователей
Обновления спецификаций W3C

Черновик Secure Payment Confirmation опубликован в статусе First Working Public Draft.

В статусе First Working Public Draft опубликованы спецификации WebXR (виртуальная и дополненная реальности в Web):
- WebXR Depth Sensing Module
- WebXR Hit Test Module
- WebXR DOM Overlays Module
- WebXR Lighting Estimation API Level 1
Кроме того, опубликован документ XR Accessibility User Requirements (XAUR), описывающий требования к WebXR по доступности.

CSS Nesting Module также опубликован в статусе First Working Public Draft. Роман Дворнов писал подробнее о том, что это скоро должно произойти вот тут.

И еще один First Public Working Draft — Incremental Font Transfer. Спецификация описывает способ итерационной подгрузки шрифтов, при которой клиент может сначала получить необходимые для отображения части файлов со шрифтами.
Вебня pinned «Есть ли у Ваших проектов поддержка браузера Internet Explorer?»