MoonSmith CLI, application assembly, and host integrations
flowchart LR
CLI[CLI] --> App[app]
App --> Language[MoonBit 程序与候选]
App --> Compiler[toolchains/moon]
Compiler --> Host[Host 进程与文件系统]
App --> Engine[Engine 判定与搜索]
App --> Store[artifacts]
Store --> Host
App --> Report[report]| 配置 | 构建目标与模式 | 执行器 | 默认启用 |
|---|---|---|---|
| native-debug | native debug | 生成的可执行文件 | 是 |
| native-release | native release | 生成的可执行文件 | 是 |
| wasm-gc-debug | wasm-gc debug | moonrun | 是 |
| wasm-debug | wasm debug | moonrun | 否 |
| js-debug | js debug | node | 否 |
| 字段 | 含义与限制 |
|---|---|
| name | 非空任务名,只用于记录与呈现,默认 differential |
| seed_start、sample_count | 起始种子与正整数样本数,默认自动选择起点、一个样本;整个连续范围必须落在有符号 32 位整数内 |
| generation.generator | 已支持的生成器版本标识,默认 template-rules-v2;当前还支持 template-rules-v1,未知标识在生成前拒绝 |
| generation 预算 | max_nodes、max_depth、max_attempts,沿用语言适配器预算的校验 |
| execution | 至少两个不同的已支持 configurations,保留用户顺序;build_timeout_ms、run_timeout_ms 均为 1..600000 |
| execution.equivalent_variants | 布尔值,默认 false;开启后比较原程序和两个等价变换程序,不增加样本数 |
| reduction.candidate_limit | 每个发生分歧的样本的候选预算,范围 0..64,另外执行一次独立确认 |
| output.directory | 非空输出位置,默认 runs;文件中的相对值以实际配置文件目录为基准,默认值与 --set 相对值以调用目录为基准;绝对路径直接使用 |
task-<id>/
task.toml # 使用文件时保存的原文副本
effective.toml # 包含实际种子、覆盖值和解析后的路径
samples/
0.json
1.json
cases/
case-<id>/ # 沿用既有案例、尝试和归约格式
report.md
summary.json| 计数 | 判断依据 |
|---|---|
| 内部检查通过 | 生成器返回 CompleteProgram,不以外部编译结果替代内部检查 |
| 基线构建尝试 / 接受 | 选择了 native-debug 且实际取得构建观察 / 该构建正常退出;不选择基线时标为不可用 |
| 完整比较 | 全部计划程序与配置都取得规范的有效结果;可以存在分歧,不等同于全部一致 |