Ant, JavaScript-рантайм и экосистема с движком собственной разработки
Разработчик под ником theMackabu опубликовал на Hacker News пост в формате Show HN о проекте Ant, JavaScript-рантайме и экосистеме вокруг него. В экосистему входят: движок собственной разработки под названием Ant Silver, менеджер пакетов, реестр пакетов ants.land, платформа для развёртывания и хостинга приложений, а также Ant Desktop, инструмент для сборки нативных десктопных приложений на веб-технологиях. Цель, по словам автора, собрать всё это в единую согласованную платформу, оставаясь при этом совместимой с широкой экосистемой JavaScript. Автор прямо называет проект ранней стадией и просит сообщество высказаться о направлении развития. Ant нацелен на сценарии, где критичны размер и скорость запуска: бессерверные функции (serverless), периферийные вычисления (edge computing), встраиваемые системы и консольные утилиты (CLI), везде, где нельзя позволить себе рантайм весом от 50 МБ.
По техническим деталям с сайта проекта antjs.org, из GitHub-репозитория и обсуждения на Hacker News: движок Ant Silver написан с нуля вручную, а не является обёрткой над V8, JSC или SpiderMonkey; JIT-компилятор, форк движка MIR, лёгкого бэкенда, который даёт производительность, близкую к компилируемому коду. Кодовая база написана в основном на языке C (около 74%), с добавлением JavaScript (около 16%), Zig (около 6%) и TypeScript (около 1%). Рантайм предоставляет Node-совместимый API и встроенную поддержку WebAssembly, а также песочницу с изоляцией на уровне виртуальной машины: на Linux, через KVM, на macOS (Darwin), через hypervisor.framework, с потреблением памяти около 35 МБ на экземпляр песочницы. По заявленной совместимости Ant проходит 100% тестов compat-table (1511 из 1511, тесты ES1, ES5, ES6, ES2016 и новее, ESNext), но пока только около 64% теста test262, и автор признаёт, что эта работа не завершена. Размер бинарника, около 8 МБ, а со сборочным флагом -Os, 4,1 МБ. Заявленный холодный старт, около 5 миллисекунд против 10,6 мс у Bun, 24,8 мс у Deno и 28,7 мс у Node. Проект распространяется по лицензии MIT, устанавливается одной командой (curl-скрипт с antjs.org) и на момент публикации имеет 37 релизов, последний, v12.2.1. Поддерживаются npm-пакеты, в примерах автор показывает работу с фреймворком Hono.
В комментариях разгорелся спор о происхождении кода. Пользователь tekacs проследил корни проекта до Elk, движка на языке C с лицензией AGPL из репозитория cesanta/elk 2019 года, что противоречит подаче «написано с нуля». Автор ответил, что примерно в феврале удалил прежнюю кодовую базу целиком и спроектировал куда более надёжную систему заново, назвав старый код «чистым хламом». Другие комментаторы возразили: возможно, «написано вручную» (hand-built) на деле означает «написано по указаниям ИИ» (hand-prompted), то есть сгенерировано языковой моделью по промптам автора, а не написано человеком построчно. Однозначного разрешения спора в обсуждении нет.
Досталось и заявлениям о производительности. Комментатор egnehots указал на бенчмарки в духе zoo.js, где Ant заметно отстаёт от конкурентов. Автор ответил, что движок полностью переписывался с февраля и до этого «в основном интерпретировал код, без многих JIT-операций», а бенчмарки появятся в ночных сборках. Комментатор progx привёл собственные цифры: бинарник Ant весом 4,3 МБ набрал в тесте 69 баллов против 47 285 у V8, разрыв на несколько порядков, который заявленные 5 мс холодного старта никак не объясняют.
Остальные темы обсуждения: название «Ant» совпадает с давно существующими Apache Ant и Ant Design, популярной UI-библиотекой Alibaba (домен ant.design уже занят). На вопрос, компилирует ли Ant проекты в отдельные бинарники, как это делает Deno, автор ответил утвердительно и пообещал опубликовать дорожную карту. Комментатор skybrian спросил, зачем создавать новый реестр пакетов ants.land вместо использования готового JSR; комментатор gandreani согласился, что разрабатывать, эксплуатировать и поддерживать собственный реестр пакетов, вероятно, не стоит затраченных усилий. Пользователь kwpolska обратил внимание, что разработка ведётся на личном GitHub-аккаунте автора, хотя у проекта есть сопутствующий сайт компании sf.tools, у которого страница вакансий (/jobs) заведомо не работает; автор пояснил, что это «просто внутренняя шутка».
Ключевые факты
- Ant, JavaScript-рантайм и экосистема (движок Ant Silver, менеджер пакетов, реестр ants.land, платформа для развёртывания и хостинга, Ant Desktop) от разработчика theMackabu; пост в формате Show HN на Hacker News набрал 263 балла и 111 комментариев.
- Заявленные цифры: бинарник около 8 МБ (4,1 МБ с флагом -Os), холодный старт около 5 мс против 10,6 мс у Bun, 24,8 мс у Deno и 28,7 мс у Node; лицензия MIT; 100% тестов compat-table (1511 из 1511), но лишь около 64% test262.
- Комментаторы проследили корни кода до AGPL-проекта Elk (cesanta/elk, 2019 год); автор говорит, что в феврале снёс старую базу и переписал систему с нуля, назвав прежний код «чистым хламом», но часть сообщества подозревает, что «написано вручную» на деле означает «написано по промптам ИИ».
- Независимая проверка показала: бинарник Ant 4,3 МБ набрал 69 баллов против 47 285 у V8; автор объяснил разрыв незавершённым JIT-компилятором после февральского переписывания движка.
- Название «Ant» конфликтует с Apache Ant и Ant Design (Alibaba); домен ant.design уже занят, а собственный реестр пакетов ants.land комментаторы посчитали избыточным дублированием готового JSR.
Почему это важно
Лёгкие JavaScript-рантаймы, растущий тренд: бессерверные вычисления (serverless), периферийные вычисления (edge computing), встраиваемые системы и консольные утилиты (CLI) требуют среды выполнения без груза в 50 с лишним МБ, который несут базовые сборки Node, Bun или Deno. Ant заявляет решение этой проблемы за счёт движка, написанного с нуля, а не как обёртка над V8, JSC или SpiderMonkey, и показывает цифры холодного старта (около 5 мс), которые в несколько раз быстрее конкурентов. Одновременно это редкий случай, когда один разработчик берётся не просто за движок, а за целую экосистему, пакетный менеджер, реестр пакетов, платформу развёртывания, десктоп-обёртку, и тут же получает от сообщества жёсткую проверку истории проекта и реальной производительности. Это делает историю показательной для более широкого вопроса: что вообще значит «написано с нуля», когда под рукой есть языковые модели.
Кому это важно
Разработчикам бессерверных функций (serverless), периферийных сервисов (edge), встраиваемых систем и консольных утилит (CLI), которым нужен компактный JavaScript-рантайм; авторам инструментов и фреймворков, выбирающим между Node, Bun, Deno и новыми альтернативами; инженерам, интересующимся устройством JS-движков и JIT-компиляцией; а также сообществу разработчиков открытого кода, которое следит за спорами о происхождении кода и лицензионной чистоте (AGPL-наследие проекта Elk) при заявлениях «написано с нуля».
Как это применить
Ant устанавливается одной командой (curl-скрипт с antjs.org) и распространяется по лицензии MIT, то есть его можно свободно использовать и встраивать. Заявленные Node-совместимый API и поддержка npm-пакетов (в примерах, фреймворк Hono) позволяют попробовать его как замену Node, Bun или Deno в проектах, которым не нужна полная поверхность API Node. Но результат по test262, лишь около 64% (при 100% по compat-table), значит на практике возможны расхождения в граничных случаях спецификации ECMAScript. Автор сам называет проект ранней стадией и просит обратную связь по направлению развития, а дорожная карта, например, компиляция проектов в отдельные бинарники, как у Deno, пока не опубликована. Прежде чем ставить Ant в продакшен, стоит сначала проверить его на некритичной нагрузке и отдельно протестировать нужные части спецификации ECMAScript.
Можно ли доверять
Картина смешанная. В плюс: открытый код на GitHub, лицензия MIT, 37 релизов вплоть до v12.2.1, конкретные измеримые цифры (100% compat-table, цифры холодного старта). В минус: кодовая база восходит к AGPL-проекту Elk (cesanta/elk, 2019), и хотя автор утверждает, что в феврале переписал всё заново, часть комментаторов сомневается, что «написано вручную» означает написанное человеком, а не сгенерированное языковой моделью по промптам. Независимая проверка показала разрыв в производительности с V8 на несколько порядков (69 баллов против 47 285), то есть заявления о скорости пока подтверждены лишь частично, а сам автор признаёт, что движок «в основном интерпретировал код, без многих JIT-операций» до недавнего переписывания. Сопутствующий сайт компании sf.tools содержит намеренно нерабочую страницу вакансий, которую автор называет «внутренней шуткой», само по себе не криминал, но добавляет вопросов к тому, насколько серьёзно стоит воспринимать «экосистему» вокруг личного проекта одного разработчика.
Риски и подводные камни
Во-первых, лицензионный шлейф: даже переписанный код с историей AGPL (проект Elk) может вызывать вопросы при коммерческом использовании, пока происхождение не прояснено официально и независимо. Во-вторых, только около 64% теста test262, вероятны расхождения в редких случаях спецификации ECMAScript. В-третьих, производительность движка пока не подтверждена независимо: тест одного из комментаторов показал сильное отставание от V8, а JIT-компилятор, по словам самого автора, ещё не завершён. В-четвёртых, молодость проекта, автор сам просит обратную связь по направлению, а дорожная карта не опубликована. В-пятых, отдельный реестр пакетов ants.land вместо использования готового JSR комментаторы считают сомнительным решением, добавляющим лишние трудозатраты на поддержку. В-шестых, смешение личного проекта с «компанией» sf.tools, у которой намеренно нерабочая страница вакансий, снижает прозрачность для тех, кто оценивает надёжность проекта перед использованием.
«Где-то в феврале я, по сути, снёс старую кодовую базу и спроектировал куда более надёжную систему заново. Я знал, что старый код, это, по сути, чистый хлам.»
— theMackabu, автор Ant, комментарий на Hacker News