Ant runtime: 8MB бинарник, собственный движок на C, 5ms
Технический обзор

JavaScript runtime Ant: 8MB бинарник, собственный движок, холодный старт 5ms

Подробный разбор Ant — нового JavaScript runtime с собственноручно написанным движком на C. Никаких V8, JSC или SpiderMonkey — только C, NaN-boxed-значения и MIR JIT-бэкенд.

17 июля 2026 15 мин чтения

Что такое Ant и почему это важно?

12 июля 2026 года пост на Show HN о Ant набрал 252 очка и 107 комментариев за 12 часов. Суть: JavaScript runtime с собственным движком — не обёртка над V8, JavaScriptCore или SpiderMonkey — который поставляется как единственный бинарник 8.6MB и холодно стартует за 5 миллисекунд. Для контекста: Node 26 весит 120MB. Bun — 60MB. Deno — 90MB.

Ant создан соло-разработчиком Mack (theMackabu). Проект начинался в январе 2026 года как эксперимент «построить JavaScript runtime за месяц» и вырос до 1759 коммитов на GitHub с 861 звездой. Движок, получивший название Ant Silver, написан преимущественно на C (74% кодовой базы). Он включает кастомный байткод-компилятор, JIT-бэкенд на базе MIR, представление значений через NaN-boxing и поколенческий сборщик мусора.

Ant интересен не только цифрами бенчмарков — это архитектурная ставка на то, что специализированный движок может конкурировать с десятилетиями оптимизаций V8 за счёт того, что он меньше, проще и нацелен на серверные сценарии. Это важно для serverless-вычислений, edge-развёртываний, встраиваемых систем и любых контекстов, где размер бинарника и скорость холодного старта являются жёсткими ограничениями.

Архитектура Ant Silver: глубокое погружение

Ant Silver — не обёртка. Это полноценный JavaScript-движок, реализованный на C с нуля. Вот чем он отличается от устоявшихся движков:

Согласно архитектурной документации проекта, Ant Silver спроектирован для «предсказуемой производительности на небольших масштабах» — в приоритете быстрый запуск и скромное потребление памяти, а не пиковая пропускная способность на многочасовых серверных процессах. Это осознанный компромисс, который имеет смысл для serverless и edge-сценариев.

Совместимость и соответствие стандартам

Ant проходит 100% тестов compat-table — 1511 из 1511 тестов, охватывающих ES1–ESNext. Он также соответствует WinterTC (спецификация Ecma TC55 Minimum Common API для серверного JavaScript). Полное прохождение test262 составляет примерно 64%, что покрывает повседневный JavaScript, но может пропускать граничные случаи в продвинутых возможностях языка.

Размер бинарника и скорость холодного старта

Опубликованные проектом цифры сравнивают импорт Hono, регистрацию двух роутов и выход — без запуска HTTP-сервера, чтобы изолировать время загрузки модулей и инициализации:

Runtime Размер бинарника Холодный старт Движок
Ant ~8.6 MB 5.4 ms Ant Silver (C, кастомный)
Bun 1.3 ~60 MB 12.8 ms JavaScriptCore (Apple)
Deno 2.8 ~90 MB 24.8 ms V8 (Google)
Node 26 ~120 MB 31.1 ms V8 (Google)

Преимущество в холодном старте ощущается сразу при запуске скриптов. Ant холодно стартует в 6 раз быстрее Node для этой нагрузки. Разница в размере бинарника тоже драматична — Ant в 8.6MB помещается куда угодно, в то время как Node в 120MB в 14 раз больше. Для Docker-образов, CI-пайплайнов и serverless-развёртываний эта разница напрямую означает более быстрые пулы и меньшую стоимость хранения.

Однако бенчмарк намеренно не измеряет производительность долгоживущих процессов. На продолжительных нагрузках с горячим JIT глубоко оптимизированный конвейер V8 будет превосходить лёгкий JIT Ant. Цифры наиболее релевантны для короткоживущих процессов, таких как вызовы serverless-функций.

Установка и первые шаги

Установка Ant — одна команда. Никаких пакетных менеджеров, Homebrew tap или npm install:

curl -fsSL https://antjs.org/install | bash

Скрипт определяет вашу ОС (macOS или Linux на arm64/x86_64) и помещает единственный бинарник в систему. Проверьте установку:

$ ant --version
Ant 12.1.15dd25d.1

Нативной поддержки Windows пока нет (работает через WSL), но macOS и Linux поддерживаются полностью.

Запуск JavaScript и TypeScript

Ant запускает обычный JavaScript и TypeScript без какой-либо конфигурации. Вот простой HTTP-сервер через стандартную fetch-модель:

// server.js
const handler = (req) => {
  const url = new URL(req.url);
  const name = url.searchParams.get('name') || 'Мир';
  return new Response(`Привет, ${name}! — от Ant`);
};

export default {
  port: 3000,
  fetch: handler
};
$ ant server.js
Listening on http://localhost:3000

$ curl http://localhost:3000/?name=Олег
Привет, Олег! — от Ant

TypeScript работает нативно — никаких tsconfig.json, бандлеров или папок dist:

// server.ts
import { Hono } from 'hono';

const app = new Hono();

app.get('/', (c) => c.text('Привет от Ant с TypeScript!'));

export default app;
$ ant server.ts
Listening on http://localhost:3000

Ant обрабатывает разрешение модулей, удаление типов и компиляцию прозрачно. Удаление типов использует кастомный быстрый путь, который экономит примерно 900KB размера бинарника по сравнению с использованием полного компилятора TypeScript.

Управление пакетами: в 40 раз быстрее npm

Ant устанавливает пакеты через собственный реестр ants.land, который поддерживает протокол npm. Любой опубликованный там пакет также работает с npm, yarn, pnpm и bun.

$ ant i hono
installed  hono@latest
1 package installed  [155ms]

155 миллисекунд от нуля до рабочей установки Hono. Та же операция в npm занимает около 6 секунд на той же машине. Ant обещает ускорение до 40 раз, и для небольших и средних деревьев зависимостей разница действительно заметна.

Публикация пакетов работает аналогично:

$ ant land login
$ ant land publish
published  @you/[email protected]

Сборка REST API с Hono

Hono работает с Ant без каких-либо адаптеров. Вот REST-подобное API с CORS, параметрами маршрутов и парсингом POST-тел:

import { Hono } from 'hono';
import { cors } from 'hono/cors';

const app = new Hono();

app.use('*', cors());

const todos = [
  { id: 1, title: 'Попробовать Ant', done: true },
  { id: 2, title: 'Написать туториал', done: true },
  { id: 3, title: 'Задеплоить что-нибудь', done: false },
];

app.get('/api/todos', (c) => c.json(todos));

app.get('/api/todos/:id', (c) => {
  const todo = todos.find(t => t.id === Number(c.req.param('id')));
  return todo
    ? c.json(todo)
    : c.json({ error: 'Не найдено' }, 404);
});

app.post('/api/todos', async (c) => {
  const body = await c.req.json();
  const newTodo = { id: todos.length + 1, ...body };
  todos.push(newTodo);
  return c.json(newTodo, 201);
});

export default app;
$ ant todos.ts
Listening on http://localhost:3000

Никакого слоя адаптации, никаких конфигурационных файлов — просто пишите код на Hono и запускайте. Модель экспорта fetch по умолчанию означает, что любой фреймворк, использующий стандартный серверный паттерн на fetch, работает без модификаций.

VM-изолированная песочница: уникальная функция безопасности

Ни Node.js, ни Bun не поставляют встроенную песочницу для запуска недоверенного кода. Ant — да, и она аппаратно изолирована с использованием KVM (Linux) или Hypervisor.framework (macOS):

import { Sandbox } from 'ant:sandbox';

const box = new Sandbox({
  mount: '.:/workspace',  // монтирование только для чтения по умолчанию
});

await box.run('untrusted.js');
await box.close();

Свойства безопасности песочницы:

Это важно для serverless-платформ, инструментов оценки кода, плагинных систем и любых сценариев, где сторонний код выполняется рядом с вашим. Обеспечивает защиту на несколько уровней глубже, чем npm audit или диалоги разрешений.

Сравнение: Ant vs Node vs Bun vs Deno

Ландшафт JavaScript runtime в 2026 году разнообразнее, чем когда-либо. Вот как четыре runtime сравниваются по параметрам, важным для production-решений:

Характеристика Ant Node 26 Bun 1.3 Deno 2.8
Движок Ant Silver (кастомный C) V8 JavaScriptCore V8
Размер бинарника ~8.6 MB ~120 MB ~60 MB ~90 MB
Холодный старт (Hono) ~5 ms ~31 ms ~13 ms ~25 ms
Совместимость с npm Да (частично N-API) Да Да Через npm specifier
Нативный TypeScript Да Экспериментально Да Да
Встроенная песочница VM-изолированная Нет Нет Модель разрешений
test262 совместимость ~64% ~99% ~98% ~99%
Отладчик/Профилировщик Нет Да Частично Да
Поддержка Windows Только WSL Нативная Нативная (бета) Нативная
Лицензия MIT MIT MIT MIT

Текущие ограничения и оценка зрелости

Ant — впечатляющее техническое достижение, но это раннее программное обеспечение. Вот ограничения, о которых стоит знать:

Ограничения характерны для runtime, разрабатываемого одним человеком в течение 6 месяцев. Они не отменяют ценность проекта, но должны влиять на то, где и как вы его оцениваете.

Где Ant проявляет себя лучше всего

Исходя из архитектуры и текущего состояния, Ant лучше всего подходит для:

Для контекста о том, как развивается ландшафт runtime, см. мой анализ порта Bun на Rust — там рассматривается другой подход к оптимизации runtime: портирование существующего движка с Zig на Rust для лучшей безопасности памяти, а не создание нового движка с нуля.

Как начать

Если хотите попробовать Ant сегодня:

  1. Установите: curl -fsSL https://antjs.org/install | bash
  2. Создайте файл: echo 'console.log("hello from ant")' > test.js
  3. Запустите: ant test.js
  4. Установите фреймворк: ant i hono
  5. Соберите сервер: используйте пример с Hono выше

Официальный сайт antjs.org содержит документацию, а GitHub-репозиторий — исходный код, примеры и скрипты для бенчмарков. Блог автора на themackabu.dev документирует развитие проекта от первоначального месячного спринта до текущей экосистемной концепции.

FAQ

Что такое JavaScript runtime Ant?
Ant — это легковесный JavaScript runtime, построенный с нуля на собственном движке Ant Silver. В отличие от Node.js (V8), Deno (V8) или Bun (JavaScriptCore), Ant использует собственный движок на C с кастомным байткод-компилятором, MIR JIT-бэкендом, NaN-boxed значениями и поколенческим сборщиком мусора. Весь runtime поставляется как один бинарник размером ~8.6MB.
Насколько Ant меньше Node, Bun и Deno?
Бинарник Ant весит примерно 8.6MB, по сравнению с ~120MB у Node 26, ~60MB у Bun и ~90MB у Deno 2.8. Ant примерно в 14 раз меньше Node и в 7 раз меньше Bun.
Может ли Ant запускать существующие npm-пакеты?
Да. Ant поддерживает протокол npm и может устанавливать пакеты из собственного реестра ants.land или из npm. Фреймворки вроде Hono, Elysia и React работают без дополнительных настроек. Установка пакетов происходит до 40 раз быстрее, чем в npm. Однако сложные нативные аддоны (N-API) поддерживаются частично.
Есть ли в Ant встроенная песочница безопасности?
Да — Ant поставляется с VM-изолированной песочницей, использующей KVM или Hypervisor.framework. Каждая песочница представляет собой легковесную виртуальную машину с read-only файловой системой, без доступа к сети по умолчанию и с явным пробросом портов. Это уникальная функция, недоступная «из коробки» в Node.js или Bun.
Какие у Ant текущие ограничения?
Ant — это раннее программное обеспечение. Ключевые ограничения: отсутствие нативной сборки для Windows (только WSL), примерно 64% прохождения тестов test262, отсутствие отладчика и профилировщика, частичная поддержка N-API для нативных аддонов, небольшое сообщество (861 звезда на GitHub, один основной разработчик по состоянию на июль 2026).
Кто создал Ant и является ли он открытым?
Ant создал Mack (theMackabu) — соло-разработчик, который изначально написал runtime за один месяц. Проект распространяется под лицензией MIT, имеет 1759 коммитов и 4 контрибьютора по состоянию на июль 2026. Исходный код доступен на github.com/theMackabu/ant.
Стоит ли использовать Ant в production?
Ant лучше всего подходит для serverless-функций, edge-вычислений, пет-проектов и лёгких API, где важны холодный старт и размер бинарника. Для production-приложений со сложными деревьями зависимостей, нативными модулями или зрелыми инструментами Node.js или Bun остаются более надёжным выбором. Оценивайте Ant в staging-окружении, прежде чем рассматривать его для production-нагрузок.

Нужен профессиональный веб-разработчик?

Ландшафт JavaScript runtime расширяется быстрее, чем когда-либо — от собственного движка Ant до порта Bun на Rust с помощью AI. Выбор правильного runtime для вашего проекта требует понимания компромиссов между производительностью, зрелостью экосистемы и эксплуатационными ограничениями.

Я — full-stack веб-разработчик с 20+ годами опыта создания production-приложений. Оцениваете ли вы Ant для serverless-проекта, мигрируете существующую кодовую базу или нуждаетесь в консультации по современной JavaScript-экосистеме — я готов помочь. Свяжитесь со мной для бесплатной первичной консультации.

Я также пишу технические статьи об инструментах и фреймворках, которые действительно важны — следите за моими статьями, чтобы быть в курсе последних событий в веб-разработке.

Контакты

Обсудим ваш проект

Нужен веб-разработчик, который разбирается в современной экосистеме? Расскажите о вашем проекте — я дам честную оценку и предварительную смету. Бесплатно.