-
Notifications
You must be signed in to change notification settings - Fork 13
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
Support building with GHC 9.4 #230
Conversation
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.
As a minor suggestion, if you wanted to use 9.4.3 instead of 9.4.4, then the nixpkgs/22.11
could be used instead of nixpkgs-unstable
(with the advantage that the former is... more stable), but we can also address this via the upcoming 23.05 release as well, so it's your call.
I don't have a strong opinion on which minor 9.4 release to use, so I've changed it to GHC 9.4.3 / |
Ah, my mistake. I was getting the results of a searchlist when I looked to see what GHC version 22.11 had and a more recent set of packages was also available on the searchlist path. You do need to use |
dd65bbc
to
0edd1ad
Compare
This contains a varity of changes needed to make the libraries in the `what4` repo compile with GHC 9.4: * GHC 9.4 is pickier about undecidable instance checking. See [this section](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.4?version_id=24540b698481cf2b0bd11029b58eaddc0fbfbb31#stricter-undecidableinstances-checking) of the GHC 9.4 Migration Guide. As a result, I had to explicitly enable `UndecidableInstances` in `What4.Utils.AbstractDomains` to make it compile. * `ST` no longer has a `MonadFail` instance. See [this section](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.4?version_id=b60e52482a666d25638d59cd7e86851ddf971dc1#st-is-no-longer-an-instance-of-monadfail) of the GHC 9.4 Migration Guide. To adapt to this change, I removed the `MonadFail` instance for `VarRecorder`, which was built on top of `ST`'s `MonadFail` instance. Accordingly, all uses of `fail` at type `VarRecorder` have now been replaced with `error`. * I bumped the `aig` submodule to bring in the changes from GaloisInc/aig#13, which are required to make `aig` build with GHC 9.4. * I bumped the upper version bounds of various dependencies to allow them to build with GHC 9.4. Fixes #224.
GHC 9.4 adds `-Wtype-equality-requires-operators` to `-Wall`, which warns about certain uses of type equalities that are not forward-compatible with planned changes in GHC. See [this section](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.4?version_id=b60e52482a666d25638d59cd7e86851ddf971dc1#-is-now-a-type-operator) of the GHC 9.4 Migration Guide. These warnings are easily fixed by enabling the `TypeOperators` extension.
This contains a varity of changes needed to make the libraries in the
what4
repo compile with GHC 9.4:UndecidableInstances
inWhat4.Utils.AbstractDomains
to make it compile.ST
no longer has aMonadFail
instance. See this section of the GHC 9.4 Migration Guide. To adapt to this change, I removed theMonadFail
instance forVarRecorder
, which was built on top ofST
'sMonadFail
instance. Accordingly, all uses offail
at typeVarRecorder
have now been replaced witherror
.aig
submodule to bring in the changes from Allow building with base-4.17.* (GHC 9.4.*) aig#13, which are required to makeaig
build with GHC 9.4.Fixes #224.