Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Введение

Aura — конфигурационный язык, который компилируется в JSON/YAML/TOML. Он создан вокруг трёх обещаний:

  1. Детерминизм по построению. Два запуска дают побайтно одинаковый результат. В языке нет now(), случайности и неявного доступа к окружению — всё внешнее (файлы, переменные среды) приходит только через явные права, выданные при запуске.
  2. Безопасность цепочки поставок. Импортированный пакет физически не может читать ваши файлы и переменные окружения — capability-модель в стиле Deno, но строже: даже вызов экспортированной функции пакета выполняется с правами пакета, а не вашими.
  3. Валидация до деплоя. Схемы с типами, assert-инварианты, статический анализ мёртвого кода — ошибки конфигурации ловятся при сборке, а не в проде.

Как это выглядит

type Service
  name: String
  port: Int
end

base_port = 8000 # приватное вычисление
is_prod   = env("APP_ENV", "dev") == "production"

api: new Service # свойство — попадает в вывод
  name: "api"
  port: base_port + 1
end

replicas: is_prod ? 3 : 1
assert base_port > 1024, "privileged ports are not allowed"
aura eval app.aura --allow-env=APP_ENV

Кому это нужно

  • DevOps/SRE: манифесты k8s, CI-матрицы, конфиги сервисов — без копипасты YAML и с проверкой схем до kubectl apply.
  • Платформенным командам: публикуемые пакеты стандартов (pub def/pub type) с версиями и integrity-локом.
  • Разработчикам приложений: одна .aura-декларация → JSON/YAML/TOML для любого потребителя; для Rust — прямое встраивание библиотекой.

Где что лежать

  • Эта книга — учебник и справочник для пользователя языка.
  • SPEC.ru.md — формальная спецификация для разработчиков реализации.
  • examples/ — работающие примеры с ожидаемыми выводами.

Основная версия книги — английская. Русская публикуется под /book/ru/ и является полным переводом; при расхождении верна английская.