Инструменты программиста
Полезные инструменты для программистов — бесплатные и платные Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Регистрация в перечне РКН: https://tprg.ru/mX0S
Больше📈 Аналитический обзор Telegram-канала Инструменты программиста
Канал Инструменты программиста (@prog_tools) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 930 подписчиков, занимая 9 495 место в категории Технологии и приложения и 50 034 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 930 подписчиков.
Согласно последним данным от 29 августа, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -83, а за последние 24 часа — -5, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 9.23%. В первые 24 часа после публикации контент обычно набирает 5.95% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 194 просмотров. В течение первых суток публикация набирает 770 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 3.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, git, docker, install, api.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Полезные инструменты для программистов — бесплатные и платные
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Регистрация в перечне РКН: https://tprg.ru/mX0S”
Благодаря высокой частоте обновлений (последние данные получены 30 августа, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
Загрузка данных...
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 30 августа | +3 | |||
| 29 августа | +1 | |||
| 28 августа | 0 | |||
| 27 августа | +5 | |||
| 26 августа | 0 | |||
| 25 августа | 0 | |||
| 24 августа | +4 | |||
| 23 августа | +1 | |||
| 22 августа | +4 | |||
| 21 августа | 0 | |||
| 20 августа | 0 | |||
| 19 августа | +1 | |||
| 18 августа | +3 | |||
| 17 августа | +1 | |||
| 16 августа | 0 | |||
| 15 августа | 0 | |||
| 14 августа | +1 | |||
| 13 августа | +1 | |||
| 12 августа | 0 | |||
| 11 августа | +1 | |||
| 10 августа | +1 | |||
| 09 августа | +1 | |||
| 08 августа | +1 | |||
| 07 августа | +1 | |||
| 06 августа | +1 | |||
| 05 августа | +2 | |||
| 04 августа | +4 | |||
| 03 августа | +1 | |||
| 02 августа | +2 | |||
| 01 августа | +5 |
brew install age. На Linux: apt install age.
В версии 1.3.2 усилили проверки входных данных. Утилита отвергает заголовки больше 2 МБ, файлы с более чем 1024 получателями и некорректные ключи SSH. Открытый текст не в UTF-8 больше не выводится в терминал сам собой: принудительно это включается через -o -. Для релиза подготовили сборки под Windows ARM64 и macOS на Intel.
GnuPG выигрывает, когда нужна вся экосистема OpenPGP: подписи, сети доверия, совместимость с чужими инструментами и почтой. age выигрывает простотой для обычного шифрования файлов и юниксовых конвейеров.
К 30 августа репозиторий age собрал 23 400 звёзд на GitHub.
@prog_tools| 2 | xenarch-guard: песочница для команд ИИ-агента без Docker и без прав администратора
Агент с доступом к командной строке удобен ровно до того момента, когда вызывает инструмент, лезущий не туда. Docker проблему закрывает, но тащить демон и права администратора ради одного вызова — перебор.
xenarch-guard запускается как обёртка: xenarch-guard --allow-write ./workspace python script.py — и python видит только ./workspace, а опасные системные вызовы отрезаны. Внутри Landlock ограничивает пути, seccomp-bpf фильтрует системные вызовы; оба механизма ядра Linux работают без привилегий. Обёртка не форкает процесс, а заменяет себя на команду через execve(), так что родителя, к которому можно обратиться, не остаётся.
Очевидная альтернатива — bubblewrap: он старше, гибче и умеет полноценные пространства имён с монтированием. Но и настраивать его дольше, а тут одна строка перед командой. Сравнивать с Docker честнее по цене входа: демона и root-прав здесь нет вовсе.
В нашем канале Tproger разобрали подробнее.
@prog_tools | 621 |
| 3 | Firewall, IDS или балансировщик ведут себя странно только на настоящем трафике, а настоящий трафик приходит в неудобное время и не повторяется. tcpreplay решает это в лоб: берёт записанный pcap и проигрывает его в сетевой интерфейс с нужной скоростью, сколько угодно раз подряд.
🔘 Набор состоит из нескольких утилит: tcpprep делит дамп на клиентскую и серверную стороны, tcprewrite переписывает адреса и заголовки второго, третьего и четвёртого уровней, tcpreplay отправляет результат в один интерфейс или в два сразу.
🔘 В версии 4.6.0 переработали быстрый путь через AF_XDP: на обычной карте e1000 отправка выросла примерно с 13 тысяч пакетов в секунду до 305 тысяч, это 941 Мбит/с. Режим --io-uring шлёт пакеты пачками вместо системного вызова на каждый и тратит примерно на 11 процентов меньше процессора.
🔘 Тогда же починили давнюю ошибку с jumbo-кадрами: кадр больше MTU, которому не хватало одной страницы кольцевого буфера, молча обрезался до 4096 байт.
🔘 Версия 4.6.1 вышла 15 августа и посвящена прежде всего безопасности и укреплению кода. Проект завёл три цели фаззинга — на разбор pcap, на правила fragroute и на парсер --services — и отдал их в OSS-Fuzz. За первые дни работы нашлось девять дефектов, от записи за границей кучи до зависания на исчерпании ресурсов; все исправлены в релизе вместе с тремя отдельно сообщёнными уязвимостями, две из которых с оценкой 7,0 и выше.
Очевидная альтернатива — Ostinato: у него есть графический интерфейс, и конструировать пакеты руками в нём удобнее. Но если сценарий уже записан в дамп, воспроизводимый прогон и автоматизация из терминала — это про tcpreplay. Звёзд у репозитория 1344 на 27 августа.
@prog_tools | 678 |
| 4 | cliamp — музыкальный плеер для терминала, сделанный по мотивам Winamp. Плейлист, параметрический эквалайзер и спектроанализатор рисуются прямо в текстовом окне, а играть он умеет локальные файлы, потоки, подкасты и то, что лежит в YouTube, SoundCloud, Bandcamp, Spotify, Navidrome, Plex, Jellyfin и Audiobookshelf.
Ветка 2.0 пока в предрелизе: 26 августа вышел v2.0.0-rc.2 с зеркальным спектроанализатором, режимом 60 кадров в секунду и упрощённым режимом воспроизведения. Стабильной остаётся 1.63.2 от 13 августа. Звёзд у репозитория 3751 на 27 августа.
Очевидная альтернатива — cmus: он легче и старше, и если задача — управлять локальной фонотекой с клавиатуры, брать стоит его. cliamp берёт числом источников и картинкой, но для AAC, ALAC, Opus и WMA ему нужен ffmpeg, а для YouTube, SoundCloud и Bandcamp — yt-dlp.
Ставится через brew install bjarneo/cliamp/cliamp, есть пакет в AUR и запуск одной командой nix run github:bjarneo/cliamp.
@prog_tools | 757 |
| 5 | Tailcat — это netcat, у которого канал уже зашифрован. Tailscale открыла его исходники в августе на своей конференции TailscaleUp: одна машина запускает сервер и печатает короткий токен, вторая подключается по этому токену, трафик идёт через WireGuard.
Аккаунт Tailscale при этом не нужен — утилита берёт сетевой слой продукта, но не его control plane. Соединение сначала поднимается через ретрансляторы DERP, а потом пытается перейти в прямой UDP-канал между машинами.
Root тоже не нужен, и это главное отличие от обычного VPN: всё живёт в user space, без tun-интерфейса, без правки таблиц маршрутизации и без настройки DNS.
Что умеет, кроме передачи потока: пробросить локальный порт на удалённую машину, поднять на Linux и macOS встроенный SSH-сервер, когда системного sshd на той стороне нет, и работать прокси по SOCKS5.
Оговорка от авторов: формат токенов, CLI и Go-API пока без гарантий совместимости — в скрипты, которые потом никто не будет чинить, ставить рано.
@prog_tools | 786 |
| 6 | Hister индексирует полное содержимое страниц, которые вы открывали, и локальных файлов, а потом ищет по ним — из веб-интерфейса, терминала, командной строки или по MCP. Это ответ на ситуацию «я это точно читал, но не помню где»: история браузера хранит только заголовки и адреса. 23 августа вышла версия 0.18.0.
🔘 Строка поиска подсказывает запросы из истории, алиасы, поля, сортировки и значения фасетов с числом результатов. Сортировки задаются прямо в запросе: sort:date, sort:visits, sort:domain, минус перед значением разворачивает порядок.
🔘 Появились извлекатели для Twitter, Bluesky, Reddit и Discourse: сохраняются авторы, даты, реакции и структура тредов, а ленты и треды можно разложить на отдельные документы.
🔘 hister import file принимает PDF, DOCX, Markdown, Org mode и обычный UTF-8 — файлами или целыми каталогами. Разбор идёт в процессе командной строки, поэтому серверу доступ к исходным файлам не нужен.
🔘 Инкрементальный импорт из Linkding, Readeck и wallabag, а команда hister update меняет владельца, метку, заголовок или язык у всего, что нашлось по запросу, с пробным прогоном и подтверждением.
🔘 При обновлении с 0.17.0 придётся один раз заново войти в веб-интерфейс и расширение; токены доступа не затронуты.
ripgrep и Recoll проще, быстрее и не требуют сервера, и для поиска по локальным файлам их достаточно. Hister нужен там, где искать надо разом по прочитанному в браузере, сохранённым закладкам и файлам.
3 тысячи звёзд на 26 августа. Язык: Go. Лицензия: AGPL-3.0.
@prog_tools | 793 |
| 7 | terminal-notifier — маленькая утилита для macOS, которая показывает системное уведомление из шелла: собралась сборка, упали тесты, доехал деплой. 23 августа вышла версия 3.0.0 — первый релиз за девять лет.
Всё переписано на Apple UserNotifications: старый NSUserNotification объявлен устаревшим ещё в macOS 11 и с тех пор ломался по частям. Бинарник универсальный, минимальная версия системы — 10.14; для более старых остаётся ветка 2.0.0.
🔘 Вернулись -action TITLE и -reply, которые убрали в 2.0.0 из-за приватного API. Они ждут человека и печатают ответ в stdout, так что скрипт может ветвиться по нажатой кнопке; ожидание ограничивается флагом -timeout.
🔘 -diagnose объясняет, почему уведомления не видно: разрешения, стиль баннера, звук, Фокусирование, сводка по расписанию, запущен ли Центр уведомлений.
🔘 Коды возврата со 2 по 6 различают неверный аргумент, проблему с разрешениями, таймаут и отказ сервиса.
🔘 Уведомления без -group перестали затирать друг друга, -remove действительно удаляет доставленные, а -contentImage больше не удаляет переданный ему файл.
🔘 Флаги -sender, -appIcon и -ignoreDnD теперь только печатают предупреждение и ничего не делают — старые скрипты не падают, но и эффекта нет.
Штатный osascript -e 'display notification ...' уже стоит в системе и ничего ставить не нужно — для одноразового «готово» этого хватает. terminal-notifier берёт своё там, где нужны группировка, удаление, звук, коды возврата и ответ пользователя.
7,3 тысячи звёзд на 26 августа. Язык: Objective-C. Лицензия: MIT.
@prog_tools | 835 |
| 8 | PocketBase — бэкенд в одном исполняемом файле: внутри SQLite, пользователи, файлы, REST API, подписки в реальном времени и админка. Рядом не нужны ни отдельная база, ни очередь.
23 августа вышла версия 0.40.0:
🔘 ошибки команд и перехваченные паники доходят до app.Start(): программа завершается ненулевым кодом, но хук app.OnTerminate всё равно отрабатывает;
🔘 появился DELETE /api/logs и кнопка в интерфейсе — удалить все логи, не трогая настройку хранения maxDays;
🔘 размер Log.Data ограничен примерно 16 килобайтами на случай, когда в лог пишут непроверенные пользовательские данные; лишнее помечается флагом __pb_truncated__;
🔘 создание резервной копии больше не держит базу в транзакции;
🔘 в заголовки по умолчанию добавлен Cross-Origin-Opener-Policy: same-origin;
🔘 modernc.org/sqlite обновлён до 1.57.0, а защитный режим SQLite включается по умолчанию через _defensive=1.
Порог входа поднялся: нужен Go 1.27 и encoding/json/v2. Автор советует сначала проверить приложение локально — в Go 1.27 старый encoding/json переведён на v2 под капотом и обратно совместим не полностью.
Supabase выигрывает как управляемый сервис на PostgreSQL, когда нужны масштабирование и команда. PocketBase выигрывает, когда приложение должно жить одним файлом на одной машине; до версии 1.0 его API ещё меняется.
60,8 тысячи звёзд. Язык: Go. Лицензия: MIT.
@prog_tools | 920 |
| 9 | Мышь Logitech умеет больше, чем показывает система: переназначение кнопок, DPI, поведение колеса, жесты. Штатно это настраивается только через Logitech Options+, а под Linux его просто нет.
OpenLogi говорит с устройствами по HID++ напрямую — без аккаунта и телеметрии. Вся конфигурация лежит в одном TOML-файле, который можно синхронизировать между машинами, и рядом с интерфейсом есть полноценная командная строка. 23 августа вышла версия 0.7.10:
🔘 ошибки открытия HID теперь видны в статусе агента, а не гасят работу молча;
🔘 интерфейс проверяет код возврата вспомогательного процесса при запуске агента;
🔘 openlogi list читает список устройств у уже запущенного агента;
🔘 нажатие на колесо-качельку перестало вызывать App Exposé, а прокрутка идёт на родную величину колеса;
🔘 корректно пересобранные записи об устройствах больше не выбрасываются.
Options+ выигрывает официальной поддержкой и обновлением прошивок, и запускать их одновременно нельзя: приложения дерутся за доступ по HID++, ресивером владеет кто-то один. Сам проект честно пишет, что находится в активной разработке и стабильным пока не является. OpenLogi берёт своё там, где Options+ нет вовсе, и там, где настройки хочется держать текстом.
Больше 15 тысяч звёзд. Язык: Rust. Лицензия: Apache-2.0 или MIT на выбор.
@prog_tools | 993 |
| 10 | tuicr — просмотрщик диффов для терминала, где можно оставлять построчные замечания, как в интерфейсе пул-реквеста, и одной командой отправить их ревью в GitHub, GitLab или Bitbucket. Управление вимовское, работает поверх git, jj и Mercurial.
🔘 Смотреть можно незакоммиченные правки, диапазон коммитов или чужой пул-реквест. Дифф идёт сплошным потоком по всем файлам, как на вебе.
🔘 Отметки «файл просмотрен» сохраняются между запусками, так что большое ревью можно бросить и вернуться. Клавиша H прячет уже отмеченное.
🔘 20 августа вышла версия 0.23.1, двумя днями раньше — 0.23.0 с командой :summary.
git diff универсальнее и не требует авторизации, но построчных замечаний и памяти о прогрессе у него нет. gh pr review выставляет официальный статус ревью, чего локальный просмотр не умеет, зато инлайн-комментарии через него не оставить. Для отправки tuicr нужны авторизованные gh, glab или bkt; у Bitbucket пока нет Request changes и черновиков. Звёзд на GitHub 2820 на 21 августа.
@prog_tools | 1 014 |
| 11 | Есть у нас один знакомый разработчик, который давно не отдыхал.
Последний отпуск — где-то в районе позапрошлого года. Чемодан на антресолях, паспорт неизвестно где, в комнате — бардак.
Сам он не соберётся, нужна ваша помощь → https://tprg.ru/0Q5k | 980 |
| 12 | bottom, в командной строке btm, — системный монитор для терминала: процессор, память, swap, сеть, диски, температуры, батарея и дерево процессов графиками на одном экране. 13 августа вышла версия 0.14.8, у проекта 13,9 тыс. звёзд на 17 августа.
🔘 релиз небольшой: починены закрытие меню сортировки по Enter, обработка значения swap в cgroups v1 и ссылки в JSON-схеме конфига;
🔘 графики масштабируются по времени, есть фильтры процессов, темы и собственные раскладки виджетов;
🔘 одна и та же сборка работает на Linux, macOS и Windows.
Альтернатива — htop: он есть в каждом дистрибутиве, проще и понятнее с первого взгляда, и для задачи «найти и убить процесс» его хватает. bottom берёт графиками во времени и тем, что показывает всё сразу, включая сеть и температуры; из той же ниши btop с более нарядным интерфейсом.
@prog_tools | 982 |
| 13 | Network Doctor — консольная утилита, которая отвечает на вопрос «интернет вроде есть, а сервис не работает — где именно рвётся». Одна команда netdoc github.com прогоняет цепочку интерфейс, DNS, TCP, TLS, HTTP, прокси и path MTU и пишет вердикт обычным языком: DNS упал, всё зависимое пропущено, чинить надо запись. 14 августа вышла версия 1.11.4; у репозитория 253 звезды на 17 августа, проект молодой.
🔘 netdoc host:22 проверяет путь до SSH и баннер, netdoc без цели — локальный интерфейс, выход в интернет, прокси и Wi-Fi;
🔘 --watch ловит плавающие сбои, --json и коды выхода 0/1/2 годятся для скриптов и баг-репортов;
🔘 root не нужен даже для path MTU: только непривилегированные сокеты;
🔘 Linux, macOS, Windows; ставится через Homebrew, Scoop и winget.
Альтернатива — связка ping, dig, curl -v и mtr: она есть везде и показывает больше деталей, а mtr лучше видит потери по хопам. Network Doctor выигрывает, когда нужен не набор выводов, а ответ, чья это проблема: сети, пути или сервиса.
@prog_tools | 1 146 |
| 14 | Подключились по SSH к незнакомой базе, и дальше начинается археология: как называется таблица, какие в ней колонки, не снесёт ли этот UPDATE пол-базы.
pgcli — терминальный клиент PostgreSQL, который подсказывает по ходу набора запроса.
🔘 после FROM предлагает таблицы, после WHERE — колонки именно этих таблиц, учитывает псевдонимы;
🔘 подсвечивает синтаксис и печатает результат ровной таблицей;
🔘 \d, \dt, \dn, \du, \dx показывают устройство схемы, пользователей и расширения;
🔘 --warn all предупреждает перед разрушительным запросом, прежде чем выполнить;
🔘 --row-limit не даёт случайно вывалить в терминал миллион строк;
🔘 --auto-vertical-output разворачивает широкие результаты по вертикали, когда они не влезают;
🔘 \watch, \timing и \copy закрывают повторный запуск запроса, замер времени и выгрузку.
Для скриптов и полного покрытия возможностей PostgreSQL остаётся psql: он есть везде и ничего лишнего не делает. pgcli удобнее там, где вы руками разбираетесь в чужой базе.
13,3 тысячи звёзд. Язык: Python. Лицензия: BSD-3-Clause.
@prog_tools | 1 152 |
| 15 | После выката надо свести три лога: веб-сервера, приложения и системный. Обычно это заканчивается связкой tail | grep | less в трёх окнах и ручным сопоставлением времени.
lnav открывает все файлы сразу, распознаёт формат каждого, распаковывает сжатые и показывает записи одной лентой по времени.
🔘 lnav app.log nginx/ syslog.gz — файлы, каталоги и архивы вперемешку, форматы определяются сами;
🔘 e и E прыгают к предыдущей и следующей ошибке, не заставляя искать глазами;
🔘 / ищет регулярным выражением, :highlight подсвечивает совпадения дальше по ленте;
🔘 ; открывает SQL по логам: записи разобраны на поля, и по ним можно считать группировки;
🔘 i рисует гистограмму сообщений по времени — сразу видно всплеск;
🔘 P разворачивает структурированный текст вроде JSON в читаемый вид;
🔘 F5 повторяет текущую операцию, включая последний SQL-запрос, когда логи доехали.
Для веб-аналитики с отчётами удобнее goaccess, для потоковой обработки в конвейере — angle-grinder. lnav сильнее именно как интерактивный просмотр разнородных логов на одной машине.
10,5 тысячи звёзд. Язык: C++. Лицензия: BSD-2-Clause.
@prog_tools | 1 180 |
| 16 | Баг воспроизводится раз в сотню запусков, а под отладчиком не воспроизводится вообще.
rr записывает выполнение программы под Linux целиком, а потом проигрывает эту запись сколько угодно раз — с точностью до инструкции. Тот самый неудачный запуск можно пересматривать, ставить точки останова задним числом и двигаться по времени назад.
🔘 rr record ./program записывает выполнение вместе со всем, что программа получила извне;
🔘 rr replay открывает запись в GDB, где работают привычные команды;
🔘 reverse-cont продолжает выполнение назад — от места падения к причине;
🔘 watch -l ставит аппаратную точку наблюдения за адресом, после чего можно откатиться к предыдущей записи в него;
🔘 повторный run проигрывает тот же след заново, сохраняя расставленные точки останова;
🔘 rr pack делает след самодостаточным, чтобы передать его коллеге;
🔘 записываются деревья процессов и потоки, а режим хаоса помогает выловить редкие варианты планирования.
Ограничения честные: только Linux и только на процессорах с подходящими счётчиками производительности. Обычные GDB и LLDB переносимее, но обратной отладки не дают.
10,6 тысячи звёзд. Язык: C++. Лицензия: MIT.
@prog_tools | 1 122 |
| 17 | Сервис на проде внезапно ест процессор. Перезапускать с профилировщиком нельзя: проблема как раз пропадёт.
py-spy подключается к уже работающему процессу Python по идентификатору и показывает, где тот проводит время. Код менять не нужно, перезапускать тоже, сам процесс при этом продолжает работать.
🔘 py-spy top --pid 1234 — живой список горячих функций, как top, только по функциям;
🔘 py-spy record -o profile.svg --pid 1234 — запись flame graph в файл;
🔘 py-spy dump --pid 1234 — стеки всех потоков прямо сейчас, полезно, когда процесс завис;
🔘 --locals добавляет к стекам значения локальных переменных;
🔘 --subprocesses включает дочерние процессы и обработчики очередей;
🔘 --native показывает и нативные расширения, а --gil отделяет время под глобальной блокировкой;
🔘 --nonblocking не приостанавливает процесс ради снимка — чуть менее точно, зато безопаснее на проде.
Встроенный cProfile требует запускать программу под собой, pyinstrument — правки кода. Если нужен разбор ещё и памяти с видеокартой, смотрите в сторону Scalene, но для «зайти и посмотреть, что происходит прямо сейчас» py-spy проще.
15,2 тысячи звёзд. Язык: Rust. Лицензия: MIT.
@prog_tools | 1 047 |
| 18 | Профилировщик выдал десятки тысяч стеков вызовов. Читать это построчно бессмысленно, и ровно для этого Брендан Грегг придумал флейм-графы — способ свернуть все стеки в одну картинку.
Читается она не так, как кажется на первый взгляд. По горизонтали не время, а совокупная частота: ширина блока показывает, в скольких снимках встретился этот кадр. По вертикали — глубина вызовов, родитель снизу, потомки сверху. Верхняя кромка — то, где программа реально находилась в момент снятия. Цвет смысла не несёт, он нужен только чтобы блоки различались.
Появилась техника из практической беды: трассировка производительности MySQL оказалась слишком дорогой, и вместо полного трассирования Грегг стал брать выборку стеков.
Скрипты работают поверх perf, DTrace, SystemTap, eBPF и профилировщиков Windows. Кроме обычного графа по процессору есть графы по памяти, по времени вне процессора, разностные и горячие-холодные.
Отдельно стоит запомнить разницу: во флейм-чарте ось X — это действительно время, во флейм-графе — нет.
@prog_tools | 1 114 |
| 19 | Bun — среда выполнения JavaScript и TypeScript, которая заодно работает пакетным менеджером, сборщиком и тест-раннером: один бинарник вместо связки node, npm, tsx и jest.
20 августа вышла версия 1.4. Главное в ней — совместимость: в набор, который гоняется на каждом коммите, добавили 1517 тестов из официального тестового набора Node.js; файлов этого набора теперь проходит 3743 против 1450 на версии 1.2. node:events и node:sqlite проходят его на 100%, node:quic на 99%, node:http, node:fs, node:cluster и node:stream на 97%. Под Bun заработали Playwright, vitest и Next.js 16 с Turbopack.
Простой процесс ест впятеро меньше процессора, память до 35% меньше, старт на Linux быстрее наполовину. Реализация переписана с Zig на Rust.
Релиз задержался на три месяца — самый долгий разрыв между стабильными версиями с 2022 года. Теро Пиирайнен посчитал авторство коммитов за месяц: 15,8 тысячи от бота robobun, 790 от Джарреда Самнера. Полной совместимости с Node.js по-прежнему нет, команда это признаёт.
@prog_tools | 1 113 |
| 20 | DuckDB — аналитическая база, которая живёт внутри вашего процесса, как SQLite. Отличие в том, что SQLite заточена под много мелких операций со строками, а DuckDB под запросы, которые читают миллионы строк и считают агрегаты. Практический смысл: SQL прямо по файлам Parquet и CSV, без поднятия сервера и без загрузки данных куда-либо.
Именно из-за этого сценария важен свежий выпуск 1.5.5 от 22 июля: файлы часто приходят извне, а база встроена в приложение, поэтому падает не отдельный сервер, а весь процесс.
🔘 перенесены исправления чтения за границами выделенной памяти;
🔘 разбор Parquet отклоняет страницы DATA_PAGE_V2 с несогласованным полем сжатого размера;
🔘 исправлена взаимная блокировка в управлении временной памятью;
🔘 в журнал HTTP-запросов добавлены длина тела и ошибки транспорта — полезно при чтении данных прямо из S3.
Выпуск целиком про исправления, ломающих изменений нет.
@prog_tools | 1 081 |
