CLI / CI
moon run cmd/main -- check old.mbti new.mbti
moon run cmd/main -- check-dir old_dir new_dir \
--ignore-path '**/internal/**' --format html \
--github-summary
OSC 2026 · MoonBit 工程基础设施
把两次 .mbti 快照变成可阻断发布的兼容性信号:breaking / compatible / SemVer / CI。
MoonBit 包一旦发布到 mooncakes.io,下游依赖其公开接口。函数改名、返回类型变化、enum 增 variant 都会悄悄打断消费者。moon_api_guard 在发布前把这些变化变成明确信号。
moon run cmd/main -- check old.mbti new.mbti
moon run cmd/main -- check-dir old_dir new_dir \
--ignore-path '**/internal/**' --format html \
--github-summary
{
"strict": false,
"allow": ["variant-added"],
"ignore": ["deprecated"]
}
支持 --policy,或自动发现仓库根目录的 moon_api_guard.json。
./scripts/demo.sh —— 跑完整回归并生成 HTML| 变化 | 默认 | detail |
|---|---|---|
| 可选标签参数新增 | compatible | optional-parameter-added |
| async / noraise 变化 | breaking | async-* / noraise-* |
| enum 增 variant | breaking | variant-added |
| enum variant payload 变化 | breaking | variant-changed |
| typealias / const 变化 | breaking | alias-* / const-* |
完整规则见仓库 docs/rules.md。