-
Notifications
You must be signed in to change notification settings - Fork 568
Upgrade to GHC 9.6.6 #4568
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upgrade to GHC 9.6.6 #4568
Conversation
- Switch from `ansi-wl-pprint` to `prettyprinter` - Add several `extra-deps`
…hip for Ubuntu 24.04
@f-f the latest commit builds correctly in my fork. Were you able to figure out what's wrong with the self-hosted runners? Also, are they even still needed? Seems like GitHub has quite a few options for different runners by now. Regarding the GHC version: Do we want to wait until 9.6.7 is available via Stackage or merge it with 9.6.6 already and upgrade it in another PR. I'd prefer if we already merge it, so I can create some follow up PRs with the actual changes I wanted to make. 😅 @purefunctor said he can release the new |
Yes, they are going again 🙂
Good question - it looks like GitHub runners can do Linux ARM64 as well these days, which is great and it means we could replace the self-hosted things with that. I'd be happy to have them replaced with GitHub-hosted ones (and arguably we are already doing that given that we're running |
The arm64 Linux runner seems to work well: https://github.com/ad-si/purescript/actions/runs/14227397693 @f-f Let me remove the self-hosted runners then, ok? |
@ad-si ah yeah these builds look good. We're good to remove the self hosted runners! Could we use |
But Ubuntu is only the host image, and it's actually build in the haskell:9.6.6 image, right? |
Oh sorry, of course 😄 |
@ad-si one last thing: could you add to the changelog the fact that we are bumping the minimum required glibc from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great now - thanks @ad-si!
🙌 … just waiting for @purefunctor to release the new |
Just pushed the update for (The HLS for 9.6.7 is still not available via GHCup. So I would do that in a follow up PR.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tiny comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Waiting on CI then merging
These errors are present in the Cabal build and seem to be caused by Cabal and Stack using different versions of mtl, with 2.3.x notably changing re-exports for certain modules.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once tests go green I think this should be good to merge. One caveat here is that Cabal builds are currently not working because it's pinned to haskeline-0.8.2, which avoids libtinfo from being added to the build. Our stack build works because of allow-newer-deps
:
Resolving dependencies...
Error: [Cabal-7107]
Could not resolve dependencies:
[__0] trying: cheapskate-0.1.1.2 (user goal)
[__1] trying: base-4.18.2.1/installed-4.18.2.1 (dependency of cheapskate)
[__2] trying: purescript-0.15.15 (user goal)
[__3] next goal: haskeline (dependency of purescript)
[__3] rejecting: haskeline-0.8.2.1/installed-0.8.2.1 (conflict: purescript => haskeline==0.8.2)
[__3] skipping: haskeline; 0.8.3.0, 0.8.2.1 (has the same characteristics that caused the previous version to fail: excluded by constraint '==0.8.2' from 'purescript')
[__3] rejecting: haskeline-0.8.2 (conflict: base==4.18.2.1/installed-4.18.2.1, haskeline => base>=4.9 && <4.18)
[__3] skipping: haskeline; 0.8.1.3, 0.8.1.2, 0.8.1.1, 0.8.1.0, 0.8.0.1, 0.8.0.0, 0.7.5.0, 0.7.4.3, 0.7.4.2, 0.7.4.1, 0.7.4.0, 0.7.3.1, 0.7.3.0, 0.7.2.3, 0.7.2.2, 0.7.2.1, 0.7.2.0, 0.7.1.3, 0.7.1.2, 0.7.1.1, 0.7.1.0, 0.7.0.3, 0.7.0.2, 0.7.0.1, 0.7.0.0, 0.6.4.7, 0.6.4.6, 0.6.4.5, 0.6.4.4, 0.6.4.3, 0.6.4.2, 0.6.4.1, 0.6.4.0, 0.6.3.2, 0.6.3.1, 0.6.3, 0.6.2.4, 0.6.2.3, 0.6.2.2, 0.6.2.1, 0.6.2 (has the same characteristics that caused the previous version to fail: excludes 'base' version 4.18.2.1)
[__3] rejecting: haskeline-0.6.1.6 (conflict: purescript => haskeline==0.8.2)
[__3] skipping: haskeline; 0.6.1.5, 0.6.1.3, 0.6.1.2, 0.6.1.1, 0.6.1, 0.6.0.1, 0.6, 0.5.0.1, 0.5, 0.4, 0.3.2, 0.3.1, 0.3, 0.2.1, 0.2 (has the same characteristics that caused the previous version to fail: excluded by constraint '==0.8.2' from 'purescript')
[__3] fail (backjumping, conflict set: base, haskeline, purescript)
After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: purescript, base, haskeline, cheapskate
Try running with --minimize-conflict-set to improve the error message.
#4573 should hopefully slay the libtinfo dragon once and forall in the near future.
ansi-wl-pprint
toprettyprinter
extra-deps
This is a first starting point as a few things still need to be clarified:
I added 3 GitHub dependencies with fixes for the respective libraries.
(This is deprecated and should be replaced with jgm/commonmark-hs)
There are several options how to deal with it:
(Could be hard since the repos don't seem to be actively maintained anymore)
I would actually just use it like this. The version is exactly pinned through the commit hash, and we're dependent on GitHub in many ways already anyways.
What do you think?
TODOs: