Both bundler and carge seem to have good experience with backtracking to speed up dependency resolution and print humanly understandable conflicts. https://github.com/CocoaPods/Molinillo/blob/b97b2f96440925b93150de20709c6403c5ee22f0/ARCHITECTURE.md#backtracking https://github.com/rust-lang/cargo/pull/5187