Workspace и crates
Структура репозитория fusion-framework — fusion-core, биндинги и артефакты пакетов
Карта репозитория
Репозиторий fusion-framework — это Cargo workspace. Языковые пакеты публикуются из этого монорепозитория; CLI живёт в отдельном репозитории (fusion-tool).
| Путь | Роль | Публикуемый артефакт |
|---|---|---|
crates/fusion-core/ | Общий Rust-движок (Hyper + Tokio) | Библиотека, используемая всеми биндингами |
crates/fusion-py/ | Расширение PyO3 + Python-пакет | PyPI fusion-framework |
crates/fusion-node/ | N-API addon + JS-фасад | npm fusion-framework |
crates/fusion-ffi/ | C ABI (cdylib / staticlib) | Нативная библиотека для C# |
bindings/csharp/FusionFramework/ | Управляемый C#-биндинг | NuGet Fusion-Framework |
examples/ | Запускаемые примеры по языкам | — |
scripts/set-version.sh | Синхронный bump версии в манифестах | — |
Текущая версия пакетов workspace: 1.2.6.
Граф зависимостей
fusion-core
├── fusion-py (PyO3)
├── fusion-node (N-API)
└── fusion-ffi (C ABI)
└── C# FusionFramework (P/Invoke)Общая семантика (route-токены, coercion, envelopes, settings JSON, pagination, константы status/header, Hyper-сервер) живёт в fusion-core. Биндинги зеркалят поведение идиоматичным синтаксисом — они не должны изобретать расходящуюся HTTP-семантику.
Что куда относится
| Тип изменения | Предпочтительно |
|---|---|
| Path-токены, naming, коды статуса, ключи настроек, поведение сервера | fusion-core |
| Декораторы, reflection, подключение OpenAPI UI, async host-циклы | Языковой биндинг |
Scaffold-шаблоны, раскладка fusion init | fusion-tool (отдельный репозиторий) |
Модули ядра (выборочно)
| Модуль | Ответственность |
|---|---|
App | Router + settings; route / listen |
Router | Сопоставление метода и пути ({name}, [name]) |
Request / Response | Разобранные HTTP-значения и builders ответов |
Settings | Загрузка fusion.<env>.json, env-плейсхолдеры |
naming | Раскрытие [module] / [action] |
dispatch | Привязка аргументов + response envelopes |
pagination | Хелперы page / page_size |
server | Цикл listen Hyper, fingerprint-заголовки |
Сборка из исходников (обзор)
# Workspace
cargo check --workspace
cargo test -p fusion-core
# Python
cd crates/fusion-py && maturin develop
# Node
cd crates/fusion-node && npm install && npm run build:debug
# FFI / C#
cargo build -p fusion-ffi
dotnet build bindings/csharp/FusionFramework/FusionFramework.csprojПубликация запускается через GitHub Actions по тегам версий (vX.Y.Z) для PyPI, npm и NuGet. См. .github/PUBLISHING.md в репозитории фреймворка.