PubGrub 版本的求解算法在 Rust 中实现
PubGrub 是一个高性能的版本解析算法,具有良好的错误消息,它可以找到一组满足一组包及其传递依赖关系所有约束的包和版本。本 Rust 实现被 [uv][uv] 使用,并被指定为 cargo 的求解器的替代方案,而其他 PubGrub 实现则被 [dart][medium-pubgrub], [bundler][bundler] 和 [poetry][poetry] 使用。
PubGrub 的 Rust 实现具有高度的灵活性。它适用于包类型(包括虚拟包)、版本格式和使用的版本集,用户可以控制包和版本的优先级(包括最高和最低版本的解决方案),并且错误渲染可以自定义。
PubGrub 在 2018 年由 Natalie Weizenbaum 发布 [博客文章][medium-pubgrub],她为 dart 包管理器开发了它。从算法上讲,它是一种使用冲突驱动的子句学习的 SAT 解决器。关于算法的详细说明可在 [GitHub][GitHub-pubgrub] 中找到,并由我们的 [内部指南][guide-internals] 补充。该算法的基础是答案集编程 (ASP),Martin Gebser、Roland Kaminski、Benjamin Kaufmann 和 Torsten Schaub 的《[实践中的答案集求解][potassco-book]》一书中提供了详细介绍。
来自博客文章的错误消息: 由于 dropdown >=2.0.0 依赖 icons >=2.0.0,而 root 依赖 icons =2.0.0,这是被禁止的。 由于 menu >=1.1.0 依赖 dropdown >=2.0.0,因此 menu >=1.1.0 被禁止。 此外,由于 menu >=1.1.0 依赖 icons =2.0.0,因此 icons =2.0.0 被禁止。
[][guide] [][docs] [][crates]
暂无开放 Issues,或尚未同步最近议题。