Menu
Coddy logo textTech

Пишите, запускайте и делитесь фрагментами кода — без установки.

main.0
Output
Click Run to see the output here.

Попробуй Zero в браузере

Zero — это новый системный язык программирования от Vercel Labs, первый релиз вышел в мае 2026 года. Внешне он напоминает Rust — pub fun, let mut, ->, дженерик-скобки — но цель дизайна необычная: весь toolchain рассчитан на то, чтобы его читали, правили и чинили AI-агенты так же легко, как и люди. Диагностика отдаётся в виде структурированного JSON со стабильными error code'ами, компилятор умеет выдавать типизированные repair plan'ы, а бинарники укладываются меньше чем в 10 KiB. Playground даёт тебе чистый редактор, чтобы покопаться в языке без какой-либо установки.

Самая характерная идея Zero — это I/O на capability'ях. Никаких неявных глобалов и ambient stdout — функция, которая хочет писать в терминал, обязана принять параметр World и вызвать world.out.write(...). Ошибки распространяются через raises и check вместо исключений и panic'ов, а опциональные значения используют .has / .value вместо null. Жмёшь Run — редактор компилирует код на сервере и показывает вывод. Stdin ещё не подключен, потому что Zero v0.1.3 пока не выпустил stdin-API — используй std.args через панель Args.

Чем интересен Zero

  • I/O на capability'ях: каждый сайд-эффект (stdout, файлы, сеть) проходит через параметр World, и сигнатура функции честно говорит, к чему она может прикоснуться. Никаких скрытых глобалов, никакого неявного allocator'а, никакого внезапного async.
  • Toolchain, заточенный под агентов: zero выдаёт стабильную JSON-диагностику, zero fix --plan --json генерирует типизированные repair plan'ы, и каждый subcommand CLI принимает --json, чтобы агенты pipe'или вывод, а не парсили его регулярками.
  • Крошечные нативные бинарники, часто меньше 10 KiB. Компилятор использует прямые emitter'ы для ELF, Mach-O, PE и WebAssembly, так что за собой не тащит зависимость от LLVM.
  • Знакомый синтаксис, более жёсткая безопасность: на бумаге похоже на Rust, но без panic-on-null, без неявного GC и без скрытого control flow. Ошибки — это просто значения, которые ты пробрасываешь через check.

Что попробовать в Zero playground

  • Напечатай что-нибудь через world.out.write и посмотри, как аннотация raises заставляет тебя обработать ошибочный путь через check. Это вся идиома Zero для безопасности без исключений в одном крошечном примере.
  • Прочитай аргумент командной строки через std.args.get(N) и распакуй optional через .has / .value. Подредактируй значения в панели Args под редактором — они передаются твоей программе на Run, ровно как настоящий argv.
  • Напиши маленькую fun, возвращающую String, вызови её из main и посмотри, как типы протягиваются сами. Zero выводит generic'и агрессивнее, чем Rust, так что большинству вызовов вообще не нужны аннотации.

Частые вопросы о Zero

Что такое язык программирования Zero?
Zero — это экспериментальный systems language от Vercel Labs, впервые выпущенный в мае 2026 года. Он компилируется в небольшие нативные исполняемые файлы (часто меньше 10 KiB) и построен с прицелом на AI coding-агентов: компилятор отдаёт структурированную JSON-диагностику, каждый subcommand CLI принимает --json, а отдельный режим zero fix --plan производит типизированные repair plan'ы, которые агенты применяют напрямую. Синтаксически он находится где-то между Rust и Zig. Главная идея — capability-based I/O через параметр World.
Нужно ли устанавливать компилятор Zero, чтобы пользоваться этим playground'ом?
Нет. Coddy запускает toolchain zero на сервере, в изолированном контейнере, поэтому ты пишешь код в браузере и жмёшь Run. Версия компилятора зафиксирована (сейчас v0.1.3), и sandbox одинаков для каждого запуска. Если ты хочешь ещё и разрабатывать локально, проект Zero публикует готовые бинарники на странице GitHub releases.
Почему у Zero playground'а нет поля для stdin?
Потому что Zero v0.1.3 пока не предоставляет stdin-API. Язык контактирует с внешним миром только через capability'и параметра World (world.out, world.err), плюс std.args для аргументов командной строки и std.env для переменных окружения. Пока Vercel Labs не выпустит stdin-capability, используй панель Args под редактором — так ты передаёшь программе ввод.
Что такое capability World и почему её получает main?
В Zero нет неявного глобального namespace'а для I/O. Функция, которая хочет писать вывод, читать файлы или ходить в сеть, обязана принять значение World и вызывать на нём методы (world.out.write, world.err.write и так далее). Это превращает сигнатуру в честную декларацию сайд-эффектов — функция без World доказуемо не может коснуться внешнего мира. main получает её, потому что runtime — это и есть тот, кто выдаёт начальную capability.
Что означают raises и check?
Zero обрабатывает ошибки явно, а не через исключения. Функция, которая может упасть, помечает свою сигнатуру raises (опционально перечисляя конкретные имена ошибок), а вызывающий пишет check expr, чтобы пробросить ошибку вверх по стеку. Думай об этом как об операторе ? из Rust, но с именованными типами ошибок: ошибки — это значения, а не сюрпризы потока управления.