
Am Sonntag, dem 31.03.2024 um 10:51 -0400 schrieb Brandon Allbery:
On Sun, Mar 31, 2024 at 6:51 AM Volker Wysk
wrote: Why aren't all the base package versions available? I thought this was one of the purposes of the Cabal system...
And wouldn't it be better to remove the upper bound entirely?
`base` is special, since it's tightly linked to the compiler (the compiler hardcodes the addresses of key data types and values, such as `Bool` and specifically `True` so it can compile guards). As such, it is impossible to pick a different version of `base` for use with a given compiler version.
Removing the upper bound has the opposite problem: if `base` changes enough (say, a wholesale change from `String` to `Text`, not that that seems likely to happen in the near term) you will be claiming that your code is compatible with it.
This makes sense. So what happens when a new GHC version is released? It depends on the version of the base package, which it ships. When the base package doesn't get an API-breaking change, then all is well. When it *does* have such a change, all the Hackage packages must be checked for compatibility with the new compiler version, and the upper bound of the base package version must be adjusted. That sounds like a lot of effort. It would be major happening in the Haskell community. This makes sense, too. Thanks, now it's clear. Volker