Сравнение runtime реальные цифры
Параметр
🦕 Deno 2.8
🥟 Bun 1.2
🟢 Node 20
Binary размер
103 MB
~85 MB лучший
не бинарь
RAM baseline
~60 MB
~30 MB лучший
~36 MB
TypeScript
✅ нативно
✅ нативно
❌ нужен tsc
JSX/TSX
✅ нативно
✅ нативно
❌ Babel/esbuild
npm совместимость
✅ node: + npm: imports
✅ полная
✅ родная
Встроенная БД
✅ Deno.Kv (SQLite)
✅ bun:sqlite
❌ внешний модуль
HTTP сервер
✅ Deno.serve()
✅ Bun.serve()
http module
Compile → exe
✅ deno compile
✅ bun build
❌ нет
Security model
✅ --allow-* flags лучший
❌ нет sandbox
❌ нет sandbox
Тест-раннер
✅ встроен
✅ встроен
jest/vitest
Web Workers
✅ Web API
✅ Web API
worker_threads
Скорость HTTP
~120k rps
~180k rps лучший
~80k rps
Jupyter Kernel
✅ deno jupyter
❌
❌
Что делает Deno уникальным
Security by Default
Единственный runtime с гранулярными разрешениями. Идеально для агентов — видно что разрешено.
deno run --allow-net=api.openai.com \
--allow-read=/data \
--deny-write \
agent.ts
--allow-read=/data \
--deny-write \
agent.ts
deno compile → exe
Компилирует TypeScript в единый статический бинарник. Деплой = один файл, как Go.
deno compile --allow-net \
--target x86_64-unknown-linux-gnu \
--output ui-director main.ts
# → 1 файл, работает без Deno
--target x86_64-unknown-linux-gnu \
--output ui-director main.ts
# → 1 файл, работает без Deno
Deno.serve() нативно
HTTP сервер без импортов, с TypeScript, Request/Response Web API. Именно то что нужно relay-боту.
Deno.serve({port: 8080},
async (req: Request) => {
const body = await req.json();
return Response.json({ok: true});
});
async (req: Request) => {
const body = await req.json();
return Response.json({ok: true});
});
Deno KV (встроенная БД)
SQLite под капотом, key-value хранилище без npm. Для relay-бота: сессии, rate limits, кэш.
const kv = await Deno.openKv();
await kv.set(["chat", chatId], history);
const h = await kv.get(["chat", chatId]);
await kv.set(["chat", chatId], history);
const h = await kv.get(["chat", chatId]);
Jupyter Kernel
Уникальная фича — Deno как Jupyter kernel. TypeScript ноутбуки для анализа данных / прототипов агентов.
deno jupyter --install
# TypeScript в Jupyter cells
# Работает в VS Code, JupyterLab
# Идеально для DevDir R&D
# TypeScript в Jupyter cells
# Работает в VS Code, JupyterLab
# Идеально для DevDir R&D
JSX без build step
TSX/JSX запускается напрямую. UI-директор может проверить компонент мгновенно без npm install.
deno run --allow-net Component.tsx
// Нет npm install
// Нет webpack/vite
// Нет tsconfig.json
// Нет npm install
// Нет webpack/vite
// Нет tsconfig.json
Анализ: Deno для DevDir и UI-директора
UI-директор
Генерирует React/HTML → рендерит → скриншот → Telegram. JSX нативно, Playwright через npm:playwright.
✅ ОТЛИЧНЫЙ ФИТ
Telegram relay-бот
Принять сообщение → metadata → kara → ответ. Deno.serve() + fetch + Deno.Kv для сессий. Но Bun быстрее и легче.
⚠️ РАБОТАЕТ, но Go/Bun лучше
DevDir (orchestrator)
Думает, планирует, архитектурные решения — runtime не важен. DevDir = claude -p + промпт. Deno ничего не добавляет к качеству мышления.
❌ НЕ НУЖЕН для мышления
Тестировщик / CI агент
deno test встроен, deno compile → один бинарник. Запускает тесты, парсит результат, шлёт в TG. Security флаги — чётко ограничивает доступ.
✅ ХОРОШИЙ ФИТ
R&D / прототипирование
Jupyter kernel — уникальная фича. TypeScript ноутбуки для анализа данных, прототипов агентной логики, без Python.
✅ УНИКАЛЬНАЯ ФИЧА
MCP сервер
jsr:@modelcontextprotocol/sdk — официальный MCP SDK есть в реестре Deno. Написать кастомный MCP-сервер проще чем на Python.
✅ ИНТЕРЕСНЫЙ ВАРИАНТ
Код: что реально выглядит иначе чем Node
UI-Director: render JSX → screenshotDeno TSX
// ui-director.ts — запуск: deno run --allow-all . import { chromium } from "npm:playwright"; import { build } from "npm:esbuild"; export async function renderComponent( jsxPath: string, outPath: string ) { // 1. Bundle JSX без npm install const { outputFiles } = await build({ entryPoints: [jsxPath], bundle: true, format: "esm", write: false, jsx: "automatic" }); // 2. Spin up preview server (1 строка!) const server = Deno.serve({ port: 0 }, (req) => new Response(html(outputFiles[0].text), { headers: { "content-type": "text/html" } }) ); // 3. Screenshot const browser = await chromium.launch(); const page = await browser.newPage(); await page.goto(`http://localhost:${server.addr.port}`); await page.screenshot({ path: outPath, fullPage: true }); await browser.close(); server.shutdown(); }
MCP Server на Deno (кастомный)Deno TypeScript
// mcp-anthill.ts — MCP сервер для Claude import { McpServer } from "jsr:@modelcontextprotocol/sdk/server/mcp"; import { StdioServerTransport } from "jsr:@modelcontextprotocol/sdk/server/stdio"; const server = new McpServer({ name: "anthill-deno", version: "1.0" }); // Инструмент: поставить A2A задачу server.tool("a2a_submit", { agent: { type: "string" }, task: { type: "string" } }, async ({ agent, task }) => { const kv = await Deno.openKv(); const id = crypto.randomUUID(); await kv.set(["a2a", id], { agent, task, state: "submitted", ts: Date.now() }); return { content: [{ type: "text", text: `Task ${id} → ${agent}` }]}; }); const transport = new StdioServerTransport(); await server.connect(transport);
⚖️ Архитектурный вердикт: Deno в твоей экосистеме
✅ ГДЕ ИСПОЛЬЗОВАТЬ
UI-директор (JSX render → screenshot → Telegram) — Deno + Playwright без build step. Кастомные MCP серверы (jsr:@modelcontextprotocol). Тестировщик (deno test встроен, compile → 1 бинарник). Jupyter R&D для прототипирования агентов.
❌ ГДЕ НЕ ИСПОЛЬЗОВАТЬ
DevDir/Сметчик — runtime не влияет на качество мышления, claude -p лучше. Telegram relay (Go легче, 8MB vs 103MB). FinDir/Orchestrator — Python + hermes, там 80 инструментов.
💡 ГЛАВНОЕ ПРЕИМУЩЕСТВО vs Bun
Security model (--allow-*) — для агентов это важно: точно видишь что разрешено. deno compile в единый exe. Jupyter kernel уникален. JSX runtime для проверки UI без сборки.
📏 РАЗМЕР В КОНТЕКСТЕ
Deno binary 103MB — это больше чем Bun (~85MB) и Node baseline (36MB). НО: deno compile создаёт standalone exe который включает runtime. Для UI-директора: 1 файл деплой vs npm + node + конфиги.