First version of the top-down package dependency resolver
This is a new dependency resolver that produces valid install plans. It works in polynomial time however because the search space is exponential in size it is not guaranteed to find a solution even if one exists. It works by generating and then exploring the search space represented as a lazy tree. It uses constraints to prune choices and heuristics when guesses are necessary. Currently it can generate install plans for 99% of the packages on hackage. The remaining 6 packages should be doable with two extra tricks. It is not finished and is not yet usable in practice.
Showing with 754 additions and 1 deletion