Babashka & Clojure
Инструменты на Clojure для автоматизации и валидации в экосистеме Rule-ROM.
Настройка
Инструменты на основе Clojure для автоматизации задач в экосистеме Rule-ROM.
Требования
- Java 11+ (для Babashka)
- Babashka (scripting Clojure без JVM)
Установка
Windows (через Scoop)
scoop install babashka
Linux
curl -s https://raw.githubusercontent.com/babashka/babashka/master/install | sudo bash
macOS (через Homebrew)
brew install babashka
Проверка установки
bb --version
Использование в Rule-ROM
Запуск Enforcer
# Генерация AST
clang -Xclang -ast-dump=json -fsyntax-only test.c > ast.json
# Валидация
bb -m garden.enforcer ast.json
Запуск Echo (генерация отчётов)
bb -m garden.echo ast.json
Пример EDN-контракта
{:intent :safe-free
:entities [:ptr]
:must-set-null true
:description "После free() указатель должен быть установлен в NULL"}
Пример garden-тегов в C
// [[garden:intent(safe-free)]]
void cleanup(void* ptr) {
free(ptr);
ptr = NULL;
}
// [[/garden:intent]]
Ресурсы
| Ресурс | Описание |
|---|---|
| Babashka Docs | Официальная документация |
| Clojure EDN | Спецификация EDN |
| Garden-Core | Исходный код движка |
Ссылки
Bake the Future. Build the Substrate. 🛠️⚡️