Deno 2.9 научился делать десктоп-приложения без Electron и читать lock-файлы npm, pnpm, yarn и Bun

В релизе 2.9 появилась команда deno desktop для нативных приложений на веб-стеке, а deno install теперь понимает чужие lock-файлы, что резко упрощает переезд с Node. Холодный старт ускорился вдвое — с 34 до 17 мс.

DB
DBG · по материалам Deno Blog
0

Команда Deno выпустила версию 2.9, и главная новость в ней — команда deno desktop. Это попытка закрыть нишу Electron: приложение собирается из обычного веб-фреймворка, но упаковывается в один бинарник и получает нативные API — Deno.BrowserWindow, Deno.Tray, системные диалоги. Никакого бойлерплейта с отдельным main-процессом и упаковкой Chromium.

Вторая по значимости вещь скучнее, но полезнее для большинства команд: deno install теперь читает lock-файлы npm, pnpm, yarn и Bun напрямую и заполняет deno.lock точными версиями оттуда. Плюс автоматическая миграция pnpm-workspace.yaml и шим для инструментов, которые ожидают увидеть бинарник node. Раньше переезд существующего проекта на Deno упирался ровно в это — теперь порог входа заметно ниже.

Заметно подтянули тестовый раннер. Появились снапшот-тесты прямо из коробки (t.assertSnapshot()), параметризованные тесты через Deno.test.each(), ретраи и повторы, флаг --changed для запуска только тестов, затронутых изменениями, шардирование по машинам CI через --shard и пороги покрытия, которые валят прогон, если покрытие просело. Отдельно завезли импорт CSS-файлов как constructable stylesheets через import attributes — по веб-стандарту CSS module scripts.

По производительности цифры от команды такие: холодный старт ускорился примерно вдвое, с 34 до 17 мс; потребление памяти под нагрузкой упало в 2,2–3,1 раза; пропускная способность HTTP выросла в 1,11–1,27 раза. Плюс совместимость с Node.js 26, постквантовая криптография (ML-KEM, ML-DSA, SLH-DSA), реализация Web Locks API, управление сэмплированием в OpenTelemetry, команды deno link/deno unlink для локальных пакетов, deno list для просмотра дерева зависимостей и кеширование задач по входным данным.

Что делать разработчику. Обновление тривиальное — deno upgrade. Полезнее другое: если вы давно поглядываете на Deno, но не хотели переписывать инфраструктуру зависимостей, именно сейчас имеет смысл потратить час и прогнать deno install на существующем Node-проекте — он подхватит ваш package-lock.json или pnpm-lock.yaml и покажет, что реально ломается. В CI сразу пробуйте --shard и --changed: на средней монорепе это самый дешёвый способ сократить время прогона тестов вдвое, ничего не переписывая. А вот deno desktop в продакшен пока не тащите — это первая итерация, и по зрелости инструментария (подпись бинарников, автообновление, поведение на разных версиях ОС) до Electron/Tauri ей ещё далеко.

Комментарии