I wonder how this compare to the minimal version selection approach used in VGo. It seems like VGo simplified the problem to one that is easier to solve and PubGrub found a complex solution to the original complex problem. Is that accurate?
I don’t really understand the point of re-making one’s own (probably subpar) implementation of an ASP solver. Other package managers (e.g. opam, for OCaml) rely on state of the art solvers, and the author is clearly aware of the existence of such solvers as she correctly references existing literature. I suppose it’s for avoiding external dependencies…
IME, fancy version solving causes more problems then it solves. For the most part, people should just be pinning their dependencies to specific versions and as long as your dependency management system allows the high levels to override version pinning, you can do whatever you want. opam uses a SAT solver and it’s put me into nonsensical broken situations more than it’s helped build my software.
opam uses a SAT solver and it’s put me into nonsensical broken situations more than it’s helped build my software.
I’ve experienced this as well. If you don’t run the newest version things on opam-repository bit-rot very fast since older packages can’t be built with never versions but don’t have maximum version constraints so it happily combines old and new versions then failing when building. I don’t really have a solution for this, since it is infeasible to rebuild the entire opam-repository on every reverse dependency change to make sure things don’t break.
The problem with exact pinning is that you will most likely not be able to install anything ever, since everything would have to agree on the version of e.g. lwt to use.
The problem with exact pinning is that you will most likely not be able to install anything ever, since everything would have to agree on the version of e.g. lwt to use.
There is where allowing higher levels to override it comes into play. For my personal opam repos, I actually have everything un-versioned then I use opam pin add to specify what the universe should look like.
Also, Nix handles this just fine, but Nix lets you have multiple versions of things installed.
And most OS package managers are implicitly doing this as they allow only one version of every package available in the repository.
I wonder how this compare to the minimal version selection approach used in VGo. It seems like VGo simplified the problem to one that is easier to solve and PubGrub found a complex solution to the original complex problem. Is that accurate?
I don’t really understand the point of re-making one’s own (probably subpar) implementation of an ASP solver. Other package managers (e.g. opam, for OCaml) rely on state of the art solvers, and the author is clearly aware of the existence of such solvers as she correctly references existing literature. I suppose it’s for avoiding external dependencies…
IME, fancy version solving causes more problems then it solves. For the most part, people should just be pinning their dependencies to specific versions and as long as your dependency management system allows the high levels to override version pinning, you can do whatever you want. opam uses a SAT solver and it’s put me into nonsensical broken situations more than it’s helped build my software.
I’ve experienced this as well. If you don’t run the newest version things on opam-repository bit-rot very fast since older packages can’t be built with never versions but don’t have maximum version constraints so it happily combines old and new versions then failing when building. I don’t really have a solution for this, since it is infeasible to rebuild the entire opam-repository on every reverse dependency change to make sure things don’t break.
The problem with exact pinning is that you will most likely not be able to install anything ever, since everything would have to agree on the version of e.g.
lwtto use.There is where allowing higher levels to override it comes into play. For my personal opam repos, I actually have everything un-versioned then I use
opam pin addto specify what the universe should look like.Also, Nix handles this just fine, but Nix lets you have multiple versions of things installed.
And most OS package managers are implicitly doing this as they allow only one version of every package available in the repository.