KAOS-RT развивается как компактное и понятное ядро. Хорошее изменение делает систему полезнее, не усложняя её модель исполнения и не скрывая важных условий от пользователя.
Перед изменением ядра прочитайте контракт. Если изменение меняет публичный API, семантику событий, таймеров или жизненного цикла автомата, сначала опишите предлагаемый сценарий применения в обсуждении задачи.
- исправление с воспроизводимым описанием проблемы;
- новый порт для конкретного МК или семейства;
- минимальный пример, который показывает практическое применение;
- уточнение документации, устраняющее неоднозначность;
- небольшое улучшение ядра с понятной причиной и проверкой результата.
Не объединяйте в одном запросе функциональное изменение, рефакторинг и массовое форматирование.
Ядро сохраняет статическое размещение памяти, кооперативное выполнение и
фиксированный порядок обслуживания автоматов. Изменение не должно добавлять
скрытую динамическую память, поток исполнения, блокирующее ожидание или
платформенную зависимость в fsm.c и fsm.h.
Callback автомата и fsm_loop_service() выполняют ограниченный шаг работы.
Публичный API меняется только вместе с контрактом и подходящим примером.
Порт размещается в port/<семейство_МК>/. В его README или в описании запроса
должны быть указаны:
- точная модель МК или поддерживаемое семейство;
- компилятор и необходимые расширения языка;
- источник логических тиков и его разрядность;
- способ создания критической секции;
- параметр частоты источника времени, задаваемый конфигурацией платы;
- известные ограничения и способ проверки на целевой платформе.
Порт не должен задавать частоту аппаратного источника времени по умолчанию. Она принадлежит конфигурации платы и её дерева тактирования. Подробнее — в PORTING.md.
В описании запроса укажите:
- цель изменения и затронутые файлы;
- конфигурацию сборки;
- выполненную проверку и её результат;
- платформу для изменений порта или примера.
Изменение ядра, событий или таймеров проверяйте в прикладном сценарии. Изменение порта проверяйте на соответствующей платформе, если она доступна.
README остаётся краткой точкой входа. Условия работы ядра описываются в контракте, а ограничения конкретной платформы — рядом с её портом. Комментарий нужен там, где он объясняет нетривиальное решение, предусловие API или аппаратное ограничение.
Отправляя вклад, автор подтверждает право передать его в проект по Apache License 2.0. Не добавляйте сторонний код без совместимой лицензии и обязательных уведомлений.