Вебня
4.74K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Pointer Events Polyfill (PEP) прекращает своё развитие

Pointer Events теперь поддерживаются в большинстве браузеров, и разработчики полифилла решили прекратить его дальнейшее развитие, к тому же ещё с Pointer Events Level 2 было сложно полифиллить нативные возможности платформы.

https://openjsf.org/blog/2021/02/10/pointer-events-polyfill-pep-enters-emeritus-status-at-the-openjs-foundation/
Webref – машиночитаемые выдержки из веб-спецификаций

В организации w3c на GitHub появился репозиторий Webref, который содержит описания CSS свойств и определений, IDL и метаданные из веб-спецификаций. Данные есть как по опубликованным спецификациям, так и по их черновикам (Editor's Drafts); из таких областей как CSS, DOM, SVG, WebGL, CSP и другие Web API. Данные извлекаются из почти 400 спецификаций, краулером Reffy, который тоже доступен на GitHub в организации w3c.
Что примечательно, обоим репозиториям более трех лет, но им удавалось оставаться в тени (меньше 50 звезд на GitHub на оба репозитория). Судя по всему, эти репозитории перенесли в w3c в районе сентября прошлого года.
Они используются в WebIDLpedia, анализе аномалий в спецификациях и в тестах веб-платформы. Вероятно этим данным скоро найдется новое применение.
Опубликованы текстовые записи с январского пленарного заседания #TC39

https://github.com/tc39/notes/tree/master/meetings/2021-01
В блоге V8 вышла статья об ускорении вызовов JavaScript функций с несовпадающим количеством аргументов

Ранее для таких вызовов использовался специальный адаптер, который не только сложен в реализации, но весьма дорог по времени вызова. В V8 v8.9 получилось избавиться от адаптера и не потерять в скорости в интерпретаторе Ignition, а в JIT-компиляторе TurboFan получить прирост скорости в 40%.
В движке JavaScriptCore реализованы приватные методы и аксессоры

Это последняя оставшаяся фича из текущих stage 3 пропозалов-долгостроев про классы.

https://bugs.webkit.org/show_bug.cgi?id=219181
https://bugs.webkit.org/show_bug.cgi?id=194435

Осталось ждать только включения всех приватных фич классов в SpiderMonkey, там они всё ещё под флагом. Думаю, что скоро все три пропозала про поля и методы классов можно уже ждать на stage 4 и в будущем стандарте ES2022.
Подкастер Лекс Фридман выпустил большое интервью с создателем JavaScript Бренданом Айком

Интервью длится почти три часа, и в нём затрагивается очень много интересных тем, таких как история языков программирования, физика (Брендан по образованию физик), история JavaScript, Netscape vs Microsoft, развитие и стандартизация языка JavaScript, TypeScript, экосистема JavaScript, появление JIT-компиляторов JS-движков, asm.js, WebAssembly, браузерные войны, Firefox, Brave, приватность пользователей, роль Safari в авангарде борьбы за неё и Chrome, которому приходится выкручиваться по-своему.

https://www.youtube.com/watch?v=krB0enBeSiE
Результаты сегодняшней встречи #WebAssembly CG

Только что закончилась очередная встреча WebAssembly Community Group. Результаты:
- Branch Hinting остается на phase 1
- Fixed-width SIMD переходит на phase 4
- Web Security Content Policy переходит на phase 1
- Memory64 переходит на phase 3
⚡️ #WebAssembly пропозал non-trapping float-to-int conversions реализован в JavaScriptCore, движке WebKit/Safari

https://github.com/WebKit/WebKit/commit/c60cbacb4b8746e281a03d94e2473b1aa0f620ee
Вышла новая бета языка Dart с поддержкой null safety

Эта фича поможет не только сделать код более надёжным, но и позволит компилятору лучше его соптимизировать, а также собрать более лёгкие бинарники. В данный момент разработчики языка обновляют основные пакеты и Flutter для поддержки фичи.

Новость в блоге на медиуме: https://medium.com/dartlang/preparing-the-dart-and-flutter-ecosystem-for-null-safety-e550ce72c010
Документация: https://dart.dev/null-safety
GitHub issue: https://github.com/dart-lang/language/issues/110#issuecomment-780318393
Вышел ReScript 9.0

ReScript — это новое название для Reason в использовании совместно с BuckleScript. В новой версии некоторые улучшения компилятора и синтаксиса.

https://rescript-lang.org/blog/release-9-0

Подробнее о ребрендинге проектов: https://rescript-lang.org/bucklescript-rebranding
В V8 v9.0 добавится использование инлайн кэша для доступа к полям объекта-родителя

В данный момент для обращений вида super.x используется рантайм вызов. В статье рассказываются технические подробности о том, как работает super и как получилось переиспользовать инлайн кэш для его ускорения.

https://v8.dev/blog/fast-super
Руководство по использованию стримов

На web.dev опубликована хорошая статья о том, как работать со Streams API, подробно и с примерами использоваения.

https://web.dev/streams/
Релиз инструмента сборки Vite 2.0

Vite (читается как «Вит») представляет собой преднастроенный сервер для разработки и бандлер. Он использует нативные ES модули, Rollup и esbuild, позволяет работать с Vue, React, Preact, Lit Element. В нём также предусмотрены поддержка CSS и экспериментальная поддержка SSR.

https://dev.to/yyx990803/announcing-vite-2-0-2f0a
Вышел Babel 7.13.0

Из нового:
- опцию target теперь можно указать один раз на верхнем уровне конфига
- новая опция assumptions, в которой можно указать насколько разработчик готов пожертвовать соответствием спецификации в пользу производительности, аналогично опции loose, но гранулярно
- поддержка пропозала Records and Tuples (stage 2) (потребуется также полифилл)
- улучшение поддержки Flow и поддержка TypeScript 4.2
- опция useESModules задепрекейчена, и теперь Babel сам может автоматически определить какой формат модулей нужен, опция будет окончательно убрана в Babel 8

https://babeljs.io/blog/2021/02/22/7.13.0.html
Вышел Firefox 86

В нём:
- некоторые улучшения DevTools
- lighter оператор для <feComposite> в SVG
- псевдокласс :autofill
- Intl.DisplayNames (ECMA402 2021)
- поддержка нескольких видео при воспроизведении Picture-in-Picture
- Total Cookie Protection
- AVIF изображения
- CSS-функций image-set()

Изменения для разработчиков
Изменения для пользователей
Изменения в API расширений
State Partitioning и Total Cookie Protection Firefox 86

Firefox вслед за Safari (с их Intelligent Tracking Prevention) и Brave продолжает бороться с отслеживанием пользователя, и реализует систему, изолирующую хранение состояния при использовании айфремов.

https://hacks.mozilla.org/2021/02/introducing-state-partitioning/
https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/

И ещё анонс с видео и про множественные PiP бонусом: https://blog.mozilla.org/blog/2021/02/23/latest-firefox-release-includes-multiple-picture-in-picture-and-total-cookie-protection/
Вышел TypeScript 4.2

Из нового:
- Сохранение псевдонимов типов в случаях, когда они раньше раскладывались на базовые
- Остаточные элементы теперь могут находиться в любом месте кортежей, а не только в середине
- Более строгие проверки для оператора in
- Новый флаг компилятора --noPropertyAccessFromIndexSignature
- Модификатор abstract для сигнатур конструкторов
- Флаг компилятора --explainFiles
- Проверка на использование функции без вызова в выражениях с || и &&
- Переменные, полученные в результате деструктуризации теперь могут быть специально помечены как неиспользуемы с помощью префикса _
- Улучшения взаимодействия опциональных свойств и строковых сигнатур ключа объекта
- Создание отсутствующей реализации функции на основе её вызова

https://devblogs.microsoft.com/typescript/announcing-typescript-4-2/
⚡️ Спецификаци Web Authentication: An API for accessing Public Key Credentials Level 2 получила статус Proposed Recommendation