Skip to content

Контроль границ (BOUNDS)

Intent ID: :bounds-checked-access
Статус: 🚧 Draft
Версия: 0.1

Описание

Контракт для проверки границ массивов и буферов. Обеспечивает детерминированную валидацию индексов перед доступом к памяти.

EDN Спецификация (Draft)

{:intent :bounds-checked-access
 :entities {:array {:type "T[]" :role :bounded-buffer}
            :index {:type "size_t" :role :access-key}}
 :invariants [
   ;; Правило: индекс должен быть в пределах [0, size)
   {:op :access :target :array :index :index
    :precondition {:and 
      [{:gte :index 0}
       {:lt :index :size}]}}
 ]
 :tags {:wrap "// [[garden:bounds-checked]]"}}

Пример использования

✅ Валидный код

// [[garden:intent(bounds-checked-access)]]
int safe_array_access(int* arr, size_t size, size_t index) {
    if (index < size) {  // Проверка границы
        return arr[index];
    }
    return -1;  // Ошибка выхода за границы
}
// [[/garden:intent]]

❌ Нарушение

// [[garden:intent(bounds-checked-access)]]
int unsafe_access(int* arr, size_t size, size_t index) {
    return arr[index];  // ОШИБКА: нет проверки границы
}
// [[/garden:intent]]

Bake the Future. Build the Substrate. 🛠️⚡️