跳到正文贡献指南
代码风格
- 使用
just fmt 格式化 MoonBit 代码。
- 优先按包边界组织文件,再按具体行为拆分。
- 注释保持简短、技术化,只解释契约、不变量或不明显的实现选择。
命名约定
- 绑定与函数:小写字母加下划线,例如
scaled_value。
- 类型与 trait:PascalCase,例如
Solver。
- 文件:小写字母加下划线,并以具体行为命名。
- 如需引入错误码,应使用大写字母加下划线,并以
E_ 为前缀。
测试
- 行为变更时同步添加或更新测试。
- 根据访问需求使用包内
*_test.mbt 或 *_wbtest.mbt。
- 常规验证运行
just test,提交 PR 前运行 just ready。还要运行 moon test --target native:异步的 Mare Mark 测试不会在默认的 wasm-gc 目标上运行。
- 用算术或
parse_decimal_value 构造很长的 BigInt 测试值,不要用 BigInt::from_string,它在 wasm-gc 上会错误解析长字符串。
- 新增的被测运算需要一条预言机规则、一个能容纳精确结果的工作精度界,以及在计时之前与预言机对照的测试。
- 公共 API 变化时用
just info 重新生成接口文件。
文档
- 英文手册位于
doc/manual:每个包一份 API、教程和设计页,以包路径命名,另有性能章节。
- 保持 MoonBit 示例可编译;有意不完整的片段用
moonbit nocheck 标注代码块。
- 修改英文页面后,运行
lunadoc update 并更新 doc/locale 中的中文与日文目录。
依赖
- 通过
just update-deps 更新依赖。
- 提交前检查
moon.mod diff。
- 避免在无关 PR 中修改依赖或版本声明。
提交规范
- 使用简洁的英文 Conventional Commit 提交信息,例如
fix: handle empty input。
- 每个提交只聚焦一个逻辑变更。
发布检查清单
- 更新
moon.mod 中的 version。
- 确认 README 和文档反映当前包状态。
- 运行
just ready。
- 手动触发
publish-package GitHub Actions workflow,并输入与 moon.mod 完全一致的版本号。