Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Upgrade to GHC 9.6.6#4568

Merged
purefunctor merged 45 commits intopurescript:masterpurescript/purescript:masterfrom
ad-si:upgrade-to-ghc-9.6ad-si/purescript:upgrade-to-ghc-9.6Copy head branch name to clipboard
Apr 10, 2025
Merged

Upgrade to GHC 9.6.6#4568
purefunctor merged 45 commits intopurescript:masterpurescript/purescript:masterfrom
ad-si:upgrade-to-ghc-9.6ad-si/purescript:upgrade-to-ghc-9.6Copy head branch name to clipboard

Conversation

@ad-si
Copy link
Contributor

@ad-si ad-si commented Mar 26, 2025


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.

There are several options how to deal with it:

  1. Use it like this
  2. Fork the repositories to purescript/… and use from there
  3. Upstream changes to Hackage packages first
    (Could be hard since the repos don't seem to be actively maintained anymore)
  4. Fork and republish under a new Hackage package name

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:

  • pattern-arrows - Integrate this into the source code as it is only one file
  • cheapskate - Use MercuryTechnologies/cheapskate until we replace it with commonmark-hs
  • aeson-better-errors - Release a new version on Hackage
  • Maybe upgrade even to GHC 9.6.7 if available soon (Update: In a follow up PR)
  • Added a file to CHANGELOG.d for this PR (see CHANGELOG.d/README.md)
  • Added myself to CONTRIBUTORS.md (if this is my first contribution)
  • Linked any existing issues or proposals that this pull request should close
  • Updated or added relevant documentation
  • Added a test for the contribution (if applicable)

f-f and others added 30 commits February 20, 2025 13:42
- Switch from `ansi-wl-pprint` to `prettyprinter`
- Add several `extra-deps`
@f-f
Copy link
Member

f-f commented Apr 1, 2025

Were you able to figure out what's wrong with the self-hosted runners?

Yes, they are going again 🙂

Also, are they even still needed? Seems like GitHub has quite a few options for different runners by now.

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 macos-14)

@f-f f-f mentioned this pull request Apr 1, 2025
@ad-si
Copy link
Contributor Author

ad-si commented Apr 3, 2025

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?

@f-f
Copy link
Member

f-f commented Apr 3, 2025

@ad-si ah yeah these builds look good. We're good to remove the self hosted runners!

Could we use ubuntu-22 for ARM? For the usual concerns about old glibc.

@ad-si
Copy link
Contributor Author

ad-si commented Apr 3, 2025

Could we use ubuntu-22 for ARM? For the usual concerns about old glibc.

But Ubuntu is only the host image, and it's actually build in the haskell:9.6.6 image, right?

@f-f
Copy link
Member

f-f commented Apr 3, 2025

But Ubuntu is only the host image, and it's actually build in the haskell:9.6.6 image, right?

Oh sorry, of course 😄

@f-f
Copy link
Member

f-f commented Apr 3, 2025

@ad-si one last thing: could you add to the changelog the fact that we are bumping the minimum required glibc from 2.28 to 2.31?

Copy link
Member

@f-f f-f left a 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!

@ad-si
Copy link
Contributor Author

ad-si commented Apr 4, 2025

🙌 … just waiting for @purefunctor to release the new aeson-better-erros version and we're ready to go 🚀

@ad-si
Copy link
Contributor Author

ad-si commented Apr 8, 2025

Just pushed the update for aeson-better-erros 🚀
If there are no more concerns, I think we're ready to merge, right?

(The HLS for 9.6.7 is still not available via GHCup. So I would do that in a follow up PR.)

Copy link
Member

@purefunctor purefunctor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tiny comments

INSTALL.md Outdated Show resolved Hide resolved
INSTALL.md Outdated Show resolved Hide resolved
stack.yaml Outdated Show resolved Hide resolved
stack.yaml.lock Show resolved Hide resolved
Copy link
Member

@purefunctor purefunctor left a 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

purescript.cabal Outdated Show resolved Hide resolved
stack.yaml Show resolved Hide resolved
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.
Copy link
Member

@purefunctor purefunctor left a 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.

@purefunctor purefunctor merged commit 48be80d into purescript:master Apr 10, 2025
7 checks passed
@ad-si ad-si deleted the upgrade-to-ghc-9.6 branch April 10, 2025 10:58
@kozak kozak mentioned this pull request May 27, 2025
@purefunctor purefunctor mentioned this pull request Jun 1, 2025
5 tasks
noisyscanner pushed a commit to OxfordAbstracts/purescript that referenced this pull request Dec 1, 2025
* Upgrade CI

* Back to the previous haskell image

* Use new spavo

* Upgrade node to latest supported lts

* Upgrade to GHC 9.6.6

- Switch from `ansi-wl-pprint` to `prettyprinter`
- Add several `extra-deps`

* Upgrade CI to use GHC 9.6.6

* Upgrade GitHub Actions

* CI: Upgrade to macos-15, specify exact version of Ubuntu

* CI: Upgrade Stack from 2.15.1 to 3.3.1

* CI: Include stack.yaml.lock file and use it for the cache's file hashes

* CI: Also include `purescript.cabal` in cache's file hashes

* Update documentation

* CI: Remove obsolete directory ownership changes

* CI: Add safe.directory configuration for Ubuntu 24.04

* CI: Fix container ownership issues in workflow configuration

* CI: Simplify container configuration and fix working directory ownership for Ubuntu 24.04

* Update version ranges of dependencies

* Update Cabal version range and allow newer dependencies in stack configuration

* Update Cabal version to 3.10.3.0 in stack configuration

* Enable allow-newer option in stack configuration

* Update dependency versions in purescript.cabal and stack.yaml

* Update weeder installation and streamline CI workflow

* Fix wrapping of run commands

* Remove obsolete quotes

* Add missing `--name` flag to `spago init`

* Add Adrian Sieber to contributors

* Add changelog entry for GHC upgrade

* Use new weeder.toml config file format

* Install missing `jq` dependency

* CI: Use `-y` flag for all `apt-get install` runs

* Vendor pattern-arrows

* Run haskell container on ubuntu-latest, use macos-13 and macos-14

* CI: Use strings instead of arrays for matrix.os

* Fix Hlint warnings

* Add arm64 Linux to testing matrix

* Correctly match only self-hosted Linux runner

* Don't use self-hosted runners anymore, as GitHub runners cover all cases

* Mention glibc bump from `2.28` to `2.31` in changelog

* Upgrade to latest version of aeson-better-errors from Hackage

* Remove obsolete `allow-newer` section, delete .stack-work on make clean

* Re-add `allow-newer` block, improve dependency bounds

* Downgrade haskeline to 0.8.2 to avoid libtinfo issues

* Update aeson-better-errors and use cheapskate fork

* Fix build errors in stack

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.

---------

Co-authored-by: Fabrizio Ferrai <fabrizio.ferrai@gmail.com>
Co-authored-by: Justin Garcia <purefunctor@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Doesn't build on macOS arm64

4 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.