Skip to content
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

Merged
merged 5 commits into from
Apr 3, 2023
Merged

Support building with GHC 9.4 #1073

merged 5 commits into from
Apr 3, 2023

Conversation

RyanGlScott
Copy link
Contributor

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 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 Allow building with base-4.17.* (GHC 9.4.*) aig#13, which allows it to build with GHC 9.4.
  • Various upper version bounds were raised.

@RyanGlScott RyanGlScott requested a review from kquick March 28, 2023 11:25
@RyanGlScott RyanGlScott force-pushed the ghc-9.4 branch 2 times, most recently from 2e7074c to dc325b1 Compare March 28, 2023 12:40
Copy link
Member

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

@RyanGlScott
Copy link
Contributor Author

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.

Indeed, this was the motivation for removing the MonadFail instance for ST in the first place, as its fail was just implemented in terms of error anyway.

RyanGlScott and others added 5 commits April 3, 2023 13:45
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.
@RyanGlScott RyanGlScott merged commit ad4a553 into master Apr 3, 2023
@RyanGlScott RyanGlScott deleted the ghc-9.4 branch April 3, 2023 19:24
RyanGlScott added a commit to GaloisInc/asl-translator that referenced this pull request Apr 3, 2023
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
RyanGlScott added a commit to GaloisInc/asl-translator that referenced this pull request Apr 4, 2023
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
RyanGlScott added a commit to GaloisInc/semmc that referenced this pull request Apr 17, 2023
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
RyanGlScott added a commit to GaloisInc/semmc that referenced this pull request Apr 17, 2023
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
RyanGlScott added a commit to GaloisInc/semmc that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/semmc that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw-loader that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw-loader that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/macaw-loader that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/saw-script that referenced this pull request Apr 18, 2023
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
RyanGlScott added a commit to GaloisInc/saw-script that referenced this pull request Apr 19, 2023
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.
RyanGlScott added a commit to GaloisInc/saw-script that referenced this pull request May 26, 2023
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.
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.

2 participants