Введение
Aura — конфигурационный язык, который компилируется в JSON/YAML/TOML. Он создан вокруг трёх обещаний:
- Детерминизм по построению. Два запуска дают побайтно одинаковый результат.
В языке нет
now(), случайности и неявного доступа к окружению — всё внешнее (файлы, переменные среды) приходит только через явные права, выданные при запуске. - Безопасность цепочки поставок. Импортированный пакет физически не может читать ваши файлы и переменные окружения — capability-модель в стиле Deno, но строже: даже вызов экспортированной функции пакета выполняется с правами пакета, а не вашими.
- Валидация до деплоя. Схемы с типами,
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/и является полным переводом; при расхождении верна английская.