Муравей в мире слонов - почему стоит присмотреться к рантайму Ant
Представьте, что вы упаковываете Docker-контейнер для простой облачной функции. Вы пишете десять строк кода на JavaScript, а на выходе получаете образ в сотни мегабайт. Большая часть этого веса — Node.js. Мы привыкли к этому «налогу на инфраструктуру», но разработчик под ником theMackabu решил, что пора что-то менять. Его проект Ant — это попытка создать среду исполнения JavaScript, которая весит всего 8 МБ, но при этом умеет летать.
Что это такое и зачем оно нужно
Ant — это легковесный рантайм для JavaScript, написанный с нуля на C. Автор не стал брать готовый движок вроде V8 (как в Node.js или Deno) или JavaScriptCore (как в Bun). Вместо этого он написал собственный движок Ant Silver.
Зачем это нужно, когда есть гиганты? Ответ в цифрах. Node.js «из коробки» весит около 120 МБ. Ant занимает 8 МБ в стандартной сборке и может ужаться до 4 МБ, если собрать его с оптимизацией по размеру. Это делает его идеальным кандидатом для edge-вычислений, встраиваемых систем и CLI-утилит, где каждый мегабайт и каждая миллисекунда на счету.
Холодный старт, который впечатляет
Одна из главных болей в serverless-архитектуре — "cold start". Это время, которое требуется платформе, чтобы поднять рантайм и начать выполнять ваш код. Если Node.js тратит на инициализацию около 30 мс, то Ant справляется за 5 мс.
В бенчмарках проекта используется Hono — популярный фреймворк для создания API. Ant загружает Hono, регистрирует роуты и завершает работу в два раза быстрее Bun и в пять раз быстрее Node.js. Конечно, это синтетический тест на запуск и выход, но он наглядно показывает, насколько меньше лишних действий делает рантайм при старте.
Техническая начинка
Создание собственного движка JS в одиночку звучит как безумие, но здесь есть интересные решения. Движок Ant Silver использует JIT-компилятор на базе MIR. Это легковесный бэкенд, который позволяет JavaScript-коду выполняться со скоростью, близкой к компилируемым языкам, при этом не требуя гигабайт оперативной памяти для работы оптимизатора.
Проект ориентируется на стандарт WinterTC (Minimum Common API). Это попытка сделать так, чтобы код, написанный для одной серверной среды JS, без правок работал в другой. На текущий момент Ant полностью проходит тесты на совместимость с ES1–ES6 и последующими спецификациями (1511 тестов из 1511). Однако в более глубоких тестах test262 покрытие пока составляет около 64%. Автор честно признает: работа идет, и фокус сейчас на тех возможностях, которые реально нужны в разработке.
Где это можно использовать
Я вижу несколько сценариев, где Ant может «выстрелить» уже сейчас:
- Микро-CLI инструменты. Если вы пишете небольшую утилиту для коллег, которую нужно быстро скачать и запустить, бинарник в 4 МБ выглядит куда привлекательнее, чем требование установить Node.js.
- Edge Computing. В распределенных сетях, где код исполняется максимально близко к пользователю, малый размер и быстрый старт напрямую влияют на задержку (latency).
- IoT и встраиваемые системы. Там, где ресурсы памяти ограничены, обычный Node.js просто не поместится, а Ant будет чувствовать себя вполне комфортно.
Как попробовать
Установка стандартная для подобных инструментов:
curl -fsSL https://antjs.org/install | bash
Если вы хотите залезть под капот и собрать его самостоятельно, вам понадобится компилятор C. Проект активно развивается, и автор ведет интересный блог о внутренних деталях реализации, где объясняет, как именно муравью удается нести вес в 50 раз больше собственного.
Стоит ли переходить на него сегодня?
Давайте будем честны: Ant — это пока амбициозный эксперимент. Если ваша работа завязана на специфические нативные модули Node.js или огромную экосистему NPM, которая полагается на внутренности V8, вы столкнетесь с проблемами.
Однако, если вам нужен минималистичный инструмент для выполнения JS в специфических условиях, или вы просто устали от тяжеловесности современных решений — закиньте звезду этому репозиторию. Это редкий пример того, как один человек бросает вызов архитектурным излишествам индустрии. Даже если Ant не заменит Node.js, он точно заставит других разработчиков рантаймов задуматься об оптимизации.
