TGViewer
Channel Public Channel
Вебня

Вебня

@webnya

JS VMs, спецификации, пропозалы, встречи #TC39, #WebAssembly, #W3C, браузеры, нёрдство.
Subscribers
4.41K
Photos
89
Videos
2
Links
2.1K

Showing posts older than #2134 · Back to latest

Older Posts 20 shown
Post #2133 4.31K
Официальный сайт #TC39 теперь доступен на нескольких языках

Добавлены русскоязычная, немецкая и китайская версии сайта. Также в скором времени будет добавлена японская версия.

Некоторые ссылки («Предстоящая повестка» и «Протокол последнего собрания») нуждаются в обновлении, что может стать полезным вкладом с Вашей стороны. Также принимаются предложения по улучшению перевода. Репозиторий сайта: https://github.com/tc39/tc39.github.io
Post #2132 4.66K
Официальный отчет о 82й встрече TC39

Опубликован отчет последней встречи TC39, которая прошла 19-21 апреля. Сергей уже делал отчет по тому что происходило в каждый из дней. В отчете же от TC39 структура идет от самих пропосалов и их стадии, плюс больше деталей и ссылок.
SpiderMonkey JavaScript/WebAssembly Engine TC39 meeting, April 19-21 2021 In this TC39 meeting, the updates to JavaScript Classes around private state have moved to stage 4. Other proposals of note this meeting were proposals related to ArrayBuffers, notably resizable ArrayBuffers and a new proposal, introducing read-only ArrayBuffers…
Post #2131 5.28K
Visualizing Garbage Collection Algorithms

Ken Fox разбирает пять алгоритмов работы сборщика мусора и визуализирует каждый из их. Среди алгоритмов есть и Reference Counting Collector, который использовался в первых JavaScript движках, и Copying Collector, который в основном используется в современных движках, когда есть два поколения памяти (молодое и старое).

https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/
Atomic Spin Visualizing Garbage Collection Algorithms Developers take garbage collection for granted, but it's hard to see how it works. Watch 5 different GC algorithm visualizations.
Post #2130 4K
Shared Element Transitions

Разработчики Blink собираются начать эксперимент с Shared Element Transitions – новое API, позволяющее делать плавные переходы между состояниями как для Single Page Application так и для Multiple Page Application. API предлагает как переходы между страницами, так и переходы для отдельных элементов страницы. Да, идея похожа на Transitions Filters – технологию, которая была еще в IE5 и IE6, и в дальнейшем спилена. Были попытки сделать что-то подобное и в Blink. Так что это новая попытка добавить функциональность в платформу.
Чтобы понять идею, можно посмотреть видео из статьи Sarah Drasner, в которой она описала как добиваться похожих эффектов используя Vue и Nuxt.js. С новым API все должно стать гораздо проще, и веб приложения смогут быть более похожими на мобильные (в плане интерактивности).
Разработчики других браузеров пока не высказили свое мнение относительно предложения, а вот со стороны веб разработчиков сигналы позитивные. Информации пока не много, будем следить.
GitHub view-transitions/README.md at main · WICG/view-transitions Contribute to WICG/view-transitions development by creating an account on GitHub.
Post #2129 4.12K
Новые фичи Canvas 2D API

Разработчики Chromium некоторое время работают над нововведениями в Canvas 2D API, и это самое большое расширение API с момента его стандартизации. О новинках хорошо рассказано в видео и git репозитории, где представлено описание (explainer'ы) для каждого из расширений. Ключевые направления расширений:

- Паритет по функциям с другими 2D API;
- Доступ к возможностям Web/CSS;
- Улучшение производительности.

На данный момент в Chromium реализовано 9 фич:

- Reset function – метод reset(), который очищает канвас, текущий путь и стек трансформаций. Не понятно, почему его не было раньше. Позволяет избежать хаков и проседания производительности.
- Color input – добавляет возможность использовать экземпляры CSSColorValue и массивы чисел как значения цвета (сейчас можно использовать только строки).
- Text modifiers – аналоги CSS свойств letter-spacing, word-spacing, font-variant-caps, font-kerning, font-stretch и text-rendering.
- RoundRect – прямоугольник со скругленными углами, что-то вроде CSS border-radius.
- Conic Gradient - аналог CSS conical-gradient()
- Perspective transforms – трансформации с перспективой. На самом деле, сводится к поддержке матриц трансформации 4x4.
- Modern filters – сейчас в канвасе доступны SVG фильтры. Но пользоваться ими неудобно и к тому же они не доступны в воркерах (так как там нет DOM и, соответственно, SVG). Это расширение повторяет SVG фильтры, но в виде JavaScript API.
- willReadFrequently – опция при создании 2d контекста, которая сигнализирует браузеру, что будет активно использоваться getImageData() и браузер может это оптимизировать (как хранить). Сейчас браузеры эвристически решают будет ли активно использоваться getImageData() или нет, что является не надежным и сложным решением.
- Canvas context loss – позволяет браузеру освобождать ресурсы выделенные под контекст, когда канвас не используется (например, за пределами вьюпорта) и добавлять реакцию на восстановление контекста (начать отрисовывать, когда канвас возвращается во вьюпорт).

Еще около 7 фичей находятся на уровне идей.

В середине апреля было объявлено о начале экспериментов в Chrome. Новое API доступно за флагом new-canvas-2d-api (chrome://flags/#new-canvas-2d-api). Разработчики других браузеров в целом относятся позитивно к новым фичам, но есть вопросы по некоторым из них. В Firefox уже ведут разработку, Edge помогает с имплементацией в Chromium, насчет Safari пока информации нет.
YouTube Canvas2D is getting an update Your good, old friend the Canvas2D API has been improving and is worth another look. Hear about all the new features that have been added to the spec. Resources: Github → https://goo.gle/39Acp9i Speaker: Aaron Krajeski Watch all Chrome Developer Summit…
Post #2128 3.71K
Вышел Safari Technology Preview 124

В основном исправления, из нового:
- Имплементация color-mix() в соотвествии с текущим состоянием CSS Color Level 5
- В Element.focus() добавлена опция preventScroll
- Имплементирован AbortSignal.abort()
- Добавлен рендеринг текста на OffscreenCanvas в воркерах
- Для WebGL стал доступен Metal ANGLE бекенд
- Реализована передача RTCDataChannel между процессами

Полный список изменений:
WebKit Release Notes for Safari Technology Preview 124 Safari Technology Preview Release 124 is now available for download for macOS Big Sur and macOS Catalina.
Post #2127 4.37K
WebTransport: новое API для взаимодествие клиент-сервер

WebTransport Working Group опубликовала первый публичный рабочий черновик WebTransport. Новое API можно будет использовать как WebSocket, но с поддержкой нескольких потоков, однонаправленных потоков, доставкой не по порядку (out-of-order delivery) и возможностью выбирать между надежным или ненадежным траспортом. Функциональность строится поверх HTTP3.
Предлагаемое API находится в ранней стадии, и почти наверняка изменится. Разработчики Blink начали экспериментировать с WebTransport около месяца назад. Новое API должно закрыть потребности таких направлений как игры и стриминг, поэтому в эксперименте участвуют такие сервисы как Twitch и Zoom.
IETF Datatracker WebTransport over HTTP/3 WebTransport [OVERVIEW] is a protocol framework that enables application clients constrained by the Web security model to communicate with a remote application server using a secure multiplexed transport. This document describes a WebTransport protocol that…
Post #2126 8.21K
В Safari 14.1 сломан localStorage

Вчера Jake Archibald обнаружил, что localStorage сломан в последнем релизе Safari таким образом, что каждая вкладка читает свой собственный экземпляр хранилища, а не делит общий с другими вкладкми origin'а. И хотя при записи в localStorage вкладки получают событие change, они не могут получить новое значение, так как читают из своего собственного экземпляра хранилища.
Эта механика используется как для синхронизации между вкладками, так использовалась и для коммуникации между вкладаками, пока не появился BroadcastChannel. Сегодня BroadcastChannel важен для PWA, так как используется для коммуникации между Service Worker'ом и закладками. Интерфейс появился в Chromium и Firefox 5 лет назад, в Edge с переходом на Chromium. В Safari же тикет на имплементацию висит без движения уже почти 5 лет. Поэтому для Safari используют полифилы, использующие синхронизацию через localStorage, которая сейчас сломана.
Баг связан с самим Safari, а не его движком (WebKit) и затрагивает только macOS – Safari на iOS не затронут. Инженеры Apple уже пофиксили проблему, но когда выкатится патч не известно, так как они не могут это комментировать, хотя понимают, что это существенная регрессия... Вероятно патч выйдет со следующим релизом macOS.
Пока обходное решение использовать IndexedDB в связке с Service Worker'ом.
Post #2125 6.58K
V8 релиз v9.1

- Включили private brand checks по умолчанию (было за флагом), что позволяет использовать оператор in с приватными полями, то есть #foo in obj
- Включили top-level await по умолчанию (было за флагом). Стоит отметить что фича уже включена в Chrome 89 по умолчанию, видимо на подходе Node.js
- Пара специфичных оптимизаций
v8.dev V8 release v9.1 · V8 V8 release v9.1 brings support for private brand checks, top-level await enabled by default and performance improvements.
Post #2124 5.38K
Work with cookies the modern way

https://mefody.dev/chunks/cookie-store-api/

Статья Никиты Дубко о новом Cookie Store API, которое приходит на смену document.cookie. Доступно с Chrome 87, а вот насчет других браузеров пока нет сигналов, но для них можно использовать полифил.
mefody.dev Work with cookies the modern way | Dev Tips by Nikita Dubko Cookie Store API is a way to avoid the pain.
Post #2123 4.65K
Progress Delayed Is Progress Denied

Alex Russell опубликовал обширную статью о том как монополия Safari на iOS негативно сказывается на развитии веб платформы. Полезно к прочтению, если хотели разобраться почему и за что критикуют Apple/Safari, с фактами и данными. Статья интересна еще и тем, что в ней перечисленно большое количество "старых" и будущих API с коментариями и судьбой – можно узнать что-то новое или освежить знания по статусам.

https://infrequently.org/2021/04/progress-delayed/
Infrequently Noted Progress Delayed Is Progress Denied - Infrequently Noted Apple's iOS browser (Safari) and engine (WebKit) are uniquely under-powered. Consistent delays in the delivery of important features ensure the web can never be a credible alternative to its proprietary tools and App Store. This is a bold assertion, and proving…
Post #2122 4.05K
Import Assertions и JSON Modules уже в Chrome 91 Beta

Это значит, что примерно через месяц JSON Modules станут доступны в браузерах на основе Chromium. Пока не понято будет ли работать в ServiceWorker'ах в Chrome 91 или уже в последующих версиях. И есть проблемы с корректностью ошибок парсинга, но это не посчитали блокером.
Post #2121 3.89K
Официальный обзор новых фич Safari 14.1

В блоге WebKit появилась статья со списком нововведений Safari 14.1, релиз которого для macOS и iOS состоялся в понедельник 26 апреля.

https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/

Я публиковал такой список ранее в феврале.
WebKit New WebKit Features in Safari 14.1 Safari 14.1 for macOS Big Sur, iPadOS 14.5, and iOS 14.5 brings new WebKit features, APIs, performance improvements, and improved compatibility for web developers.
Post #2120 3.65K
Вышел Vivaldi 3.8

https://vivaldi.com/blog/vivaldi-crumbles-cookie-dialogs-raises-privacy/

В новой версии:
- блокировщик GDRP cookie панелей
- отключен FLoC
- улучшенный UI
- улучшенная работа с закладками
и некоторые минорные изменения
Vivaldi Browser Vivaldi crumbles cookie dialogs, raises privacy, design bars. | Vivaldi Browser The Vivaldi browser offers relief from annoying cookie dialogs, Google’s FLoC, an invasive privacy technology. Rebuilds its Panels, adds bookmarking options.
Post #2118 5.82K
В Angular 12 View Engine будет по умолчанию заменён на Ivy

По статистике большинство разработчиков уже использует новый render pipeline Ivy. Для разработчиков переход должен стать незаметным, но имеется возможность использования View Engine (который получит статус depricated) при необходимости.

https://blog.angular.io/upcoming-improvements-to-angular-library-distribution-76c02f782aa4
Medium Upcoming improvements to Angular library distribution TLDR; In v12, we’ll deprecate our legacy compilation and rendering pipeline called View Engine. This change will not require any action by…
Post #2117 3.46K
Расширение Bytecode Alliance

Организация была создана в конце 2019 совместными усилиями Mozilla, Fastly, Intel и Microsoft (в первом анонсе упоминается также Red Hat) для работы над #WebAssembly за пределами веба, WASI и инструментарием. Теперь к ней присоединились Arm, DFINITY, Foundation, Embark Studios, Google Shopify и Университет Калифорнии (Сан Диего).

https://bytecodealliance.org/press/calling-for-new-members
https://blog.mozilla.org/blog/2021/04/28/growing-the-bytecode-alliance/
Bytecode Alliance The Bytecode Alliance Calls for New Members In Mission to Build Safer Software Foundations for the Internet SAN FRANCISCO — April 28, 2021 — The Bytecode Alliance, a community dedicated to creating new software foundations, building on standards such as WebAssembly and WebAssembly System Interface (WASI), today announced incorporation as a 501...
Post #2116 3.25K
Как использовать асинхронные API из #WebAssembly

Статья Ингвара Степаняна о том, как использовать инструмент Asincify с C++ (из Emscripten) и другими языками.

https://web.dev/asyncify/
Post #2115 3.42K
Вебня Kranky Geek WebRTC Show 2021 Также сегодня пройдёт онлайн конференция, посвященная #WebRTC. https://www.krankygeek.com Список докладов: - Welcome - YouTube - WebRTC for gaming - Matrix - Signaling - Agora - leveraging virtual networks - RingCentral - improving…
Ещё одно бесплатное онлайн событие про WebRTC — Wonder WebRTC unConference пройдёт 18 мая
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →