M MoonDepSolve GitHub

MoonBit package ecosystem tooling

Dependency solving that reviewers can run, inspect, and trust.

MoonDepSolve provides semantic-version parsing, deterministic dependency resolution, stable lock output, dependency graphs, conflict reports, and exact upgrade planning for MoonBit tools.

strict verification
$ moon check --deny-warn
Finished. moon: ran 5 tasks

$ moon test --deny-warn
Total tests: 27, passed: 27

$ moon publish
Server status: 200 OK
Dependency resolution flow from registry and roots to lock output, graph output, and conflict reports
v0.3.1 published on Mooncakes
deny-warn strict compiler gates
GitLink + GitHub same master commit
Apache-2.0 open-source release

Why it exists

A small dependency core for MoonBit package tools.

Stable decisions

Version candidates are ordered deterministically, so the same registry and roots produce the same result.

Explainable failures

Conflict reports keep the package name, requirement, selected version, dependency path, and candidates visible.

Reusable boundary

The library keeps solving, lock output, graphs, and upgrade planning separate from any one package manager UI.

Capabilities

From version text to a reviewable dependency state.

Deterministic transitive resolution

Parse registry rows, match version requirements, select compatible package versions, and write stable lock output for downstream tools.

  • Semantic version and requirement parsing
  • Stable lock format with readback
  • Text graph and Graphviz DOT output

CLI demo

Real commands, fixed expected output.

Resolve a registry

moon run cmd/cli --target native -- \
  resolve \
  --registry examples/registry.txt \
  --root 'app:^1.0.0' \
  --format lock

Plan the exact upgrade

moon run cmd/cli --target native -- \
  plan \
  --registry examples/registry.txt \
  --lock examples/current.lock \
  --root 'app:^1.0.0' \
  --strategy minimal

Minimal-change output

strategy: minimal-change
changes: 0
target lock:
# MoonDepSolve lock
app 1.0.0
core 1.0.0
logging 1.0.0

Evidence

Acceptance signals are part of the product surface.

API surface

A compact library boundary for package managers and audits.

Versions parse_version, format_version, compare_version
Resolution resolve, parse_registry, format_lock, parse_lock
Reports build_dependency_graph, build_conflict_report
Upgrade planning default_upgrade_options, plan_upgrade, format_upgrade_plan

Exact signatures are tracked in pkg.generated.mbti.

OSC2026 delivery

Built as an inspectable competition artifact.