Пульс веб-платформы 17.07.2026


Новости

  • npm 12, TypeScript 7.0 и Bun на Rust — Выпустили npm 12 — install-скрипты отключены по умолчанию, так что апгрейд лучше делать через 11.18.0. TypeScript 7.0 финально переписан на Go и обещает быть «в 10 раз быстрее», но полный API ещё не готов. Bun, в свою очередь, полностью портировали с Zig на Rust: автор сжёг ~$165k на Claude Code, результат станет основой Bun 1.4. А Node.js 26.5.0 научился импортировать текстовые файлы через import attributes.

Проекты

  • HYPERBLAM — Декларативная обёртка над Web Audio API через Web Components. Вместо императивного соединения oscillator → filter → gain пишете вложенные HTML-теги вроде <blam-sampler>. Слоган проекта — «Make music, not Javascript», и это ещё один пример того, как платформенные API обрастают тонкими, но удобными абстракциями.
  • Name That UI — Визуальный словарь UI-элементов: ищете по описанию («точка для изменения громкости»), узнаёте реальное имя компонента и API-символ, а заодно копируете точный промпт для coding agent. Полезно, когда не хватает общего языка с дизайнером или с Copilot.
  • Lumis — Новый syntax highlighter на Tree-sitter с поддержкой кучи рантаймов — отличный кандидат для серверного рендеринга кода. Tree-sitter зарекомендовал себя как быстрый и точный парсер, так что серверная подсветка наконец может выглядеть не хуже клиентской.

Статьи, мнения, туториалы

JS/TS

  • Неявное зависание Promise.all при отмене AsyncIteratorabort() вызывает return() генератора, но если внутри остался незавершённый таймер или подписка, Promise.all зависает навсегда. Лечится через try/finally в теле генератора с явной очисткой ресурсов. Классический случай, когда «всё чисто» на самом деле утекает.
  • scheduler.yield() — нормальный способ разбивать длинные задачи — Вместо костылей с setTimeout(fn, 0) теперь можно использовать scheduler.yield(): continuation попадает в высокоприоритетную очередь, а не в конец event loop. Для задач с разными приоритетами есть scheduler.postTask() с тремя уровнями — от user-blocking до background. Наконец-то нормальный планировщик в браузере.

CSS

  • Chrome 144: width и height больше не ломают compositor-анимации — Раньше даже неизменяющееся width: 200px внутри keyframes заставляло Chrome анимировать opacity на main thread. С Chrome 144 Blink проверяет, действительно ли layout-свойство меняется между кадрами. Особенно заметно во View Transitions — они больше не фоллбечат без причины.
  • CSS safe alignment — Ключевое слово safe в сочетании с align-items и justify-content гарантирует, что контент не обрежется за границами контейнера. Если элемент не помещается, браузер автоматически смещает его так, чтобы оставался видимым. Удобная страховка для адаптивных интерфейсов.