MoonBit compiler fuzzing/analysis harness
moon 0.1.20261104 (940aa18 2026-11-04)
moonc v0.10.20+65efd5b93 (2026-11-05)moon add I3eg1nner/mbtfuzzgit clone https://github.com/I3eg1nner/moonc-fuzz.git
cd moonc-fuzz/moonbit
moon check && moon test| Package | Role |
|---|---|
| trace/ | nm -n symbol table + QEMU -d exec trace → function set |
| cov/ | JSON function-set algebra, union/intersection/diff, greedy minimization |
| mutate/ | structure-aware mutator, deterministic splitmix64 RNG |
| exec/ | async child-process runner with hard timeout |
| corpus/ | seed walking, SHA-1, finding storage |
| oracle/ | wasm/js and wasm/native build + link + run differential |
| cmd/trace2funcs | offline trace converter |
| cmd/cov | coverage JSON CLI |
| cmd/fuzz | T1/T2 campaign driver (mbt, moon.pkg, moon.mod, .mbt.md, .mbti, .mbtx) |
| cmd/bytefuzz | byte-level fuzzer for invalid UTF-8 |
| cmd/diffprobe | one-program differential probe |
| cmd/regress | 12-case defect regression (F1–F6, P1) |
| cmd/f6matrix | F6 native-export boundary matrix (8 closure shapes + 2 controls) |
| cmd/accept | migration acceptance gate |
cd moonbit
moon check
moon test
# One bounded campaign.
moon run cmd/fuzz -- \
--root .. --out ../out/mb_campaign \
--mode mbt --workers 48 --duration 120 --p-deep 50 --body-only
# Invalid-UTF-8 campaign.
moon run cmd/bytefuzz -- \
--root .. --out ../out/mb_bytes \
--mode mbtmd --workers 16 --duration 60
# Acceptance: tests, build, regressions, trace parity, oracle.
moon run cmd/accept -- ..../examples/trace2funcs.sh