# kern ![Coverage](./docs/img/coverage.svg) ![MX Linux](https://img.shields.io/badge/-MX%20Linux-%23000000?style=for-the-badge&logo=MXlinux&logoColor=white) ![Go](https://img.shields.io/badge/go-%2300ADD8.svg?style=for-the-badge&logo=go&logoColor=white) ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white) [![License: UCL](UCL)](./LICENSE.md) **kern** -- фреймворк модульных компонентов ядра с высокой надёжностью для любого микросервиса или модульного монолита. Позволяет создавать изолированные модули в составе монолита (полезно в начале разработки). А затем модули можно выносить в отдельные микросервисы (после отладки). ## Контакты Пишите запросы в соответствующем [разделе](https://gitp78su.ipnodns.ru/svi/kern/issue?status=). ## Статус проекта * готовность: `92%`; * покрытие тестами: `100%`; * линтеры: `no errors`; * цикломатическая сложность: `< 11`. ## Состав Команда вывода дерева: ```bash tree -I vendor -I bin_dev -d ``` ```bash . ├── kc # Вспомогательные компоненты │ ├── helpers # Жёсткий и мягкий assert │ ├── local_ctx # Локальный контекст │ │ └── ctx_value # Переменная контекста с метаинформацией │ ├── log_buf # Буферизованный лог │ │ └── log_msg # Сообщение буферизованного лога │ └── safe_bool # Потокобезопасная булева переменная ├── krn # Компоненты ядра │ ├── kalias # Алиасы типов ядра │ ├── kbus # Шина данных ядра │ │ ├── dict_sub_hook # Словарь обработчиков подписок │ │ ├── dict_topic_serve # Список топиков для обработчиков входящих запросов │ │ ├── dict_topic_sub # Список топиков подписки │ │ ├── kbus_base # БазоваЯ шина данных │ │ ├── kbus_http # Шина данных поверх HTTP │ │ │ └── client_bus_http # Клиент для шины данных поверх HTTP │ │ ├── kbus_local # Локальная шина данных │ │ │ └── client_bus_local # Клиент для локальной шины данных │ │ └── kbus_msg # Сообщения для всех сетевых шин │ │ ├── msg_pub # Сообщения для публикации │ │ ├── msg_serve # Сообщения для запросов │ │ ├── msg_sub # Сообщения для подписки │ │ └── msg_unsub # Сообщения для отписки │ ├── kctx # Контекст ядра │ │ ├── kernel_keeper # Сторож сигналов ОС │ │ └── kwg # Именованный ожидатель групп │ ├── kmodule # Компонент модуль ядра │ ├── kmonolit # Компонент модульного монолита ядра │ ├── kserv_http # Компонент встроенного быстрого HTTP-сервера (fiber) │ │ └── static # Встраиваемые статические файлы │ │ ├── css # Встраиваемые стили (bootstrap) │ │ └── js # Встраиваемые скрипты (htmx, hyperscript, bootstrap) │ ├── kstore_kv # Встраиваемое быстрое key:value хранилище (Badger) │ └── ktypes # Интерфейсы ядра ├── mds # Типовые модули ядра └── mock # Мок-объекты для тестирования и экспериментов ├── mock_env # Мок-окружение для запуска компонентов ядра ├── mock_hand_serve # Мок-обработчик входящих запросов ├── mock_hand_sub_http # Мок-обработчик подписки через HTTP-шину └── mock_hand_sub_local # Мок-обработчик подписки через локальную шину ``` ## Версия компилятора Не ниже `go 1.24.0` ## Лицензия Код открытый, [лицензия UCL](./LICENSE.md) или `MIT`. ## Команды сборки ```bash make # Запуск демо make demo # -//- make mod # Обновление зависимостей make test # Запуск тестов make lint # Запуск линтеров ```