App-Core 4 是面向 Linux/POSIX C11 应用的可组合基础库。它将公共基础设施、模块生命周期和进程内通信 拆成可独立安装、独立链接的目标,借鉴 Linux 内核在分层、静态发现、依赖管理、引用计数、有界队列和 故障回滚方面的设计思想,但不实现内核、网络协议栈、文件系统、驱动或 RTOS 兼容层。
| 领域 | 框架机制 | 主要保证 |
|---|---|---|
| 组件治理 | sys_component |
init → start → stop → deinit、依赖排序、required/optional、逆序回滚 |
| 控制面 | sys_service |
模块/接口 ID、ABI 和操作表大小校验、安全注销 |
| 消息面 | sys_event |
同步反馈、有界异步队列、ABI 标记、退订屏障和统计 |
| 数据面 | sys_channel |
预分配缓冲池、引用计数、零 payload 拷贝、有界背压和丢弃策略 |
| 进程运行时 | sys_runtime |
signalfd/eventfd/poll 驱动的 SIGINT、SIGTERM 和程序化退出 |
| 并发治理 | sys_thread |
线程命名、协作停止、超时 join、运行及未回收句柄统计 |
| 可观测性 | sys_log、状态快照 |
统一日志、稳定错误文本、组件/服务/事件/通道统计 |
| 构建治理 | *.module 清单 |
模块 ID、配置、源码和依赖的单一构建事实源 |
源码按职责放在三个目录中:
libs/foundation/ 错误类型、日志、受管线程
libs/module/ 组件生命周期、进程运行时、模块状态
libs/communication/ 服务、事件、数据通道及通信生命周期
module 与 communication 互不链接,只共同依赖 foundation。因此只需要通信机制的项目无需引入模块
发现与生命周期代码,只需要模块治理的项目也无需启动事件线程或链接通道实现。
网络、存储、媒体和设备访问继续复用 Linux 的 socket、epoll、io_uring、文件描述符、标准协议帧及 成熟第三方库。App-Core 负责这些业务模块的生命周期、契约、通信和可诊断性,不复制已有系统能力。
./build.sh
ctest --test-dir output --output-on-failure
./output/app_core常用构建入口:
./build.sh menuconfig
./build.sh release
./tools/ci.sh quick
./tools/ci.sh full每个应用模块在 app/features/ 中提供一个清单,例如:
name=example
id=0x0600
config=ENABLE_EXAMPLE
prompt=启用 Example 模块
default=n
sources=example_mod.c
depends=ENABLE_WIFI
CMake 和 menuconfig.py 会拒绝重复 ID/名称/配置项、未知字段、越界 ID、不存在的源码、未知依赖和
依赖环。稳定模块 ID 发布后不得复用或改义。
cmake -S . -B output -DCMAKE_BUILD_TYPE=Release -DAPP_CORE_BUILD_EXAMPLE=OFF
cmake --build output --parallel
cmake --install output --prefix /opt/app-core下游 CMake 项目:
find_package(AppCore 4 REQUIRED)
# 三选一:
target_link_libraries(module_app PRIVATE AppCore::module)
target_link_libraries(bus_app PRIVATE AppCore::communication)
target_link_libraries(full_app PRIVATE AppCore::framework)AppCore::framework 是兼容完整应用的组合目标,等价于同时链接 AppCore::module 和
AppCore::communication,但两个库的生命周期仍需显式管理:先调用 sys_communication_init(),再调用
sys_core_init();关闭时按相反顺序执行。
详细架构边界见 docs/architecture.md,开发与构建标准见 docs/build.md,面向新人的完整框架与通信机制说明见 docs/framework-design-guide.md,通信方案专项评审见 docs/communication-solution-review.md。历史接续信息见 docs/project-memory.md,测试项目和正式准入说明见 docs/testing-guide.md。