{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiangltbyvlgsotqbdef2oh7fkm6fdhsbjbkmv6ec4ly3vb47kzjdy",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mpomoqtxof52"
},
"path": "/t/making-ghc-upgrades-easy/14279#post_9",
"publishedAt": "2026-07-02T16:53:42.000Z",
"site": "https://discourse.haskell.org",
"tags": [
"Cabal reference"
],
"textContent": "The Cabal reference already gives an example:\n\n\n if impl(ghc >= 7.5)\n other-extensions: PolyKinds\n\n\nNow suppose GHC 10.2 comes up with a new and improved `PolyKinds` which alas has a corner case that breaks our package. Then we might want to say\n\n\n if impl(ghc >= 7.5) && impl(ghc < 10.2)\n other-extensions: PolyKinds\n\n\nUnfortunately while this is informative it also does next to nothing, we still need to come up with a workaround for `PolyKinds` in every affected module and maybe guard it with CPP. But my only point was that it’s semantically correct to equate the “extension version” with extension name + compiler version range, and the latter would be preferable because it doesn’t introduce any new concept.",
"title": "Making GHC upgrades easy"
}