Вебня
4.7K subscribers
89 photos
2 videos
3 files
2.08K links
JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Download Telegram
Команда Polymer зарелизила свои библиотеки для работы с веб компонентами.
Forwarded from Веб-стандарты (Веб-стандарты)
Простая библиотека lit-html 1.0 для HTML-шаблонизации и базовый класс LitElement 2.0 для создания веб-компонентов. В блоге проекта Polymer рассказали про релизы библиотек, анонсированных в прошлом году на Google I/O — https://www.polymer-project.org/blog/2019-02-05-lit-element-and-lit-html-release
Apple готовится выключить по умолчанию доступ из Safari к акселерометру и гироскопу в целях безопасности. Рекламные агентства, специальзирующиеся на AR и VR технологиях обеспокоены тем, что от этого они потеряют заказы, потому что пользователи не захотят разрешать браузеру доступ к устройствам ориентации.

https://digiday.com/marketing/definitely-going-break-things-apple-prepping-ios-change-may-hurt-ar-vr-advertising/
Вышел релиз V8 7.3. В нем:
- асинхронные стек трейсы включены по умолчанию
- await ускорен за счет уменьшения количества необходимых тиков
- доработан baseline компилятор Liftoff, за счет чего WebAssembly стартует на 15-20% быстрее
- добавлена поддержка Object.fromEntries
- добавлена поддержка String.prototype.matchAll
- Atomics.wake переименован в Atomics.notify в соответствии с изменениями в спецификации

https://v8.dev/blog/v8-release-73
Делюсь двумя статьями о технологиях, применённых в Яндекс.Браузере:
- Hibernate позволяет освободить ресурсы компьютера за счет сохранения состояния вкладки в зашифрованом виде на диск.
- про энергосбережение

Также советую посмотреть доклад от Константина Крамлих из Яндекса о настоящем и будущем Яндекс.Браузера.
Если Вы еще не видели, то список изменений в готовящемуся релизу webpack 5 (текущая версия — v5.0.0-alpha.10, вышла 7 февраля) можно посмотреть тут:
https://github.com/webpack/changelog-v5
В Firefox Nightly 67 появился тип BigInt под флагом. В ближайших патчах он будет включен по умолчанию.
https://hg.mozilla.org/mozilla-central/rev/4b74d76e55a8
А если хотите полное комбо, то вот еще и быстрая замена webpack, написанная на ReasonML.
https://fastpack.sh
На сегодняшней видеовстрече #WebAssembly Working Group будет обсуждение запроса к W3C для перевода спецификаций на стадию Candidate Recommendation. В данный момент спецификации находятся на стадии Editor’s Draft. Кажется смогу там присутствовать, так что вероятно вечером дам апдейт.

Сами спеки:
WebAssembly Core Specification
WebAssembly JavaScript Interface
WebAssembly Web API
Только что закончилась видеовстреча #WebAssembly WG.

Предложение Typed Function References было отделено от предложения Garbage Collection и теперь находится на phase 0 (pre-proposal). Такое изменение поможет иметь эффективные косвенные вызовы функций без проверок во время выполнения, иметь указатели на функции без необходимости таблиц, простой и эффективный способ обмена ссылками на функции между модулями и окружением хоста, а также опциональную поддержку замыканий.

Спецификации было решено перевести со второй фазы в разряд стандартизированных предложений. Сами спецификации, как и ожидалось, будут отправлены на ревью в W3C для получения статуса Candidate Recommendation.
Делюсь ещё одним интересным каналом — https://t.me/jabascript. В нем вы найдёте различные статьи на тему JavaScript, а также информацию об интересных библиотеках. Всё с достаточно подробным описанием от автора канала. Советую.
Спецификация CSS Transforms Module Level 1 от W3C CSS Working Group получила статус Candidate Recommendation. Описанные в ней CSS трансформации позволяют производить преобразования в двумерном пространстве. Эта спецификация появилась путём объединения двух других спецификаций — CSS 2D Transforms и SVG Transforms.
Был уверен, что уже писал о Layered APIs, но почему-то поиск не находит ни одного сообщения об этом. 🤔 Что ж, тогда напишу.

———————————

Существует так называемый Манифест Расширяемого Веба, созданный в 2013 году и подписанный всеми светочами веба (а также всеми желающими). Среди обещаний манифеста — фокус на низкоуровневых возможностях веб платформы, на основе которых уже будут строиться высокоуровневые API.
Сегодня веб-разработчики вынуждены создавать большинство высокоуровневых компонентов уровня приложения самостоятельно, что создает высокий порог входа, увеличивает размер приложений (за счет полифиллов или собственных реализаций, а иногда даже приходится вместе с зависимостями включать несколько сторонних библиотек, делающих одно и то же). Но и когда нужные API все-таки существуют, то часто из-за недостаточного тестирования этих API разработчиками позже выясняется, что в приложениях их использовать очень сложно или невозможно. К тому же, такие неюзабельные API ещё и загрязняют глобальное пространство имён.

Layered APIs — это попытка создать новые стандарты для совместной работы над фичами высокого уровня. Такие API загружаются через JavaScript импорты с помощью специального синтаксиса и таким образом не загрязняют глобальное пространство имен. Также Layered APIs не должны использовать никакие примитивные операции, которые недоступны в веб платформе, что даёт веб разработчикам возможность реализовать спецификацию любого многоуровневого API исключительно возможностями JavaScript.

Вот подробный документ по Layered APIs, который, к слову, совсем недавно обновился:
https://docs.google.com/document/d/1VbU4z7xtU_kzuLAcj38KKL5qoOr2UYNUJW8vZB2AcWc/edit#heading=h.oj227hdy49ce
А вот документ, описывающий имплементацию многоуровневых API в Blink:
https://docs.google.com/document/d/1V-WaCZQbBcQJRSYSYBb8Y6p0DOdDpiNDSmD41ui_73s/edit#
В багтрекере Chromium закрыли баг с breaking change в ES2019, который ломал некоторые графики в библиотеке Highcharts.js с введением Array.prototype.flat.

“Since (unlike with Array.prototype.flatten) the breakage is limited to line labels disappearing in specific scenarios, and a simple fix is available for affected websites (that doesn't require updating to a new version), we've decided to move forward with Array.prototype.flat, which is now shipping in multiple browsers. Closing this issue.”

https://bugs.chromium.org/p/chromium/issues/detail?id=888128#c33
Недавно вышла обновленная бета браузера Samsung Internet 9.2, основанная на Chromium 67 (я ранее писал об этом здесь), с новым UI и экспериментальной технологией защиты от отслеживания Smart Anti-Tracking.
Разработчики браузера написали об этом статью:
https://medium.com/samsung-internet-dev/new-year-new-samsung-internet-b74f282e4429
В Chrome Canary под флагом добавлено кэширование скомпилированных #WebAssembly модулей. Включение фичи позволяет избежать повторной компиляции и сразу инициировать модуль с горячим стартом.
Интересная серия статей “Проблемы #WebAssembly” в четырех частях:
- WebAssembly Is Not a Stack Machine
- Why Do We Need the Relooper Algorithm, Again?
- What About Alloca?
- Microwasm