目录

MoonDepSolve

MoonDepSolve is a small MoonBit library for semantic version parsing, version range matching, and deterministic dependency resolution. It is designed as a basic package-ecosystem component for MoonBit tooling, build planning, package auditing, and dependency conflict diagnosis.

Current public repositories:

The repository keeps its original submission history, while the project itself has been rebuilt as MoonDepSolve.

Features

  • Parse semantic versions such as 1.2.3 and 1.2.3-alpha.1.
  • Compare stable and prerelease versions.
  • Parse version requirements:
    • exact: 1.2.3
    • caret: ^1.2.0
    • tilde: ~1.2.0
    • comparator set: >=1.0.0 <2.0.0
    • wildcard: 1.2.x
  • Resolve transitive dependencies from an in-memory package registry.
  • Select the highest compatible version deterministically.
  • Report readable conflicts with dependency paths.
  • Format a stable dependency lock result for demos and tests.

Public API

parse_version(input : String) -> Result[Version, DepError]
parse_req(input : String) -> Result[VersionReq, DepError]
matches(version : Version, req : VersionReq) -> Bool
resolve(root : Array[Dependency], registry : Registry) -> Result[Resolution, DepError]
format_error(err : DepError) -> String
format_lock(resolution : Resolution) -> String

Example

let registry : @moondepsolve.Registry = {
  packages: [
    {
      name: "core",
      version: version("1.2.0"),
      dependencies: [],
    },
    {
      name: "http",
      version: version("0.3.4"),
      dependencies: [dependency("core", "^1.0.0")],
    },
  ],
}

match @moondepsolve.resolve([dependency("http", "~0.3.0")], registry) {
  Ok(result) => println(@moondepsolve.format_lock(result))
  Err(err) => println(@moondepsolve.format_error(err))
}

Demo

moon run cmd/main

The demo builds a tiny package registry, resolves appkit@1.0.0, and prints a stable dependency lock result.

Test

moon test

The test suite covers version parsing, prerelease comparison, range matching, transitive resolution, conflict diagnosis, and lock output.

License

Apache-2.0

关于

MoonDepSolve 是一个面向 MoonBit 包生态的基础软件组件,提供语义版本解析、版本约束匹 配、依赖图求解、冲突诊断和锁文件格式化能力。项目采用纯 MoonBit 实现,不依赖外部服务,可作 为包管理器、构建系统、依赖审计工具和自动化发布流程中的底层模块

1.1 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号