3 ms·
You don't have to read it. It Just Works. If you want bugfixes and enhancements, you upgrade the package. If you want to break your existing code, import a dif
by srtjstjsj 6y ago
You don't have to read it. It Just Works. If you want bugfixes and enhancements, you upgrade the package.
If you want to break your existing code, import a different package.
If Haskell followed this principle, cabal hell wouldn't exist. If Windows followed this system, DLL hell wouldn't exist.
- Gibbon1 6y agoFar as I've seen Microsoft kinda learned it it's lesson. looks at watch 20 years ago. Makes you wonder about the go team, like where were they exactly between 1985 and 2005?
- srtjstjsj 6y agoThey were non-existent and when they did exist they didn't have a billion roads in funding to build everything out before launch.
- tome 6y agoCabal hell hasn't existed for quite a while. See https://cabal.readthedocs.io/en/3.4/nix-local-build-overview.html https://cabal.readthedocs.io/en/3.4/nix-local-build-overview...
- srtjstjsj 6y agoNix doesn't solve the problem of incompatible versions in one binary. Nix only solves the problem of finding compatible versions if they exist. Cabal hell is more than one problem.
- shirogane86x 6y agonix-style local builds (although the name is kinda bad) don't really have anything to do with nix, they're only the (admittedly bad) name for the new v2-* style commands (that now, at least as of cabal-3.0.0.0 and higher, are the default)
- tome 6y agoCorrect. I am personally tracking this issue and I hope to do something to improve the situation https://github.com/tomjaguarpaw/tilapia/issues/9 https://github.com/tomjaguarpaw/tilapia/issues/9
- dllthomas 6y agoI actually think the parent comment is sort of correct. If everyone was good (perfect?) about making sure that new versions of a package would work with code written against any old version of that package, then there would not have been cabal hell in really any of its forms. Of course, if this increased the number of forks, it would increase the times we need to convert between types provided by "different" libraries - which may or may not be a problem, but isn't "a Cabal problem". How it would actually work out in practice would depend a lot on how it shaped behavior; it sounds like srtjstjsj believes it went well for go, and I don't know enough to weigh in there in either direction.
- tome 6y agoI have no particular opinion on the main point of the comment. I just wanted to point out that the big problems with dependencies in the Haskell ecosystem, sometimes called "cabal hell", have not existed for at least the last few years (since the introduction of v2-style builds).
- dllthomas 6y agoYeah, worth surfacing!
- mseepgood 6y ago> If you want bugfixes and enhancements, you upgrade the package. If you want to break your existing code, import a different package. Exactly!