Dev News от Максима Соснова
Відкрити в Telegram
Привет! Меня зовут Максим Соснов и по утрам я читаю всякие разные дайджесты про фронтенд, разработку и управление разработкой. Самые интересные, по моему мнению, ссылки из этих дайджестов я кидаю в этот канал с небольшим описанием. Контакт: @msosnov
Показати більше2 800
Підписники
Немає даних24 години
-67 днів
+1430 день
Архів дописів
Mitos
Oxide Computer выложили в опенсорс Mitos — веб-инструмент для генерации ASCII-арта на основе изображений или gif. Выглядит реально круто. Вставляете картинку или гиф, а экспортируете текст, png или mp4.
Поиграться можно здесь https://mitos.shared.oxide.computer/
https://github.com/oxidecomputer/mitos
#development #oxide #ascii #tools #open-source
Bun's unreleased Rust port has 13,365 unsafe blocks. Most can be removed.
Сначала Anthropic купили Bun, а затем переписали его с Zig на Rust с помощью Claude Code, но пока не влили. Большое переписывание - большой шитшторм. Быстро вскрылось, что код переписан "плохо" - не rust-way и много
unsafe в кодовой базе. Команда Bun опубликовала большой интерактивный аудит всех unsafe-блоков в ещё не выпущенном Rust-порте рантайма. После AI-перевода с Zig на Rust там насчитали 13 365 unsafe — и разобрали каждый: откуда он взялся, можно ли убрать и что для этого нужно.
Важно: версию на Rust ещё не влили.
Главный вывод из отчёта: 13 365 unsafe — это очень много, но большинство из них (~9 300) можно перевести в safe. Остальные unsafe останутся, в основном это FFI и работа с C/C++.
Сам отчёт просто бомбический: удобно смотреть, классно выглядит, полностью основан на данных и показывает, откуда берутся эти unsafe. Но самый кайф — хороший пример инженерной работы: всё подсчитано, сделан анализ, выводы, показаны детали, которые повлияли на выводы.
https://bun.com/bun-unsafe-audit
#development #bun #rust #unsafe #auditДайджест за 2026-05-18 - 2026-05-22
spawn-agent
Библиотека, использующая
Vercel AI SDK для запуска локальных AI-агентов на компьютере через Agent Client Protocol. Поддерживает Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Factory Droid, Pi.
portless
Утилита от Vercel Labs, которая открывает урлы вида http://localhost:3000 на именованных доменах .localhost. Например, вместо http://localhost:3000 можно открывать https://myapp.localhost. Из коробки поддерживает HTTPS и HTTP/2.
Warp — открыли исходный код
Warp, терминал с Rust, который, как и Zed, прошел большой путь от "мы просто очень быстрый терминал" через "Мы терминал++ - следующее поколение терминалов с крутыми фичами" до "мы теперь AI IDE". Warp выложили исходники в опенсорс.
——————————————
Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам.
——————————————
Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросыWarp — открыли исходный код
Warp, терминал с Rust, который, как и Zed, прошел большой путь от "мы просто очень быстрый терминал" через "Мы терминал++ - следующее поколение терминалов с крутыми фичами" до "мы теперь AI IDE". Warp выложили исходники в опенсорс.
Это круто, т.к. лично я считаю, что warp - самый удобный терминал для работы. Банальный textarea, который ведет себя также как редактирование кода в IDE, выводит опыт работы с терминалом на следующий уровень.
https://github.com/warpdotdev/warp
#development #warp #terminal #open-source #rust #ai
portless
Утилита от Vercel Labs, которая открывает урлы вида
http://localhost:3000 на именованных доменах .localhost. Например, вместо http://localhost:3000 можно открывать https://myapp.localhost. Из коробки поддерживает HTTPS и HTTP/2.
Работает просто:
portless myapp dev # https://myapp.localhostportless сам выпустит сертификат и даст доступ к https. Поддерживаются разные фреймворки, порты, под-домены, монорепозитории. Из интересного - подхват git worktree. Если portless видит, что приложение запущено из worktree, то название worktree становится именем домена https://github.com/vercel-labs/portless #development #tools #localhost #vercel #devtools #github
spawn-agent
Библиотека, использующая
Vercel AI SDK для запуска локальных AI-агентов на компьютере через Agent Client Protocol. Поддерживает Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Factory Droid, Pi.
Пример запуска с кастомными cwd, разрешениями и mcp
import { generateText } from "ai";
import { spawnAgent } from "spawn-agent";
const { text } = await generateText({
model: spawnAgent("codex", {
cwd: "/Users/me/project",
permission: "auto-allow",
mcpServers: [
{
type: "stdio",
name: "filesystem",
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
},
],
}),
prompt: "Summarize README.md in three bullets",
});
https://github.com/millionco/spawn-agent
#development #ai #agents #acp #vercel #githubДайджест за 2026-05-11 - 2026-05-15
How we made the Angular Compiler faster using AI
VoidZero сделали эксперимент — с помощью ИИ сделали компилятор Angular на Rust (на базе Oxc). Итоговые цифры: в 6 раз быстрее чем Angular CLI и в 20 раз быстрее Webpack + @ngtools/webpack на Bitwarden.
The Prompt API
Команда Chrome встроила API для работы с локальным Gemini
Zed is 1.0
Редактор Zed прошел огромный путь и наконец-то получил версию 1.0. Пять лет разработки, собственный UI-фреймворк GPUI на Rust, своя архитектура без Electron.
——————————————
Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам.
——————————————
Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
Zed is 1.0
Редактор Zed прошел огромный путь и наконец-то получил версию 1.0. Пять лет разработки, собственный UI-фреймворк GPUI на Rust, своя архитектура без Electron.
Помню ставил его еще на ранних этапах, когда обещали просто быструю работу. Затем ставил, когда туда завезли удобный механизм для парного программирования. Потом уже не ставил, но слышал что завезли AI-агентов. Теперь, видимо, интегрировали ACP. Надо еще раз поставить и посмотреть, что там есть.
https://zed.dev/blog/zed-1-0
#development #zed #editor #release #rust
The Prompt API
Команда Chrome встроила API для работы с локальным Gemini
API выглядит так:
const session = await LanguageModel.create();
const result = await session.prompt('Write me a poem');
Браузер скачивает модель и затем использует ее на устройстве пользователя. Системные требования: 22 ГБ на диске, GPU >4GB VRAM или 16GB RAM. Поддерживает текст, изображения и аудио на входе, JSON Schema для структурированного вывода, стриминг через promptStreaming(), сессии с историей и клонирование.
API хорошо продумано - там и управление сессиями, и структурированный ввод-вывод, и добавление сообщений в контекст, и работа с аудио и видео.
Реализация такого API - это очень важный шаг.
Для разработчиков это возможность интегрировать AI-опыт, к которому привыкли пользователи смартфонов. При этом не нужен никакой бекенд - все работает на устройстве пользователя.
Для рынка это понятный ход Google: проложить свой API как стандарт для встроенного AI в браузере, пока другие игроки не смогли закрепиться в этом поле.
Пока API доступно в бетке хрома (138+) за флагом, но тренд очевиден — готовимся к возможности запускать локальные модели прямо из JS-кода в браузере. Хотя, конечно, это может привнести новые проблемы. Например, это API будет доступно и аналитическим скриптам, которые могут запускать локальные модели для сбора какой-то информации и излишне нагружать устройство.
https://developer.chrome.com/docs/ai/prompt-api
#development #ai #chrome #gemini #api #googleHow we made the Angular Compiler faster using AI
VoidZero сделали эксперимент — с помощью ИИ сделали компилятор Angular на Rust (на базе Oxc). Итоговые цифры: в 6 раз быстрее чем Angular CLI и в 20 раз быстрее Webpack + @ngtools/webpack на Bitwarden.
За счёт чего: По факту срезали углы. Angular-компилятор компилирует HTML-шаблоны в TypeScript, а потом запускает компиляцию TS, включая проверку типов. Чуваки же сделали компиляцию шаблонов на Rust, минуя проверку TS. Основной прирост не от Rust, а от того, что не надо гонять TypeScript Compiler на каждую сборку.
Причем тут AI: Автор работал с Claude Code и Codex.
- Сначала Claude Code в Plan Mode проанализировал весь Oxc-проект: как там устроен парсер, семантика, трансформеры, тесты.
- Дал промпт, в котором Claude выступал оркестратором: диспатчил задачи саб-агентам (discover → fixer) и гонял цикл, пока тесты не проходят. Claude мог работать автономно 4–6 часов подряд (видимо пока не выжирал 5 часовые лимиты)
- Для проверки работы нового компилятора шаблонов брались существующие репозитории и прогонялись на дефолтном компиляторе и на новом. Если итоговый код расходился - это знак что надо править компилятор.
- Далее подключил Codex для code review. Codex искал несовпадения control flow с оригинальным TS-компилятором (например, неправильный guard в
@for track optimization, порядок @default в @switch)
- Codex фидбек отдавали обратно Claude Code — он фиксил и добавлял тесты
- Ещё ~3 недели циклов code review → fix, пока Codex не перестал находить серьёзные проблемы
В общем, заметка больше интересна как хорошее описание того, как работать с ИИ-агентами. Достаточно подробно описана методика работы и все промпты. Рекомендую посмотреть.
https://voidzero.dev/posts/oxc-angular-compiler
#development #angular #oxc #rust #vite #ai #voidzeroДайджест за 2026-05-04 - 2026-05-08
WebKit PR #63082: site-specific quirk для mouse-focus
Вот так вот разрабатываешь сайт, делаешь разные хаки для корректной работы в специфичных кейсах в safari, firefox, webview. А потом оказывается, что если ты достаточно крупный сайт, то это браузеры будут адаптироваться под тебя, а не ты под них. В WebKit смержили интересный PR - костыли, меняющие поведение браузера на thesaurus.com и dictionary.com
What's actually new in JavaScript (and what's coming next)
Хороший обзор уже вышедших новшеств ES2025 и грядущих новшеств в ES2026. Обзор очень большой - там приводится и краткая история изменений, и примеры в стиле "до и после" и в каких версиях браузеров уже доступны изменения. Поэтому делаю вам обзор на обзор, чтобы вы могли быстро ознакомиться с изменениями.
Announcing Rspack 2.0
Вышел Rspack 2.0. За полтора года прошли путь от 100К еженедельных загрузок до 5М. В 2.0 начинают отходить от webpack-дефолтов, но совместимость с webpack-экосистемой сохраняют.
Обзор программы HolyJS
Буду смотреть HolyJS в онлайне. Точнее один день буду смотреть онлайн, а второй в записи т.к. конфа выпадает на мой день рождения, а у меня там другие планы. Конфа будет проходить 14-15 мая в Москве. Предварительно я глянул тезисы докладов, чтобы разобрать их на категории "мастхев", "сойдет", "точно мимо". Делюсь с вами своим видением программы HolyJS. Но если коротко - программа очень хорошая, хотя некоторые доклады очень странные.
——————————————
Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам.
——————————————
Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
Последняя секция - что-то странное, хардкорное или гиковое. Лично я не буду смотреть, но думаю найдутся люди, для которых тема супер актуальна
Послушный дом и JS
Умный дом на JS или JS + IoT. Но по мне, если уж делать свой IoT, то надо хардкорить на C и получать кайф не только от крафтовой железки, но и от крафтового кода.
Минимально жизнеспособный дизайн: UX для каждого 🐟
Как фронтендеру сделать хороший UX
Я не знаю JavaScript 🐟
Доклад про фундаментальные основы JS. С одной стороны может быть интересно, потому что в JS есть контр-интуитивные штуки, с другой - зачем оно надо?
Без исходников — UT99 мультиплеер в браузере
Мультиплеер для Unreal Tournament прямо в браузере - это круто, но лично я применить не смогу.
FSD — это беда, спасет только FDA! 🐟
В Fractal Domain Architecture ключевой принцип "разделяй систему на домены, а домены на под-домены". Доклад одновременно может быть полезным, если углубится в тонкости применения этого принципа, а может быть поверхностным, если фокус будет вокруг обзора альтернатива
Чистый Node.js: разработка бэкенда без фреймворков
В докладе расскажут как сделать свой Express. Тут вспоминается мем с троллейбусом из буханки хлеба. Можно, но зачем?
Креативный код без магии: как графика прокачивает перформанс и мышление
Хардкор про оптимизацию рендера в Tree.js
Теперь перейдем к практикам работы с кодом
Модульный BFF во фронтенде 👀🔥
BFF - паттерн, когда мы создаем бекенд для фронтенда, который закрывает всю сложность работы с реальным бекендом и адаптирует сценарии под фронтенд. Если делать это наивно, то можно получить проблему в стиле "призрачный монолит" - монолита вроде нет, но связаность в bff делает больно. В докладе рассказывают как эту проблему решает plugin-based архитектура
Реактивный CSS 🔥
Еще один шаг в сторону должности css-архитектора. CSS стал настолько мощным, что много логики по отображению можно перейти туда. Одновременно он стал настолько сложным, что появляется возможность для открытия позиции CSS-архитектор, которую еще и ИИ не сможет заменить так быстро, как JS-разработчика
Observability микрофронтендов 👀🔥
Микрофронтенды должны быть наблюдаемыми. Это естественное требование, если у вас работа начинает строиться вокруг микрофрнтендов. Авито рассказывает о своем опыта выстраивания обсервабилити
Типизируем не только код: договоренности между слоями 👀🔥
Типизация - это хорошо. Но сквозная и полная типизация - это сложно. В докладе расскажут про практики, которые помогают типизировать на проекте все - от css до дизайн-токенов
PWA вместо App Store: реальный опыт замены нативного iOS-приложения и технические ограничения 👀
Редко компании делятся своим опытом по каким-то специфичным областям. PWA - одна из них. РСХБ рассказывает про свой опыт использования PWA.
2 доклада про работу в фреймворках
- Мифы и легенды о современном Angular: что не так с вашими представлениями
- Искусство Vue-компонентов
Мы переписывали фреймворк три раза и сделаем это снова: тяжелые уроки Vuetify
Интересно послушать именно как историю развитие сложного технического продукта.
Теперь перейдем к перформансу
Degradation вместо downtime: Node.js под пиковыми нагрузками и DDoS 👀🔥
Многие не знают, но когда клиент отменяет запрос, то это не значит, что сервер перестает работать. Надо остановить работу в nodejs, балансере и куче других мест и часто это не делается автоматически. Более того, когда то давно я слушал выпуски подлодки и там чел, который глубоко погружен в специфику работы ОС, рассказывал, что когда мы из кода закрываем соединение, ОС может держать открытым сокет потому что может.
В докладе разбирается реальный инцидент с тем, что пользователя отменяли запросы, но работа сервера не останавливалась и как ее решить.
Кеширование данных на максималках. Как построить кеш для энтерпрайза
Кеширование, это одновременно и просто, и сложно. По тезисам кажется, что тут будет больше про "сложно".
Нефронтендерские оптимизации: ускорение без единой строчки JS 🔥
Часто, когда говорят "надо ускорить сайт", многие разработчики воспринимают как "надо оптимизировать код", хотя 99% работы - это настройка всего вокруг кода. В докладе скорее всего базовая база по улучшению перформанса не через код, а через инфраструктуру. Но базовая база в 2к26 такая, что можно книгу писать
Как находить утечки памяти: практический воркшоп в Chrome DevTools
Воркшоп про поиск утечек через Chrome DevTools. Звучит полезно, но выглядит как кандидат в скилл)
За пределами Web Vitals
Много внимания в индустрии уделяется метрикам Web Vitals, но на самом деле перформанс - это не только про Web Vitals, но и про рантайм перформанс. Ребята рассказывают кейс из опыта разработки графического редактора
Я ПРОЧИТАЛ ВСЕ issue:memory ПО NODEJS, И ВОТ ЧТО Я УЗНАЛ 🐟
Кликбейт-название, но изучение работы сообщества nodejs может привести как к интересным инсайтам, так и к чему-то совершенно банальному или неинтересному
Сначала разберем горяченькое - ИИ. Сейчас ничего в IT не может обойтись без упоминания ИИ, поэтому на конференциях тоже обозревают эту тему.
Оффтоп: есть некоторая ирония в том, что конференции одни из первых пострадавших от ИИ. Зачем ходить на доклады, если всю инфу можно спросить у chatgpt и тот соберет обзорный доклад по теме не хуже человека? Конференциям теперь недостаточно просто показывать доклады, надо искать что-то еще.
Возвращаемся к блоку про ИИ. Доклады на конфе разные. По крайней мере по тезисам некоторых докладов кажется, будто чуваки сделали освоили переиспользование скиллов и пришли об этом рассказывать.
Анатомия агентских систем 👀🔥
Как, вы еще не делаете свой harness? Все в твиттере делают свой harness и вы должны! Доклад про то как в базе работают ИИ-агенты и как их делать. Одновременно базовый доклад и инструкция по построению своего *harness* чтобы похвастаться перед друзьями. Ну или решить какую-то свою кастомную задачу, с которой доступные агенты справляются хуже, дольше или дороже. *Дед этот harness двадцать лет пилил, а вы выбрасываете*.
Говорят, AI уже везде. Раз такое дело, может быть, что-то автоматизируем? 🔥👀
Очевидная идея: если агент может делать простые правки, то если дать ему простых задач, он их выполнит. Проблему в том, что никто не хочет описывать простые задачи для агента. Но на самом деле простые задачи уже есть у вас в Jira (простые баги) или в логах (ошибки, мониторинг, алертинг). В докладе рассказывают как сделать такую систему, которая разбирает простые задачи и выполняет их с PR в кодовую базу.
Сам недавно пробовал делать что-то подобное в рабочем проекте. Подход рабочий, хотя, конечно, это сложнее чем просто "дай промпт + скиллы + mcp и жди что все будет ОК"
WebMCP — на стыке фронтенда и AI-агентов 👀
Уже в канале обозревал, что крупные компании предложили инциативу WebMCP - когда на сайте есть разметка тулинга для агентов, чтобы агенты могли эффективно взаимодействовать с сайтом. Интересно послушать доклад про это, особенно если там будут реальные кейсы.
AI-Driven UI: каким станет UI в эпоху агентов 👀
Тоже уже были обсуждения в канале. Зачем мы делаем крафтовые интерфейсы, если агент может сам собрать интерфейс для пользователя? AIUI как раз про это. В докладе будет и про общую движуху и про конкретную реализацию подхода.
Буду смотреть HolyJS в онлайне. Точнее один день буду смотреть онлайн, а второй в записи т.к. конфа выпадает на мой день рождения, а у меня там другие планы. Конфа будет проходить 14-15 мая в Москве. Предварительно я глянул тезисы докладов, чтобы разобрать их на категории "мастхев", "сойдет", "точно мимо". Делюсь с вами своим видением программы HolyJS. Но если коротко - программа очень хорошая, хотя некоторые доклады очень странные.
Легенда по оценкам:
- По умолчанию, если ссылка на доклад есть в посте - значит он достаточно хороший и может зайти значимому количеству людей
- 👀 Я точно буду смотреть
- 🔥 Супер рекомендую т.к. инфа в докладе может быть базой для реализации сложных задач
- 🐟 По тезисам не до конца понятно, это "искал медь, а нашел золото" или "разговору то было", т.е. доклад может быть как очень крутым, так и средненьким. В зависимости от того, что конкретно рассказывает спикер
Т.к. докладов много и обзоры не поместятся в 1 пост, то в каждой секции свой пост + навигация прямо тут
- Доклады про ИИ
- Доклады про перформанс
- Доклады про практики
- Доклады про все остальное
Announcing Rspack 2.0
Вышел Rspack 2.0. За полтора года прошли путь от 100К еженедельных загрузок до 5М. В 2.0 начинают отходить от webpack-дефолтов, но совместимость с webpack-экосистемой сохраняют.
## Производительность
- Сборка ускорилась до 100% по сравнению с 1.0 и ~10% к 1.7. Также тратится на 20% меньше памяти.
- Почистили зависимости:
-
@rspack/dev-server с 192 до 1 (размер с 15 MB до 1.4 MB)
- @rspack/cli вообще без зависимостей
- Модули, которые не являются ядром rspack, вынесли в опциональные зависимости. Например Module Federation
- Часть зависимостей заменили на более легковесные, например express заменили на connect-next
- Часть зависимостей теперь вкомпиливаются прямо в пакет.
## Оптимизация вывода
- Tree shaking лучше: CJS-деструктуризация (const { bar } = require('./foo')), property access (foo.bar, foo.baz()), inline на dynamic import ((await import('./foo')).bar).
- Аннотации компилятора: если вы пометите функцию комментарием #__NO_SIDE_EFFECTS__ , то rspack ее вырежет если её результат не используется. Включается через experiments.pureFunctions.
- Tree Shaking применяется и к Module Federation
## Улучшенный ESM
- Пакеты Rspack теперь pure ESM (без CJS-сборок)
- import.meta: в ESM-выводе неизвестные свойства сохраняются, а не заменяются на undefined.
- import defer: поддержка синтаксиса через экспериментальную опцию
- output.library.type: 'modern-module' — чистый ESM для библиотек, сохраняет структуру исходной директории, минимизирует дублирование.
## Новые фичи
- React Server Components (экспериментально)
- Поддержка алиасов #/ прямо из imports package.json, не нужна больше отдельная настройка в конфиге rspack
- Лоадеры и минификаторы наследуют target из верхнеуровневой конфигурации. Теперь достаточно объявить целевой рантайм 1 раз.
- detectSyntax: 'auto' в swc-loader: один rule на .js,.jsx,.ts,.tsx, парсер сам разберётся.
- resolveImport в CSS: можно управлять, какие @import резолвить, а какие оставить браузеру.
- moduleIds: 'hashed' — короткие стабильные хеши как ID модулей.
- splitChunks.enforceSizeThreshold — принудительно дробит чанки по размеру, игнорируя лимиты на число запросов.
Миграция
Прикольно, что Rspack выпустили скилл для AI-агентов для миграции. Если вы хотите мигрировать, просто подключаете скилл npx skills add rstackjs/agent-skills --skill rspack-v2-upgrade и отправляете агента мигрировать ваш проект.
https://rspack.rs/blog/announcing-2-0
#development #rspack #release #bundlerWhat's actually new in JavaScript (and what's coming next)
Хороший обзор уже вышедших новшеств ES2025 и грядущих новшеств в ES2026. Обзор очень большой - там приводится и краткая история изменений, и примеры в стиле "до и после" и в каких версиях браузеров уже доступны изменения. Поэтому делаю вам обзор на обзор, чтобы вы могли быстро ознакомиться с изменениями.
Iterator helpers (ES2025)
Уже было в канале, но повторение не будет лишним. Добавили хелперы для итераторов, аналогичные методам массива, что позволяет создавать эффективные пайплайны для обработки данных прямо на интераторах
function* naturalNumbers() {
let n = 1;
while (true) yield n++;
}
const firstTenEvenSquares = naturalNumbers()
.filter(n => n % 2 === 0)
.map(n => n * n)
.take(10)
.toArray();
Set methods (ES2025)
Операции над множествами (пересечение, объединение и тд) теперь прямо в Set. Методы intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
Эти методы создают новый Set, а не меняют существующий.
JSON modules (ES2025)
Нативный импорт JSON (наконец-то!)
import config from './config.json' with { type: 'json' };
Никаких fetch + JSON.parse и настройки сборщиков.
Promise.try (ES2025)
Фича была в Bluebird 10+ лет и теперь попала в стандарт. Позволяет обернуть функцию с неизвестным поведением (sync/async/throw error) в один Promise с единым .catch()
До
try {
const result = fn();
Promise.resolve(result)
.then(r => processResult(r))
.catch(err => handleAnyFailure(err));
} catch (err) {
handleErr(err);
}
После
Promise.try(() => thirdParty.doThing())
.then(result => processResult(result))
.catch(err => handleAnyFailure(err));
В отличие от старого workaround'а Promise.resolve().then(fn) - не добавляет лишний микротаск.
RegExp.escape (ES2025)
Безопасное экранирование пользовательского ввода для регулярок. Изменение предлагалось в стандарт еще 15 лет назад.
const regex = new RegExp(RegExp.escape(userInput), 'gi');
Intl.DurationFormat и Intl.Locale (ES2025)
Форматирование длительности ("2 hours, 15 minutes") и метаданные локали (weekInfo, hourCycles, getCalendars)
Что ожидаем в ES2026
Math.sumPrecise (ES2026)
Довольно старая и известная проблема - 0.1 + 0.2 !== 0.3. Это особенность работы чисел с плавающей точкой, которая неприемлема в различных доменах (например, в финансовом). Уже есть различные решения, но в ES2026 ожидаем еще 1го - метод для точной суммы чисел
Как работает сейчас
const cents = Array(10000).fill(0.1);
cents.reduce((a, b) => a + b); // 1000.0000000001588
const values = [1e20, 1, -1e20];
values.reduce((a, b) => a + b); // 0, хотя ожидали 1
Как будет работать
Math.sumPrecise(cents); // 1000
Math.sumPrecise(values); // 1
Iterator.concat (ES2026)
Склеивает итераторы без генератора-обёртки:
Iterator.concat(first(), second());
Map.getOrInsert / getOrInsertComputed (ES2026)
Паттерн "Достань, значение, если есть. Если нету - создай и достань" будет встроено в Map
// Было:
if (!counts.has(word)) counts.set(word, 0);
counts.set(word, counts.get(word) + 1);
// Стало:
counts.set(word, counts.getOrInsert(word, 0) + 1);
Array.fromAsync (ES2026)
Метод для сборки асинхронного итератора в массив
До
const allItems = [];
for await (const item of fetchPages()) {
allItems.push(item);
}
После
const allItems = await Array.fromAsync(fetchPages());
JSON.parse с source text (ES2026)
При парсинге JSON можно будет получить 3-й аргумент с исходным текстом поля. Это, например, позволяет парсить большие числа без потери точности
Также в статье большой блок про то, какие еще изменения не попали в стандарт и почему они не попали. Но в обзор на обзор это уже не влезет
Также автор создал готовый плагин и скилл для AI-агентов, которые обучают агентов использовать новые возможности языка.
https://neciudan.dev/whats-new-in-javascript
#development #javascript #es2025 #es2026 #tc39 #language-featuresWebKit PR #63082: site-specific quirk для mouse-focus
Вот так вот разрабатываешь сайт, делаешь разные хаки для корректной работы в специфичных кейсах в safari, firefox, webview. А потом оказывается, что если ты достаточно крупный сайт, то это браузеры будут адаптироваться под тебя, а не ты под них. В WebKit смержили интересный PR - костыли, меняющие поведение браузера на thesaurus.com и dictionary.com
https://github.com/WebKit/WebKit/pull/63082
#webkit #safari
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
