-
Notifications
You must be signed in to change notification settings - Fork 63
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 #1860
Conversation
Surprisingly, the
I certainly didn't intend for any user-visible behavior to change with this patch, but perhaps this is a consequence of bumping one of the submodules, such as |
I've identified GaloisInc/what4#232 as the change which introduced the |
This contains a variety of tweaks needed to build SAW with GHC 9.4: * GHC 9.4 is more conservative about inferring superclass constraints that arise from functional dependencies (see [this section](https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.4?version_id=b60e52482a666d25638d59cd7e86851ddf971dc1#constraints-derived-from-superclasses) of the GHC 9.4 Migration Guide), so we must add explicit `m ~ Identity` constraints to certain parts of `heapster-saw` to make it compile with GHC 9.4. * I raised the upper version bounds on `aeson` and `vector` to allow building them with GHC 9.4. * The following submodule changes were brought in to support building with GHC 9.4: * `argo`: #193 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `language-sally`: GaloisInc/language-sally#13 * `macaw`: GaloisInc/macaw#330 * `parameterized-utils`: GaloisInc/parameterized-utils#146 Fixes #1852.
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 produces a `-Wgadt-mono-local-binds` warning with GHC 9.4, which has added the warning to `-Wall`. To avoid the warning, I have removed a use of `NoMonoLocalBinds` in `SAWScript.Crucible.JVM.BuiltinsJVM`. This required adding an explicit type signature to `failure` as a result.
With @andreistefanescu's help, the CI passes with the changes from GaloisInc/what4#232. Let's land this. |
This contains a variety of tweaks needed to build SAW with GHC 9.4:
m ~ Identity
constraints to certain parts ofheapster-saw
to make it compile with GHC 9.4.aeson
andvector
to allow building them with GHC 9.4.argo
: crucible_fresh_pointer doesn't work with non-memtypes #193crucible
: Support building with GHC 9.4 crucible#1073(This also requires bumping the
llvm-pretty
,llvm-pretty-bc-parser
, andwhat4
submodules as a side effect)language-sally
: Allow building withbase-4.17
(GHC 9.4) language-sally#13macaw
: Support building with GHC 9.4 macaw#330parameterized-utils
: Allow building with GHC 9.4 parameterized-utils#146Fixes #1852.