## moonsbe 项目申报书

**基本信息**

- 项目名称：moonsbe：SBE 标准消息编解码与 MoonBit 代码生成库
- 参赛者：马昀昀
- 联系方式：1498657823@qq.com
- GitHub 仓库链接：[https://github.com/liyun6666/moonsbe](https://github.com/liyun6666/moonsbe)
- 项目方向：MoonBit 标准协议基础库 / 跨语言消息互操作 / 开发者工具
- 是否为移植项目：否，原创 MoonBit 实现，引用上游标准示例进行独立验证

**项目简介**

moonsbe 让 MoonBit 程序使用现有 SBE XML Schema 交换二进制消息。库提供 Schema 编译、消息编解码、版本检查和类型化代码生成。0.2.0 已通过 Java 参考实现的双向互通验证，可从 Mooncakes 安装。

**使用场景**

1. **跨语言服务接入**。MoonBit 网关可用生成的定长视图直接读序号和状态，按需解析完整消息，并向 Java 服务发送同一 Schema 定义的响应。
2. **二进制记录检查**。开发者将有明确消息边界的记录按 Schema 解码为 JSON，核对字段并定位模板不匹配或截断问题。
3. **消息定义升级验收**。团队比较新旧 Schema，在 CI 中验证 Java 与 MoonBit 双向编解码及完整字节一致性。

**核心功能范围**

- 按 Schema 编译自定义消息头和扩展组维度，支持字段偏移、不同无符号宽度和扩展计数。
- 支持可选复合字段、复合成员 `sinceVersion`、双字节序、嵌套组及变长数据。
- 生成 MoonBit 类型与定长数值视图，按编译时确定的偏移读取原始字节。
- 提供 CLI、JSON 转换和版本检查。JS 与 Wasm GC 各通过 44 个测试，官方 Car 报文和两条扩展报文与 Java 逐字节一致。

**移植或参考说明**

- 参考规范：FIX Trading Community SBE 1.0 with Errata November 2020。
- 参考项目：[aeron-io/simple-binary-encoding](https://github.com/aeron-io/simple-binary-encoding)，固定参考工具版本 1.35.0。
- 上游许可证：Apache License 2.0，引用的 Schema 与示例 Java 源码保留版权声明。
- 本项目许可证：Apache License 2.0，手写 MoonBit 实现、测试与生成产物分别统计。

定长视图适用于读取根块的数值字段，完整编解码使用共享校验运行时。兼容范围与复现步骤见仓库文档。
