-
Notifications
You must be signed in to change notification settings - Fork 42
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 #1073
Conversation
2e7074c
to
dc325b1
Compare
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.
I get nervous converting fail
to error
in case there was special fail
handling, but I've convinced myself that's not the case for any of the changes here. Longer term, many of these should probably be panic
, but that's not worth delaying this PR over.
Thanks for doing this!
Indeed, this was the motivation for removing the |
This contains a variety of tweaks needed to make the libraries in the `crucible` repo build with GHC 9.4: * `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 had to change some uses of `fail` to `error`, and I also had to avoid some partial pattern matches in `do`-notation to avoid incurring `MonadFail (ST s)` constraints. * The `aig` submodule was bumped to bring in the changes from GaloisInc/aig#13, which allows it to build with GHC 9.4. * Various upper version bounds were raised.
These produce `-Wgadt-mono-local-binds` warnings with GHC 9.4, which has added the warning to `-Wall`. To avoid the warning, I have removed any uses of `NoMonoLocalBinds` in places where they appear in tandem with `GADTs` and/or `TypeFamilies`. In some places, `NoMonoLocalBinds` can be removed with little effort, but in other places, this requires adding some explicit type signatures.
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 makes a variety of small tweaks needed to make `asl-translator` build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in `Language.ASL.Globals`. * The upper version bounds on `text` were raised to allow building with `text-2.0.*`, which is shipped with GHC 9.4.*. * The following submodules were bumped to bring in changes needed to make them build with GHC 9.4: * `crucible`: GaloisInc/crucible#1073 * `dismantle`: GaloisInc/dismantle#40
This makes a variety of small tweaks needed to make `asl-translator` build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in `Language.ASL.Globals`. * The upper version bounds on `text` were raised to allow building with `text-2.0.*`, which is shipped with GHC 9.4.*. * The following submodules were bumped to bring in changes needed to make them build with GHC 9.4: * `crucible`: GaloisInc/crucible#1073 * `dismantle`: GaloisInc/dismantle#40
This contains a variety of tweaks needed to make the libraries in the `semmc` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The upper version bounds on `text` were raised to `< 2.1` to allow building with `text-2.0.*`, which is bundled with GHC 9.4. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `crucible`: GaloisInc/crucible#1073 * `dismantle`: GaloisInc/dismantle#40
This contains a variety of tweaks needed to make the libraries in the `semmc` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The upper version bounds on `text` were raised to `< 2.1` to allow building with `text-2.0.*`, which is bundled with GHC 9.4. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty` submodule as a side effect) * `dismantle`: GaloisInc/dismantle#40
This contains a variety of tweaks needed to make the libraries in the `semmc` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The upper version bounds on `text` were raised to `< 2.1` to allow building with `text-2.0.*`, which is bundled with GHC 9.4. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty` submodule as a side effect) * `dismantle`: GaloisInc/dismantle#40
This contains a variety of tweaks needed to make the libraries in the `semmc` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The upper version bounds on `text` were raised to `< 2.1` to allow building with `text-2.0.*`, which is bundled with GHC 9.4. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty` submodule as a side effect) * `dismantle`: GaloisInc/dismantle#40
This contains a variety of tweaks needed to make the libraries in the `macaw` repo build with GHC 9.4: * `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 had to change some uses of `fail` to `error`, and I also had to avoid some partial pattern matches in `do`-notation to avoid incurring `MonadFail (ST s)` constraints. * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw-loader`: TODO RGS * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw-loader` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in one place. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw`: TODO RGS * `parameterized-utils`: GaloisInc/parameterized-utils#146 * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw` repo build with GHC 9.4: * `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 had to change some uses of `fail` to `error`, and I also had to avoid some partial pattern matches in `do`-notation to avoid incurring `MonadFail (ST s)` constraints. * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw-loader`: GaloisInc/macaw-loader#17 * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw` repo build with GHC 9.4: * `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 had to change some uses of `fail` to `panic`, and I also had to avoid some partial pattern matches in `do`-notation to avoid incurring `MonadFail (ST s)` constraints. * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw-loader`: GaloisInc/macaw-loader#17 * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw-loader` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in one place. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw`: GaloisInc/macaw#330 * `parameterized-utils`: GaloisInc/parameterized-utils#146 * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw` repo build with GHC 9.4: * `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 had to change some uses of `fail` to `panic`, and I also had to avoid some partial pattern matches in `do`-notation to avoid incurring `MonadFail (ST s)` constraints. * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in a handful of places. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw-loader`: GaloisInc/macaw-loader#17 * `semmc`: GaloisInc/semmc#79
This contains a variety of tweaks needed to make the libraries in the `macaw-loader` repo build with GHC 9.4: * GHC 9.4 is pickier about undecidable superclass checking. As such, I needed to explicitly enable `UndecidableSuperClasses` in one place. * The following submodule changes were brought in to support building with GHC 9.4: * `asl-translator`: GaloisInc/asl-translator#51 * `bv-sized`: GaloisInc/bv-sized#27 * `bv-sized-float`: GaloisInc/bv-sized-float#4 * `crucible`: GaloisInc/crucible#1073 (This also requires bumping the `llvm-pretty`, `llvm-pretty-bc-parser`, and `what4` submodules as a side effect) * `dismantle`: GaloisInc/dismantle#40 * `grift`: GaloisInc/grift#8 * `macaw`: GaloisInc/macaw#330 * `parameterized-utils`: GaloisInc/parameterized-utils#146 * `semmc`: GaloisInc/semmc#79
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 temp
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.
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.
This contains a variety of tweaks needed to make the libraries in the
crucible
repo build with GHC 9.4:ST
no longer has aMonadFail
instance. See this section of the GHC 9.4 Migration Guide. To adapt to this change, I had to change some uses offail
toerror
, and I also had to avoid some partial pattern matches indo
-notation to avoid incurringMonadFail (ST s)
constraints.aig
submodule was bumped to bring in the changes from Allow building with base-4.17.* (GHC 9.4.*) aig#13, which allows it to build with GHC 9.4.