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

Из нового:
- Остаточные элементы теперь могут находиться в любом месте кортежей, а не только в середине
- Сохранение псевдонимов типов в случаях, когда они раньше раскладывались на базовые
- Шаблонные выражения теперь имеют шаблонные литеральные типы
- Более строгие проверки для оператора in
- новый флаг компилятора --noPropertyAccessFromIndexSignature
- модификатор abstract для сигнатур конструкторов
- флаг компилятора --explainFiles
- улучшения взаимодействия опциональных свойств и строковых сигнатур ключа объекта

Также представлены несколько ломающих изменений, которые могут затронуть некоторых пользователей.

https://devblogs.microsoft.com/typescript/announcing-typescript-4-2-beta/
В V8 появился дополнительный движок для обработки некоторых сложных случаев регулярных выражений

Новый движок пока что является экспериментальным и включается отдельным флагом. Он появился в дополнение к старому движку Irregexp (на который в прошлом году также перешёл Firefox).
Вышел отчёт State of JS 2020

Версия на анлийском: https://2020.stateofjs.com/en-US/

Версия на русском: https://2020.stateofjs.com/ru-RU/
Версия на украинском (переведена частично): https://2020.stateofjs.com/ua-UA/
Микрофронтенды на Blazor

Wael Kdouh из Microsoft делится советами о том, как построить микрофронтенд архитектуру, используя Blazor и #WebAssembly.

https://medium.com/@waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f325
7 способов протестировать доступность с помощью DevTools Chromium

Christian Heilmann написал статью об инструментах DevTools в таких браузерах как Edge и Chrome, которые позволяют определить проблемы доступности на сайте.

https://christianheilmann.com/2021/01/11/seven-ways-to-test-for-accessibility-of-your-web-site-with-browser-developer-tools/
Создание игры с дополненной реальностью

Ada Rose Cannon из команды Samsung Internet о создании игры с использованием WebXR DOM Overlay API и WebXR Hit Test API.

https://medium.com/samsung-internet-dev/making-an-ar-game-with-aframe-529e03ae90cb
PWA в 2021 году

Maximiliano Firtman написал статью о том, что изменилось в мире PWA к 2021 году, совместимости, новых возможностях, убранных возможностях и о том, чего ждать в этом году.

https://firt.dev/pwa-2021/
Обновился веб-сайт Ecma International

Ассоциация Ecma International получила обновлённый веб-сайт. Казалось бы новость не очень важная, но вы просто вспомните какой сайт у них был раньше — табличная верстка, адрес и пункты меню картинками gif.
Список TC39 пропозалов, которые запрашивают продвежения на следующий стейдж

25-28 января пройдёт первое в этом году заседание #TC39, для которого уже финализирован список пропозалов, которые могут попасть на следующий стейдж (дедлайн был в пятницу 15 января). Список очень большой, поэтому вероятно, что не все предложения из него комитет успеет обсудить.

Stage 3 -> Stage 4
- Intl.DateTimeFormat.prototype.formatRange

Stage 2 -> Stage 3
- JSON modules
- Array.isTemplateObject
- Class static Initialization Blocks
- Ergonomic brand checks for private fields

Stage 1 -> Stage 2
- Intl Locale Info
- Intl DisplayNames v2
- Dynamic code brand checks
- JS Module Blocks
- do expressions

Новые пропозалы (-> Stage 1)
- Array find from last
- Extend TimeZoneName Option Proposal
- eraDisplay option for Intl.DateTimeFormat
- Intl LocaleMatcher
- async do expressions
- index from end syntax
- class brand check
- defer module import eval
Вебня
Интересный факт. Количество страниц в печатных версиях разных редакций спецификации ECMAScript: ES1 (1997) — 110 ES2 (1998) — 117 ES3 (1999) — 188 ES5 (2009) — 252 ES5.1 (2011) — 258 ES2015 (2015) — 566 ES2016 (2016) — 586 ES2017 (2017) — 885 ES2018 (2018)…
Количество страниц в печатных версиях разных редакций спецификации ECMAScript:

ES1 (1997) — 110
ES2 (1998) — 117
ES3 (1999) — 188
ES5 (2009) — 252
ES5.1 (2011) — 258
ES2015 (2015) — 566
ES2016 (2016) — 586
ES2017 (2017) — 885
ES2018 (2018) — 805
ES2019 (2019) — 764
ES2020 (2020) — 860
Вышел Chrome 88

В новой версии:
- Manifest v3 для расширений, который должен улучшить производительность, безопасность и приватность (не нашел нигде дату, когда v2 перестанут публиковать и начнут убирать из Chrome Web Store, если вы обладаете такой информацией — поделитесь, пожалуйста)
- поддержка CSS-свойства aspect-ratio
- точность таймеров будет уменьшена для повторяющихся вызовов
- биллинг Google Play для Trusted Web Activities доступен под origin trial на Android
- в соответствии с изменениями в стандарте HTML, target="_blank" теперь по умолчанию имеет также поведение rel="no-opener"
- Pointer Lock API
- addEventListener теперь может принимать AbortSignal

Видео о новых фичах Chrome 88.

Об изменениях DevTools можно почитать тут.
О деприкейтах и убранных фичах тут.
Изменения в поддержке SharedArrayBuffer в Chrome

Поддержка SharedArrayBuffer уже доступна в десктопной версии Chrome, но начиная с версии 91 для его работы потребуется настройка cross-origin isolation. Начиная с версии 88 для Android, поддержка также включается для страниц с cross-origin изоляцией.

https://developer.chrome.com/blog/enabling-shared-array-buffer/
Портирование Firefox на Apple Silicon

Большая статья о том, с какими трудностями пришлось столкнуться инженерам Mozilla для портирования Firefox на новые процессоры Apple.

https://hacks.mozilla.org/2021/01/porting-firefox-to-apple-silicon/
Вышел GraalVM 21.0.0

В JS версии добавлены поля классов (stage 3), Promise.any (ES2021), String.prototype.replaceAll (ES2021), Logical Assignment Operators (ES2021), а также Relative Indexing Method (aka .at(), stage 3) под флагом.

Кроме того, в GraalVM 21 много других классных изменений.

https://medium.com/graalvm/graalvm-21-0-introducing-a-new-way-to-run-java-df894256de28

Поддержка GraalVM относительно JavaScript уже обновлена в таблице совместимости.
Puppeteer мигрирует на TypeScript

Команда Chrome DevTools собирается использовать TypeScript не только в самих DevTools, но и в инструменте автоматизации браузера Puppeteer.

https://developers.google.com/web/updates/2021/01/puppeteer-typescript
Проблемы совместимости Relative Indexing Method

У этого stage 3 пропозала очередные проблемы совместимости. Они были обнаружены разработчиками из Apple после включения метода .at() у массивов. Надо сказать, что код, который используется на проблемном сайте очень сомнительный. Напомню, что ранее метод назывался .item(), и проблема совместимости при использовании этого имени была обнаружена разработчиками из Mozilla. В этот раз проблема не такая серьёзная, как в прошлый, т.к., судя по всему, пока обнаружена лишь на одном сайте и в кастомном коде, так что #TC39 может попробовать связаться с владельцами сайта и попросить изменить код. посмотрим, что из этого выйдет.
У WebAssembly в JavaScriptCore появится JIT-less режим

Режим без JIT позволит исполнять #WebAssembly в JavaScriptCore (движке, используемом в WebKit/Safari) на платформах, которые не поддерживают B3 и Air оптимизаторы. В таких случаях будет использоваться только интерпретатор LLInt.

https://bugs.webkit.org/show_bug.cgi?id=220365
Сегодня начинается первое в этом году заседание #TC39

Я как всегда буду рассказывать об итогах каждого дня, о каких-либо важных событиях сразу же онлайн, и напишу общие итоги январской встречи одним большим постом. Честно говоря, я не ожидал такого количества тем для обсуждения. Казалось, что какие-то основные изменения в плане синтаксиса уже пришли в язык, но в повестке можно найти много нового (и хорошо забытого старого), что может значительно поменять синтаксис. Будем следить вместе вечерами с понедельника по четверг, присоединяйтесь!
В Chromium перестанет работать синхронизация через API от Google

Google собирается ограничить доступ к своим API для сторонних браузеров на базе Chromium 15 марта 2021. Ранее пользователи таких браузеров могли синхронизировать свои данные с аккаунтом Google. В результате авторы дистрибутивов Arch Linux, Fedora, Debian, Slackware и openSUSE подняли вопрос о том, чтобы убрать Chromium из поставки в своих дистрибутивах. Разработчики браузеров на основе Chromium пока никак не прокомментировали грядущие изменения, но очевидно, что такой шаг может перевести их пользователей в ряды пользователей Google Chrome.
Важные новости CSS с прошлой недели

Опубликованы W3C Accessibility Guidelines (WCAG 3) в статусе First Public Working Draft. Новая версия документа имеет переработанную структуру, соответствие гайдлайнам теперь применяется не к страницам, а к сайтам или продуктам, 100% соответствие теперь не обязательно (достаточно отсутствие критических ошибок).

Опубликованы CSS Cascading and Inheritance Level 5 также в статусе First Public Working Draft. В новой версии добавлен концепт слоёв каскадности.