15 мая Vercel Labs релизнули Zero. Экспериментальный системный язык, который сами авторы называют “the programming language for agents”. Версия 0.1.1, Apache 2.0, расширение .0, бинарники меньше 10 килобайт, без LLVM. На GitHub лежит компилятор, стандартная библиотека и примеры — можно ставить и щупать прямо сейчас.
Я прочитал доки, поставил себе, погонял пару примеров. Сижу с этой мыслью: серьёзно или очередной хайповый проект под волну агентного кодинга?
Если коротко — наверное серьёзно, но мне сейчас не нужно. Тебе, скорее всего, тоже. Сейчас расскажу, что там и почему я так думаю.
Что Zero на самом деле делает
Фишка не в синтаксисе. Синтаксис у Zero почти как у Rust, только borrow checker попроще и есть капабилити-модель для эффектов. Кто писал на Rust или Zig — разберётся за вечер.
Фишка в компиляторе. Точнее в том, что из него вылезает.
Запускаешь zero check --json и получаешь не привычный кусок текста вроде “expected &str, found String“, а структурированный JSON. Стабильный код ошибки типа NAM003, человеческое описание, номер строки, спан, и метаинформация про то, как это чинить. Дальше есть zero explain <код> — структурированное объяснение конкретной диагностики. И zero fix --plan --json — машинный план починки. Что заменить, где, на что.
То есть петля для агента выглядит так. Агент пишет код. Компилятор ругается. Агент читает JSON, смотрит стабильный код, дёргает план починки, применяет, гоняет проверку снова. Никаких “let me parse this error message”. Никаких регулярок по выводу cargo build. Никакой надежды на то, что в Anthropic хорошо натренировали модель распознавать новый формат предупреждения после очередного обновления rustc.
Помимо JSON-диагностики есть капабилити-модель ввода-вывода. Хочешь писать в stdout, читать файл, дёргать сеть — функция обязана принять параметр world: World явно. Без него компилятор не даст. Никаких скрытых глобалов, никакого неявного аллокатора, никакого GC. Эффекты видны в сигнатуре. Ошибки пробрасываются через raises, падающие операции помечаются check.
pub fun main(world: World) -> Void raises {
check world.out.write("hello from zeron")
}
Когда агент читает чужой код на Zero, он по одной сигнатуре функции уже знает, что она делает с внешним миром. Не нужно строить граф вызовов до самого низа, чтобы понять, лезет ли эта помеченная как pure функция в файловую систему через какую-нибудь хитрую обёртку. Нет в сигнатуре World — в файлы не пишет. И всё.
Зачем это вообще
Если ты не сидишь в Cursor или Claude Code по восемь часов в день, объясняю на пальцах.
Когда я пишу в агентном режиме (у меня примерно 70% продакшен-кода идёт так, я на Claude Max за 200 баксов сижу), реальный bottleneck это не скорость генерации и не размер контекста. Это циклы починки. Агент пишет код, компилятор или линтер ругается, агент читает ругань, что-то предполагает, делает фикс, гоняет снова. Тут и начинается треш.
Формат ошибок меняется между версиями компилятора. Одну и ту же ошибку можно описать по-разному в зависимости от контекста. Текст бывает неоднозначным. У ошибки нет встроенного понятия “вот действие, которое её чинит” — только проза, которую агент должен распарсить и угадать.
С iOS Metal pipeline я недавно ловил ровно это в ONEMIX. Краш в RTCView, обёрнутом в Animated.View. Агент видел крэш-репорт, видел стектрейс, читал ошибку, и упорно тянул не туда. Я в итоге сам разобрался. Но смысл-то агентной работы как раз в том, чтобы я не разбирался.
Zero пытается это починить с другой стороны. Не делать модели умнее, а делать тулчейн понятнее.
Где собака зарыта
Идея огонь. Реализация — версия 0.1.1.
Реестра пакетов нет. Кросс-компиляция работает на узком наборе таргетов. VS Code расширение даёт только подсветку, и всё. Borrow checker слабее Rust-овского. LLVM нет, что одновременно плюс (быстрая сборка, маленькие бинарники) и минус (никакой серьёзной оптимизации, никакого backend для всего кроме небольшого набора платформ). Сами Vercel честно пишут — это эксперимент, не продакшен-зависимость.
Дальше вопрос, на который у меня пока нет ответа. А структурированные JSON-диагностики это вообще решение языкового уровня? У rustc есть --message-format=json. У TypeScript есть --pretty false и парсеры. У Clang есть -fdiagnostics-format=json. Куча инструментов уже умеет это выдавать.
Разница в том, что у Zero коды стабильные, документированные, и привязаны к типизированным репейр-планам. Это не JSON ради JSON, это контракт. Но такой же контракт можно прикрутить и к существующим языкам — сложнее, костыльнее, но можно. Делать ради этого новый язык — амбициозная ставка.
Ещё момент. Капабилити-модель и явные эффекты не новое. Haskell с монадами эффектов, Koka с алгебраическими эффектами, Roc. Только в этих языках всё было сделано для людей, которые хотят чистоту. В Zero ровно та же дисциплина под другим соусом — это нужно агенту, чтобы понимать код без выполнения.
Так нужно или нет
Мой стек это React Native, Expo SDK 54, Drizzle, FastAPI, иногда Rust под Tauri в Лире. Системного программирования на сабмегабайтных бинарниках у меня примерно нигде нет. В продакшене Zero мне сейчас не нужен никак.
Но я попробую его на одной маленькой задаче, чтобы проверить гипотезу. У меня есть пара утилитных CLI на бэке ONEMIX — обработка ассетов, проверки целостности чатов в SQLite, что-то такое, всё на Python. Идеальный кандидат для эксперимента: переписать одну на Zero и посмотреть, реально ли агенту с ней ловчее по сравнению с тем же Python или Go. Если разница ощутимая — можно думать дальше.
Подозреваю что не сильно. Потому что в моей работе бутылочное горлышко не там, где Zero его чинит. Циклы починки у меня ломаются не на парсинге ошибок компилятора, а на семантических багах. Код собирается, тесты идут, но логика делает не то. Тут никакой JSON-диагностики не спасёт.
Что я думаю про всю эту волну
Vercel в январе запустил skills.sh, npm для AI-агентов. 26 тысяч установок React Best Practices за пару дней — это уже не маркетинг, это реальный спрос. Anthropic пушит Claude Skills, у меня самого пачка SKILL.md под Claude Code. Сейчас вот Zero. Тренд очевидный. Тулчейн под агентов перестают делать как обёртку поверх человеческого с переводчиком, и начинают делать как отдельный класс артефактов.
Я не знаю, выстрелит ли Zero. Может через два года это будет зомби-проект с пятью контрибьюторами. Может Vercel приделают к нему серверлесс-деплой и сделают свой Cloudflare Workers на стероидах. Может идею стащит кто-то третий и сделает её на базе LLVM с нормальной экосистемой.
Что точно — направление правильное. Языки, которыми мы сейчас пользуемся, проектировались для людей, которые читают ошибки глазами. Агенты не люди. Если четверть всего ИИ-кодинга это задачи, которые иначе никогда бы и не сделали (свежий отчёт Anthropic), наши инструменты должны меняться под нового потребителя.
Просто я бы пока не сжигал свои Python-проекты ради переезда. Подожду 0.5 минимум.
Автор: niktomimo


