<Profpatsch>
It’s mostly upper boundaries that have to be bumped at every release of anything.
<Profpatsch>
So whenever e.g. base gets an update most haskell packages break.
<srk>
I've erased a bunch of upper bounds recently from few of my projects, bit redundant in combination with nix
<infinisil>
srk: Not sure what you mean, I was talking about all haskell packages, not a specific one
<srk>
infinisil: ah, interpreted it like some package caused that
<infinisil>
Ah :)
<Profpatsch>
srk: base maybe?
<Profpatsch>
Or any package deep in the dependency graph that gets an update really. Now you have to go through every single reverse dep and patch the upper bound.
<infinisil>
srk: Yeah, a bot on the haskell side would be ideal I think, one that submits PRs to upstream packages for bumps
<infinisil>
Though that would be really hard to pull off..
<srk>
first thing I try is jail break when package refuses to build, if it does -> PR ..
<srk>
infinisil: easy if it's restricted to e.g. github at first
<Profpatsch>
Oh, and A.B.C.D is a PVP breaking change if any of A or B changes
<infinisil>
I'm not doing that because it would be so much work to PR every doJailbreak. This really slows progress down when you want to fix as many haskell builds as possible
<infinisil>
Hm yeah github only might work well for a bit
<infinisil>
bot
<Profpatsch>
Base 4.11 was Arp 2018, base 4.12 was september 2018
<Profpatsch>
And base is maintained by the person arguing for upper bounds the most :)
<srk>
better tooling needed, something that can watch commits/hackage and tries to fix stuff
<srk>
Profpatsch: today I've built 9 years old haskell project (with gtk dep!) :D
<Profpatsch>
Or just don’t do upper bounds, the compiler will tell you when it doesn’t typecheck
<srk>
with only minor changes
<Profpatsch>
If people change the semantics of functions without changing their name, that’s just bad style
<infinisil>
Profpatsch: The argument against that is that some packages might have non-compile-time problems with too new packages
<srk>
Profpatsch: ideally, but some stuff behavior changes could went unnoticted
<srk>
*noticed
<Profpatsch>
As always, it’s a cost-balance thing
<Profpatsch>
If base does a breaking change without changing the name or the type, I would be very surprised.
<Profpatsch>
Plus: Nobody checks the changelogs when bumping upper bounds *anyway*
<srk>
unless it fails and you need to know what changed :D
<Profpatsch>
Or at least I would be very surprised if they did
<Profpatsch>
It very much depends on the package. I *want* to have upper bounds on something like bindings to AWS, because there it’s important to read the changelogs.
<Profpatsch>
But I would never put upper bounds on aeson or base
myskran has joined #nixos-dev
abathur has joined #nixos-dev
myskran has quit [Ping timeout: 255 seconds]
Jackneill has quit [Read error: Connection reset by peer]
Jackneill has joined #nixos-dev
ryantm has quit [Remote host closed the connection]