#求解器 #版本 #依赖项

resolvo

基于CDCL SAT求解的Rust编写的快速包解析器

10个版本 (6个重大变更)

0.7.0 2024年8月6日
0.6.2 2024年6月11日
0.5.0 2024年6月3日
0.4.1 2024年5月22日
0.1.0 2023年9月25日

#60 in 算法

Download history 1541/week @ 2024-05-02 1305/week @ 2024-05-09 1580/week @ 2024-05-16 2141/week @ 2024-05-23 2520/week @ 2024-05-30 2337/week @ 2024-06-06 1524/week @ 2024-06-13 1074/week @ 2024-06-20 991/week @ 2024-06-27 1480/week @ 2024-07-04 1185/week @ 2024-07-11 1711/week @ 2024-07-18 2025/week @ 2024-07-25 2337/week @ 2024-08-01 3057/week @ 2024-08-08 2514/week @ 2024-08-15

10,140 每月下载量
用于 5 个crate(3个直接使用)

BSD-3-Clause

260KB
5K SLoC

banner

Resolvo:基于Rust编写的快速包解析器

License crates.io Build Status Project Chat Docs

Resolvo实现了一个基于CDCL SAT求解的快速包解析算法。

使用Resolvo的项目

  • rip:Python PyPI包的异步解析器和安装程序
  • rattler:非异步的Conda包解析器和安装程序
  • resolvo-rpm:用于Fedora / RedHat / OpenSUSE ... RPM包的实验性RPM解析器
  • ...添加你的项目!

功能

如果resolvo找不到解决方案,它会输出一个可读的错误消息

The following packages are incompatible
├─ bluesky-widgets >=0, <100 can be installed with any of the following options:
  └─ bluesky-widgets 42 would require
│     └─ suitcase-utils >=0, <54, which can be installed with any of the following options:
        └─ suitcase-utils 53
└─ suitcase-utils >=54, <100 cannot be installed because there are no viable options:
   ─ suitcase-utils 54, which conflicts with the versions reported above.

Resolve提供了一个通用接口,允许将求解器与各种包管理器集成。例如,resolvo用于rattlerpixi来解析conda生态系统的包。

最初,resolvo是从libsolv移植或分支出来的,但它已经与libsolv有很大不同。然而,仍然使用了基于MiniSats的相同CDCL算法一个可扩展的SAT求解器。与libsolv相比的主要差异是

  • Resolvo不包含对多个包装生态系统的内置支持,而是提供了一个通用接口,以允许它在不同的场景中使用。
  • Resolvo支持增量/懒解算。这使用户能够在获取包元数据成本高昂的生态系统中快速找到解决方案。
  • Resolvo在大型复杂情况下比libsolv快得多。
  • Resolvo可以轻松地用于多线程环境。
  • Resolvo提供了可读的错误消息。
  • Resolvo可选地提供了一个异步接口,以允许并发获取元数据。
  • 然而,Libsolv更全面,支持更复杂的查询。

贡献 😍

我们非常希望您能贡献!有关更多信息,请参阅CONTRIBUTION.md。有关问题、请求或随意聊天,我们在discord服务器上非常活跃。您可以通过此链接加入我们的discord服务器

依赖关系

~5-16MB
~209K SLoC