From af117f787fca94fada3d728998e13ff174d13733 Mon Sep 17 00:00:00 2001 From: Langston Barrett Date: Thu, 13 Feb 2025 14:38:59 -0500 Subject: [PATCH] Support GHC 9.10 --- .github/Dockerfile-crux-llvm | 8 ++- .github/Dockerfile-crux-mir | 8 ++- .github/workflows/crucible-go-build.yml | 7 ++- .github/workflows/crucible-jvm-build.yml | 7 ++- .github/workflows/crucible-wasm-build.yml | 8 +-- .github/workflows/crux-llvm-build.yml | 9 +-- .github/workflows/crux-mir-build.yml | 1 + ...HC-9.4.8.config => cabal.GHC-9.10.1.config | 61 +++++++++---------- cabal.project | 4 ++ crucible-cli/crucible-cli.cabal | 42 +++++++++---- crucible-debug/crucible-debug.cabal | 24 +++++++- .../src/Lang/Crucible/Debug/Commands.hs | 4 ++ .../src/Lang/Crucible/Debug/Regex.hs | 10 +++ .../src/Lang/Crucible/Debug/Style.hs | 5 +- crucible-llvm-cli/crucible-llvm-cli.cabal | 42 +++++++++---- crucible-llvm-debug/crucible-llvm-debug.cabal | 25 +++++++- .../crucible-llvm-syntax.cabal | 42 +++++++++---- crucible-llvm/CHANGELOG.md | 1 + crucible-llvm/crucible-llvm.cabal | 2 +- crucible-symio/CHANGELOG.md | 4 ++ crucible-symio/crucible-symio.cabal | 4 +- crucible-syntax/crucible-syntax.cabal | 42 +++++++++---- crucible/CHANGELOG.md | 1 + crucible/crucible.cabal | 2 +- crucible/src/Lang/Crucible/Utils/BitSet.hs | 2 +- crux-llvm/CHANGELOG.md | 1 + crux-llvm/crux-llvm.cabal | 2 +- crux-mir/CHANGELOG.md | 1 + crux/CHANGELOG.md | 1 + uc-crux-llvm/uc-crux-llvm.cabal | 49 ++++++++++----- 30 files changed, 290 insertions(+), 129 deletions(-) rename cabal.GHC-9.4.8.config => cabal.GHC-9.10.1.config (90%) diff --git a/.github/Dockerfile-crux-llvm b/.github/Dockerfile-crux-llvm index dc1da9cfb..e6f53cf4d 100644 --- a/.github/Dockerfile-crux-llvm +++ b/.github/Dockerfile-crux-llvm @@ -1,9 +1,11 @@ # If you update this version number, make sure to update the value of # LINUX_LLVM_VER in .github/ci.sh (in the install_llvm() function). ARG LLVM_VER=14 +ARG GHC_VER=9.6.5 FROM ubuntu:22.04 AS build ARG LLVM_VER +ARG GHC_VER RUN apt-get update && \ apt-get install -y \ @@ -27,7 +29,7 @@ ADD crux ${CRUX_BUILD_DIR}/crux ADD crux-llvm ${CRUX_BUILD_DIR}/crux-llvm ADD dependencies ${CRUX_BUILD_DIR}/dependencies ADD .github/cabal.project.crux-llvm ${CRUX_BUILD_DIR}/cabal.project -ADD cabal.GHC-9.4.8.config ${CRUX_BUILD_DIR}/cabal.project.freeze +ADD cabal.GHC-${GHC_VER}.config ${CRUX_BUILD_DIR}/cabal.project.freeze # Workaround until we have a more recent LLVM build available RUN cp ${CRUX_BUILD_DIR}/crux-llvm/c-src/libcxx-7.1.0.bc ${CRUX_BUILD_DIR}/crux-llvm/c-src/libcxx-${LLVM_VER}.0.0.bc @@ -56,8 +58,8 @@ RUN mkdir -p /home/crux-llvm/.local/bin && \ RUN mkdir -p /home/crux-llvm/.ghcup && \ ghcup --version && \ ghcup install cabal 3.10.3.0 && \ - ghcup install ghc 9.4.8 && \ - ghcup set ghc 9.4.8 + ghcup install ghc ${GHC_VER} && \ + ghcup set ghc ${GHC_VER} WORKDIR ${CRUX_BUILD_DIR} RUN cabal v2-update && \ diff --git a/.github/Dockerfile-crux-mir b/.github/Dockerfile-crux-mir index 9eb9695a3..b98f2c7d3 100644 --- a/.github/Dockerfile-crux-mir +++ b/.github/Dockerfile-crux-mir @@ -2,10 +2,12 @@ # .github/workflows/crux-mir-build.yml ARG RUST_TOOLCHAIN="nightly-2023-01-23" ARG CRUX_BUILD_DIR=/crux-mir/build +ARG GHC_VER=9.6.5 FROM ubuntu:22.04 AS build ARG RUST_TOOLCHAIN ARG CRUX_BUILD_DIR +ARG GHC_VER RUN apt-get update && \ apt-get install -y \ @@ -26,7 +28,7 @@ ADD crux ${CRUX_BUILD_DIR}/crux ADD crux-mir ${CRUX_BUILD_DIR}/crux-mir ADD dependencies ${CRUX_BUILD_DIR}/dependencies ADD .github/cabal.project.crux-mir ${CRUX_BUILD_DIR}/cabal.project -ADD cabal.GHC-9.4.8.config ${CRUX_BUILD_DIR}/cabal.project.freeze +ADD cabal.GHC-${GHC_VER}.config ${CRUX_BUILD_DIR}/cabal.project.freeze RUN useradd -m crux-mir && chown -R crux-mir:crux-mir /crux-mir USER crux-mir @@ -56,8 +58,8 @@ RUN mkdir -p /home/crux-mir/.local/bin && \ RUN mkdir -p /home/crux-mir/.ghcup && \ ghcup --version && \ ghcup install cabal 3.10.3.0 && \ - ghcup install ghc 9.4.8 && \ - ghcup set ghc 9.4.8 + ghcup install ghc ${GHC_VER} && \ + ghcup set ghc ${GHC_VER} WORKDIR ${CRUX_BUILD_DIR}/crux-mir RUN ./translate_libs.sh diff --git a/.github/workflows/crucible-go-build.yml b/.github/workflows/crucible-go-build.yml index 9e88b5966..c5f84f4af 100644 --- a/.github/workflows/crucible-go-build.yml +++ b/.github/workflows/crucible-go-build.yml @@ -28,14 +28,14 @@ jobs: matrix: os: [ubuntu-22.04] cabal: ["3.10.3.0"] - ghc: ["9.4.8", "9.6.5", "9.8.2"] + ghc: ["9.6.5", "9.8.2", "9.10.1"] include: - os: macos-14 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 - os: windows-2019 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 name: crucible-go - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -93,6 +93,7 @@ jobs: 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.10.1) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crucible-jvm-build.yml b/.github/workflows/crucible-jvm-build.yml index e115b6106..f298b35bf 100644 --- a/.github/workflows/crucible-jvm-build.yml +++ b/.github/workflows/crucible-jvm-build.yml @@ -28,14 +28,14 @@ jobs: matrix: os: [ubuntu-22.04] cabal: ["3.10.3.0"] - ghc: ["9.4.8", "9.6.5", "9.8.2"] + ghc: ["9.6.5", "9.8.2", "9.10.1"] include: - os: macos-14 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 - os: windows-2019 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 name: crucible-jvm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -93,6 +93,7 @@ jobs: 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.10.1) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crucible-wasm-build.yml b/.github/workflows/crucible-wasm-build.yml index dc064217d..6a8829911 100644 --- a/.github/workflows/crucible-wasm-build.yml +++ b/.github/workflows/crucible-wasm-build.yml @@ -28,14 +28,14 @@ jobs: matrix: os: [ubuntu-22.04] cabal: ["3.10.3.0"] - ghc: ["9.4.8", "9.6.5", "9.8.2"] + ghc: ["9.6.5", "9.8.2", "9.10.1"] include: - os: macos-14 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 - os: windows-2019 cabal: 3.10.3.0 - ghc: 9.8.2 + ghc: 9.10.1 name: crucible-wasm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -90,9 +90,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.10.1) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crux-llvm-build.yml b/.github/workflows/crux-llvm-build.yml index 324cd664a..0decb1d96 100644 --- a/.github/workflows/crux-llvm-build.yml +++ b/.github/workflows/crux-llvm-build.yml @@ -65,17 +65,17 @@ jobs: matrix: os: [ubuntu-22.04] cabal: ["3.10.3.0"] - ghc: ["9.4.8", "9.6.5", "9.8.2"] + ghc: ["9.6.5", "9.8.2", "9.10.1"] include: - os: ubuntu-20.04 cabal: 3.10.3.0 - ghc: 9.4.8 + ghc: 9.10.1 - os: macos-14 cabal: 3.10.3.0 - ghc: 9.4.8 + ghc: 9.10.1 - os: windows-2019 cabal: 3.10.3.0 - ghc: 9.4.8 + ghc: 9.10.1 name: crux-llvm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -133,6 +133,7 @@ jobs: 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.10.1) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crux-mir-build.yml b/.github/workflows/crux-mir-build.yml index a0a5e8c68..109c04eea 100644 --- a/.github/workflows/crux-mir-build.yml +++ b/.github/workflows/crux-mir-build.yml @@ -139,6 +139,7 @@ jobs: 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.10.1) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/cabal.GHC-9.4.8.config b/cabal.GHC-9.10.1.config similarity index 90% rename from cabal.GHC-9.4.8.config rename to cabal.GHC-9.10.1.config index 1c61b24e3..27bd0d294 100644 --- a/cabal.GHC-9.4.8.config +++ b/cabal.GHC-9.10.1.config @@ -1,7 +1,7 @@ active-repositories: hackage.haskell.org:merge constraints: any.BoundedChan ==1.0.3.0, - any.Cabal ==3.8.1.0, - any.Cabal-syntax ==3.8.1.0, + any.Cabal ==3.12.0.0, + any.Cabal-syntax ==3.12.0.0, any.Glob ==0.10.2, any.HUnit ==1.6.2.0, any.IntervalMap ==0.6.2.1, @@ -18,7 +18,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.ansi-terminal ==1.1.2, ansi-terminal -example, any.ansi-terminal-types ==1.1, - any.array ==0.5.4.0, + any.array ==0.5.7.0, any.assoc ==1.1.1, assoc -tagged, any.async ==2.2.5, @@ -28,7 +28,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.attoparsec ==0.14.4, attoparsec -developer, any.barbies ==2.1.1.0, - any.base ==4.17.2.1, + any.base ==4.20.0.0, any.base-compat ==0.14.1, any.base-orphans ==0.9.3, any.base16-bytestring ==1.0.2.0, @@ -36,7 +36,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.bifunctors ==5.6.2, bifunctors +tagged, any.bimap ==0.5.0, - any.binary ==0.8.9.1, + any.binary ==0.8.9.2, any.bitvec ==1.1.5.0, bitvec +simd, any.bitwise ==1.0.0.1, @@ -45,7 +45,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.boring ==0.2.2, boring +tagged, any.bv-sized ==1.0.5, - any.bytestring ==0.11.5.3, + any.bytestring ==0.12.1.0, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cereal ==0.5.8.3, @@ -62,7 +62,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, any.constraints ==0.14.2, - any.containers ==0.6.7, + any.containers ==0.7, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, crucible +unsafe-operations, @@ -72,9 +72,9 @@ constraints: any.BoundedChan ==1.0.3.0, any.data-default ==0.8.0.0, any.data-default-class ==0.2.0.0, any.data-fix ==0.3.4, - any.deepseq ==1.4.8.0, + any.deepseq ==1.5.0.0, any.deriving-compat ==0.6.7, - any.directory ==1.3.7.1, + any.directory ==1.3.8.3, any.distributive ==0.6.2.1, distributive +semigroups +tagged, any.dlist ==1.0, @@ -84,16 +84,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.entropy ==0.4.1.11, entropy -donotgetentropy, any.erf ==2.0.0.0, - any.exceptions ==0.10.5, + any.exceptions ==0.10.7, any.extra ==1.8, any.fgl ==5.8.3.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filemanip ==0.3.6.3, - any.filepath ==1.4.2.2, + any.filepath ==1.5.2.0, any.fingertree ==0.1.5.0, - any.foldable1-classes-compat ==0.1.1, - foldable1-classes-compat +tagged, any.free ==5.2, any.generic-lens ==2.2.2.0, any.generic-lens-core ==2.2.1.0, @@ -101,16 +99,17 @@ constraints: any.BoundedChan ==1.0.3.0, generic-random -enable-inspect, any.generically ==0.1.1, any.ghc-bignum ==1.3, - any.ghc-boot-th ==9.4.8, - any.ghc-prim ==0.9.1, + any.ghc-boot-th ==9.10.1, + any.ghc-internal ==9.1001.0, + any.ghc-prim ==0.11.0, any.gitrev ==1.3.1, - any.happy ==1.20.1.1 || ==2.1.4, - any.happy-lib ==2.1.4, - any.hashable ==1.4.7.0, - hashable -arch-native +integer-gmp -random-initial-seed, + any.happy ==1.20.1.1 || ==2.1.5, + any.happy-lib ==2.1.5, + any.hashable ==1.5.0.0, + hashable -arch-native -random-initial-seed, any.hashtables ==1.4.2, hashtables -bounds-checking -debug -detailed-profiling -portable -sse42 +unsafe-tricks, - any.haskeline ==0.8.2, + any.haskeline ==0.8.2.1, any.haskell-lexer ==1.1.2, any.haskell-src-exts ==1.23.1, any.haskell-src-meta ==0.8.15, @@ -159,7 +158,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.monad-control ==1.0.3.1, any.monadLib ==3.10.3, any.mono-traversable ==1.0.21.0, - any.mtl ==2.2.2, + any.mtl ==2.3.1, any.named-text ==1.2.1.0, named-text +with-json, any.network ==3.2.7.0, @@ -168,12 +167,12 @@ constraints: any.BoundedChan ==1.0.3.0, any.optparse-applicative ==0.18.1.0, optparse-applicative +process, any.ordered-containers ==0.2.4, - any.os-string ==2.0.7, + any.os-string ==2.0.2, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, any.parameterized-utils ==2.1.9.0, parameterized-utils +unsafe-operations, - any.parsec ==3.1.16.1, + any.parsec ==3.1.17.0, any.parser-combinators ==1.3.0, parser-combinators -dev, any.pretty ==1.1.3.6, @@ -182,7 +181,7 @@ constraints: any.BoundedChan ==1.0.3.0, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, any.primitive ==0.9.0.0, - any.process ==1.6.18.0, + any.process ==1.6.19.0, any.profunctors ==5.6.2, any.pvar ==1.0.0.0, any.quickcheck-io ==0.2.0, @@ -216,7 +215,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.split ==0.2.5, any.splitmix ==0.1.1, splitmix -optimised-mixer, - any.stm ==2.5.1.0, + any.stm ==2.5.3.1, any.streaming-commons ==0.2.3.0, streaming-commons -use-bytestring-builder, any.strict ==0.5.1, @@ -237,11 +236,11 @@ constraints: any.BoundedChan ==1.0.3.0, any.tasty-quickcheck ==0.11.1, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.2.0, - any.template-haskell ==2.19.0.0, + any.template-haskell ==2.22.0.0, any.temporary ==1.3, any.terminal-size ==0.3.4, - any.terminfo ==0.4.1.5, - any.text ==2.0.2, + any.terminfo ==0.4.1.6, + any.text ==2.1.1, any.text-conversions ==0.3.1.1, any.text-iso8601 ==0.1.1, any.text-short ==0.1.6, @@ -257,7 +256,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.these ==1.2.1, any.time ==1.12.2, any.time-compat ==1.9.8, - any.transformers ==0.5.6.2, + any.transformers ==0.6.1.1, any.transformers-base ==0.4.6, transformers-base +orphaninstances, any.transformers-compat ==0.7.2, @@ -265,7 +264,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.typed-process ==0.2.12.0, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, - any.unix ==2.7.3, + any.unix ==2.8.5.1, any.unix-compat ==0.7.3, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, @@ -293,4 +292,4 @@ constraints: any.BoundedChan ==1.0.3.0, any.zlib ==0.7.1.0, zlib -bundled-c-zlib +non-blocking-ffi -pkg-config, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2025-02-05T20:39:53Z +index-state: hackage.haskell.org 2025-02-13T19:25:42Z diff --git a/cabal.project b/cabal.project index cd3e1d40f..e73defa34 100644 --- a/cabal.project +++ b/cabal.project @@ -4,6 +4,10 @@ -- -- export PATH=$PWD/dist-newstyle/build/x86_64-linux/ghc-7.10.3/hpb-0.1.1/c/hpb/build/hpb:$PATH +-- TODO: https://github.com/travitch/itanium-abi/pull/15 +allow-newer: itanium-abi:text +allow-newer: boomerang:template-haskell + packages: crucible/ crucible-cli/ diff --git a/crucible-cli/crucible-cli.cabal b/crucible-cli/crucible-cli.cabal index afaee356c..5949d88e1 100644 --- a/crucible-cli/crucible-cli.cabal +++ b/crucible-cli/crucible-cli.cabal @@ -30,60 +30,76 @@ common shared -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html - -- Since GHC 8.10 or earlier: + -- Since GHC 9.4 or earlier: ghc-options: -Wall + -Werror=ambiguous-fields -Werror=compat-unqualified-imports -Werror=deferred-type-errors -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=inline-rule-shadowing + -Werror=misplaced-pragmas -Werror=missed-extra-shared-lib -Werror=missing-exported-signatures -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances + -Werror=operator-whitespace + -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures + -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards + -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes + -Werror=type-equality-out-of-scope + -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind - if impl(ghc >= 9.2) - ghc-options: - -Werror=ambiguous-fields - -Werror=operator-whitespace - -Werror=operator-whitespace-ext-conflict - -Werror=redundant-bang-patterns + if impl(ghc < 9.8) + -Werror=forall-identifier - if impl(ghc >= 9.4) + if impl(ghc >= 9.8) ghc-options: - -Werror=forall-identifier - -Werror=misplaced-pragmas - -Werror=redundant-strictness-flags - -Werror=type-equality-out-of-scope - -Werror=type-equality-requires-operators + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible-debug/crucible-debug.cabal b/crucible-debug/crucible-debug.cabal index 1742f5f20..b6c08d0e9 100644 --- a/crucible-debug/crucible-debug.cabal +++ b/crucible-debug/crucible-debug.cabal @@ -38,10 +38,11 @@ common shared -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations - -Werror=forall-identifier + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns @@ -54,30 +55,51 @@ common shared -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances -Werror=operator-whitespace -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes -Werror=type-equality-out-of-scope -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind + if impl(ghc < 9.8) + -Werror=forall-identifier + + if impl(ghc >= 9.8) + ghc-options: + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures + ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible-debug/src/Lang/Crucible/Debug/Commands.hs b/crucible-debug/src/Lang/Crucible/Debug/Commands.hs index 0ec212142..4cb4ee0b7 100644 --- a/crucible-debug/src/Lang/Crucible/Debug/Commands.hs +++ b/crucible-debug/src/Lang/Crucible/Debug/Commands.hs @@ -3,6 +3,7 @@ Copyright : (c) Galois, Inc. 2025 Maintainer : Langston Barrett -} +{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE ImplicitParams #-} @@ -12,6 +13,7 @@ Maintainer : Langston Barrett {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE StandaloneKindSignatures #-} {-# LANGUAGE TypeOperators #-} module Lang.Crucible.Debug.Commands @@ -34,6 +36,7 @@ import Control.Exception qualified as X import Control.Lens qualified as Lens import Control.Monad.Except (runExceptT) import Control.Monad.IO.Class (liftIO) +import Data.Kind (Type) import Data.List qualified as List import Data.Maybe qualified as Maybe import Data.Parameterized.Classes (ixF') @@ -126,6 +129,7 @@ insertCfg regCFG hdlMap = (C.UseCFG ssaCFG (C.postdomInfo ssaCFG)) hdlMap +type SomeFn :: (Ctx.Ctx C.CrucibleType -> C.CrucibleType -> Type) -> Type data SomeFn f = forall args ret. SomeFn (f args ret) lookupHandleMapByName :: diff --git a/crucible-debug/src/Lang/Crucible/Debug/Regex.hs b/crucible-debug/src/Lang/Crucible/Debug/Regex.hs index 88f5dea71..372ad2fd8 100644 --- a/crucible-debug/src/Lang/Crucible/Debug/Regex.hs +++ b/crucible-debug/src/Lang/Crucible/Debug/Regex.hs @@ -65,10 +65,19 @@ data Regex a | TThen (Regex a) (Regex a) | TStar (Regex a) +type Empty :: forall a. Regex a type Empty = 'TEmpty + +type Lit :: forall a. a -> Regex a type Lit = 'TLit + +type (:|) :: forall a. Regex a -> Regex a -> Regex a type a :| b = 'TOr a b + +type Then :: forall a. Regex a -> Regex a -> Regex a type Then = 'TThen + +type Star :: forall a. Regex a -> Regex a type Star = 'TStar -- | Value-level representative of 'Regex' @@ -214,6 +223,7 @@ nu = Then l r -> Then (nu l) (nu r) -- | The result of 'derivative' +type DerivativeResult :: forall k k'. (k -> Type) -> (k' -> Type) -> Type data DerivativeResult f g = DerivativeResult { -- | The remaining regex after matching that token diff --git a/crucible-debug/src/Lang/Crucible/Debug/Style.hs b/crucible-debug/src/Lang/Crucible/Debug/Style.hs index 978f82723..eb7804158 100644 --- a/crucible-debug/src/Lang/Crucible/Debug/Style.hs +++ b/crucible-debug/src/Lang/Crucible/Debug/Style.hs @@ -28,7 +28,8 @@ import Control.Monad.IO.Class (MonadIO) import Control.Monad.Reader (MonadReader, ReaderT) import Control.Monad.Reader qualified as Reader import Control.Monad.Trans (MonadTrans) -import Data.Foldable (foldl', toList) +import Data.Foldable (toList) +import Data.Foldable qualified as Foldable import Data.Functor.Identity (Identity, runIdentity) import Data.List qualified as List import Data.Parameterized.Some (Some(Some), viewSome) @@ -184,7 +185,7 @@ style r = Rgx.DerivativeResult (Some r') (Some m Seq.:<| ms) -> do s <- styled m ss <- mapM (viewSome styled) (toList ms) - let combined = foldl' combineStyled s ss + let combined = Foldable.foldl' combineStyled s ss rest <- style r' ws pure (combined : rest) where diff --git a/crucible-llvm-cli/crucible-llvm-cli.cabal b/crucible-llvm-cli/crucible-llvm-cli.cabal index d8fd2e9be..c49a8da0e 100644 --- a/crucible-llvm-cli/crucible-llvm-cli.cabal +++ b/crucible-llvm-cli/crucible-llvm-cli.cabal @@ -30,60 +30,76 @@ common shared -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html - -- Since GHC 8.10 or earlier: + -- Since GHC 9.4 or earlier: ghc-options: -Wall + -Werror=ambiguous-fields -Werror=compat-unqualified-imports -Werror=deferred-type-errors -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=inline-rule-shadowing + -Werror=misplaced-pragmas -Werror=missed-extra-shared-lib -Werror=missing-exported-signatures -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances + -Werror=operator-whitespace + -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures + -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards + -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes + -Werror=type-equality-out-of-scope + -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind - if impl(ghc >= 9.2) - ghc-options: - -Werror=ambiguous-fields - -Werror=operator-whitespace - -Werror=operator-whitespace-ext-conflict - -Werror=redundant-bang-patterns + if impl(ghc < 9.8) + -Werror=forall-identifier - if impl(ghc >= 9.4) + if impl(ghc >= 9.8) ghc-options: - -Werror=forall-identifier - -Werror=misplaced-pragmas - -Werror=redundant-strictness-flags - -Werror=type-equality-out-of-scope - -Werror=type-equality-requires-operators + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible-llvm-debug/crucible-llvm-debug.cabal b/crucible-llvm-debug/crucible-llvm-debug.cabal index 53103ca82..09e104c55 100644 --- a/crucible-llvm-debug/crucible-llvm-debug.cabal +++ b/crucible-llvm-debug/crucible-llvm-debug.cabal @@ -28,6 +28,7 @@ common shared -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html + -- Since GHC 9.4 or earlier: ghc-options: -Wall @@ -37,10 +38,11 @@ common shared -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations - -Werror=forall-identifier + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns @@ -53,30 +55,51 @@ common shared -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances -Werror=operator-whitespace -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes -Werror=type-equality-out-of-scope -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind + if impl(ghc < 9.8) + -Werror=forall-identifier + + if impl(ghc >= 9.8) + ghc-options: + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures + ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible-llvm-syntax/crucible-llvm-syntax.cabal b/crucible-llvm-syntax/crucible-llvm-syntax.cabal index 8f425cbbb..dfe137f8a 100644 --- a/crucible-llvm-syntax/crucible-llvm-syntax.cabal +++ b/crucible-llvm-syntax/crucible-llvm-syntax.cabal @@ -30,60 +30,76 @@ common shared -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html - -- Since GHC 8.10 or earlier: + -- Since GHC 9.4 or earlier: ghc-options: -Wall + -Werror=ambiguous-fields -Werror=compat-unqualified-imports -Werror=deferred-type-errors -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=inline-rule-shadowing + -Werror=misplaced-pragmas -Werror=missed-extra-shared-lib -Werror=missing-exported-signatures -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances + -Werror=operator-whitespace + -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures + -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards + -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes + -Werror=type-equality-out-of-scope + -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind - if impl(ghc >= 9.2) - ghc-options: - -Werror=ambiguous-fields - -Werror=operator-whitespace - -Werror=operator-whitespace-ext-conflict - -Werror=redundant-bang-patterns + if impl(ghc < 9.8) + -Werror=forall-identifier - if impl(ghc >= 9.4) + if impl(ghc >= 9.8) ghc-options: - -Werror=forall-identifier - -Werror=misplaced-pragmas - -Werror=redundant-strictness-flags - -Werror=type-equality-out-of-scope - -Werror=type-equality-requires-operators + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible-llvm/CHANGELOG.md b/crucible-llvm/CHANGELOG.md index ffdd9d567..1119a3dbd 100644 --- a/crucible-llvm/CHANGELOG.md +++ b/crucible-llvm/CHANGELOG.md @@ -1,5 +1,6 @@ # next -- TBA +* Add support for GHC 9.10 * Fix a bug in which the memory model would panic when attempting to unpack constant string literals. diff --git a/crucible-llvm/crucible-llvm.cabal b/crucible-llvm/crucible-llvm.cabal index 66e989fea..4774ebd41 100644 --- a/crucible-llvm/crucible-llvm.cabal +++ b/crucible-llvm/crucible-llvm.cabal @@ -33,7 +33,7 @@ common bldflags library import: bldflags build-depends: - base >= 4.13 && < 4.20, + base >= 4.13 && < 4.21, attoparsec, bv-sized >= 1.0.0, bytestring, diff --git a/crucible-symio/CHANGELOG.md b/crucible-symio/CHANGELOG.md index 245ac7ba1..5011916a1 100644 --- a/crucible-symio/CHANGELOG.md +++ b/crucible-symio/CHANGELOG.md @@ -1,5 +1,9 @@ # Revision history for crucible-symio +# next + +* Add support for GHC 9.10 + ## 0.1.1 -- 2024-08-30 * Add support for GHC 9.8 diff --git a/crucible-symio/crucible-symio.cabal b/crucible-symio/crucible-symio.cabal index 61dada0d3..467666a7e 100644 --- a/crucible-symio/crucible-symio.cabal +++ b/crucible-symio/crucible-symio.cabal @@ -21,7 +21,7 @@ source-repository head subdir: crucible-symio common shared - build-depends: base >=4.12 && <4.20, + build-depends: base >=4.12 && <4.21, aeson, bv-sized, bytestring, @@ -63,7 +63,7 @@ test-suite crucible-symio-tests main-is: TestMain.hs hs-source-dirs: tests, src ghc-options: -Wall -Wcompat - build-depends: base >=4.12 && <4.20, + build-depends: base >=4.12 && <4.21, what4, crucible, crucible-symio, diff --git a/crucible-syntax/crucible-syntax.cabal b/crucible-syntax/crucible-syntax.cabal index 3f6c14cad..e3c605502 100644 --- a/crucible-syntax/crucible-syntax.cabal +++ b/crucible-syntax/crucible-syntax.cabal @@ -30,60 +30,76 @@ common shared -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html - -- Since GHC 8.10 or earlier: + -- Since GHC 9.4 or earlier: ghc-options: -Wall + -Werror=ambiguous-fields -Werror=compat-unqualified-imports -Werror=deferred-type-errors -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=inline-rule-shadowing + -Werror=misplaced-pragmas -Werror=missed-extra-shared-lib -Werror=missing-exported-signatures -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances + -Werror=operator-whitespace + -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures + -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards + -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes + -Werror=type-equality-out-of-scope + -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind - if impl(ghc >= 9.2) - ghc-options: - -Werror=ambiguous-fields - -Werror=operator-whitespace - -Werror=operator-whitespace-ext-conflict - -Werror=redundant-bang-patterns + if impl(ghc < 9.8) + -Werror=forall-identifier - if impl(ghc >= 9.4) + if impl(ghc >= 9.8) ghc-options: - -Werror=forall-identifier - -Werror=misplaced-pragmas - -Werror=redundant-strictness-flags - -Werror=type-equality-out-of-scope - -Werror=type-equality-requires-operators + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + -Werror=missing-poly-kind-signatures ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 diff --git a/crucible/CHANGELOG.md b/crucible/CHANGELOG.md index ef230d2f7..47c78d951 100644 --- a/crucible/CHANGELOG.md +++ b/crucible/CHANGELOG.md @@ -1,5 +1,6 @@ # next -- TBA +* Add support for GHC 9.10 * Add support for Bitwuzla as an online SMT solver backend. * Add a function `ppTypeRepr` to `Lang.Crucible.Types` for pretty-printing `TypeRepr`s. Modify the `Pretty` instance to use this function. diff --git a/crucible/crucible.cabal b/crucible/crucible.cabal index 4da2d8839..d1c42dae6 100644 --- a/crucible/crucible.cabal +++ b/crucible/crucible.cabal @@ -45,7 +45,7 @@ library import: bldflags build-depends: async, - base >= 4.13 && < 4.20, + base >= 4.13 && < 4.21, bimap, bv-sized >= 1.0.0 && < 1.1, containers >= 0.5.9.0, diff --git a/crucible/src/Lang/Crucible/Utils/BitSet.hs b/crucible/src/Lang/Crucible/Utils/BitSet.hs index 636b80344..d99dc1112 100644 --- a/crucible/src/Lang/Crucible/Utils/BitSet.hs +++ b/crucible/src/Lang/Crucible/Utils/BitSet.hs @@ -35,7 +35,7 @@ import Data.Bits import Data.Word import Data.Hashable import qualified Data.List as List -import Prelude hiding (null, foldr, foldl) +import Prelude hiding (null, foldr, foldl, foldl') newtype BitSet a = BitSet { getBits :: Integer } deriving (Show, Eq, Ord) diff --git a/crux-llvm/CHANGELOG.md b/crux-llvm/CHANGELOG.md index 3c7900200..2fe9d4a02 100644 --- a/crux-llvm/CHANGELOG.md +++ b/crux-llvm/CHANGELOG.md @@ -1,5 +1,6 @@ # next -- TBA +* Add support for GHC 9.10. * Add support for the Bitwuzla SMT solver in the test suite. * Add `--debug` option for starting the Crucible debugger. diff --git a/crux-llvm/crux-llvm.cabal b/crux-llvm/crux-llvm.cabal index 37dbe705e..5de54d0d8 100644 --- a/crux-llvm/crux-llvm.cabal +++ b/crux-llvm/crux-llvm.cabal @@ -55,7 +55,7 @@ common bldflags -Wincomplete-uni-patterns ghc-prof-options: -O2 default-language: Haskell2010 - build-depends: base >= 4.8 && < 4.20 + build-depends: base >= 4.8 && < 4.21 , bytestring , containers , crucible diff --git a/crux-mir/CHANGELOG.md b/crux-mir/CHANGELOG.md index 0f6cbc6fb..bb91b42a4 100644 --- a/crux-mir/CHANGELOG.md +++ b/crux-mir/CHANGELOG.md @@ -1,5 +1,6 @@ # next -- TBA +* Add support for GHC 9.10 * Add `--debug` option for starting the Crucible debugger. # 0.9 -- 2024-08-30 diff --git a/crux/CHANGELOG.md b/crux/CHANGELOG.md index ab55f6ff1..bde8b4499 100644 --- a/crux/CHANGELOG.md +++ b/crux/CHANGELOG.md @@ -1,5 +1,6 @@ # next -- TBA +* Add support for GHC 9.10 * Add support for the Bitwuzla SMT solver. * Add `--debug` option for starting the Crucible debugger. * For the sake of the `--debug` flag, Crux now depends on the diff --git a/uc-crux-llvm/uc-crux-llvm.cabal b/uc-crux-llvm/uc-crux-llvm.cabal index e431110b5..7ba87dabc 100644 --- a/uc-crux-llvm/uc-crux-llvm.cabal +++ b/uc-crux-llvm/uc-crux-llvm.cabal @@ -26,61 +26,78 @@ common bldflags -- available here: -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html - -- Since GHC 8.10 or earlier: + -- Since GHC 9.4 or earlier: ghc-options: -Wall + -Werror=ambiguous-fields -Werror=compat-unqualified-imports -Werror=deferred-type-errors -Werror=deprecated-flags -Werror=deprecations -Werror=deriving-defaults + -Werror=deriving-typeable -Werror=dodgy-foreign-imports -Werror=duplicate-exports -Werror=empty-enumerations + -Werror=gadt-mono-local-binds -Werror=identities -Werror=inaccessible-code -Werror=incomplete-patterns -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=inline-rule-shadowing + -Werror=misplaced-pragmas -Werror=missed-extra-shared-lib -Werror=missing-exported-signatures -Werror=missing-fields -Werror=missing-home-modules -Werror=missing-methods + -Werror=missing-pattern-synonym-signatures + -Werror=missing-signatures + -Werror=name-shadowing + -Werror=noncanonical-monad-instances + -Werror=noncanonical-monoid-instances + -Werror=operator-whitespace + -Werror=operator-whitespace-ext-conflict + -Werror=orphans -Werror=overflowed-literals -Werror=overlapping-patterns -Werror=partial-fields -Werror=partial-type-signatures + -Werror=redundant-bang-patterns + -Werror=redundant-record-wildcards + -Werror=redundant-strictness-flags -Werror=simplifiable-class-constraints -Werror=star-binder -Werror=star-is-type -Werror=tabs + -Werror=trustworthy-safe + -Werror=type-defaults -Werror=typed-holes + -Werror=type-equality-out-of-scope + -Werror=type-equality-requires-operators + -Werror=unicode-bidirectional-format-characters -Werror=unrecognised-pragmas -Werror=unrecognised-warning-flags -Werror=unsupported-calling-conventions -Werror=unsupported-llvm-version -Werror=unticked-promoted-constructors + -Werror=unused-do-bind -Werror=unused-imports + -Werror=unused-record-wildcards -Werror=warnings-deprecations -Werror=wrong-do-bind - if impl(ghc >= 9.2) + if impl(ghc < 9.8) + -Werror=forall-identifier + + if impl(ghc >= 9.8) ghc-options: - -Werror=ambiguous-fields - -Werror=operator-whitespace - -Werror=operator-whitespace-ext-conflict - -Werror=redundant-bang-patterns + -Werror=incomplete-export-warnings + -Werror=inconsistent-flags + + -- TODO: enable -Werror=missing-poly-kind-signatures - -- TODO(lb): Test these with GHC 9.4 - -- if impl(ghc >= 9.4) - -- ghc-options: - -- -Werror=forall-identifier - -- -Werror=misplaced-pragmas - -- -Werror=redundant-strictness-flags - -- -Werror=type-equality-out-of-scope - -- -Werror=type-equality-requires-operators ghc-prof-options: -O2 -fprof-auto-top default-language: Haskell2010 @@ -185,7 +202,7 @@ library build-depends: aeson, async, - base >= 4.8 && < 4.20, + base >= 4.8 && < 4.21, bv-sized, bytestring, containers, @@ -217,7 +234,7 @@ executable uc-crux-llvm hs-source-dirs: exe build-depends: - base >= 4.8 && < 4.20, + base >= 4.8 && < 4.21, uc-crux-llvm ghc-options: -threaded