diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d4e42fb846..d71ca56ed2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,5 @@ # Overall configuration notes: -# - Artifact uploads for binaries are from GHC 9.2.7 +# - Artifact uploads for binaries are from GHC 9.2.8 # - Builds for Ubuntu happen on 22.04. We also include a single configuration # for 20.04 to increase our Linux coverage. # - Docker builds happen nightly, on manual invocation, and on release branch commits @@ -78,7 +78,7 @@ jobs: matrix: os: [ubuntu-22.04, macos-12, windows-2019] cabal: ["3.10.1.0"] - ghc: ["8.10.7", "9.2.7", "9.4.4"] + ghc: ["9.2.8", "9.4.8", "9.6.3"] run-tests: [true] hpc: [false] include: @@ -86,28 +86,16 @@ jobs: # coverage of possible Linux configurations. Since we already run the # tests with the newest LTS release, we won't bother testing this one. - os: ubuntu-20.04 - ghc: "9.2.7" + ghc: "9.2.8" cabal: "3.10.1.0" run-tests: false hpc: false # Include one job with HPC enabled - os: ubuntu-22.04 - ghc: "9.4.4" + ghc: "9.4.8" cabal: "3.10.1.0" run-tests: true hpc: true - exclude: - # We exclude the GHC 8.10.7 job on Windows, as it is known to suffer - # from a hard-to-diagnose memory-related issue that does not affect - # later versions of GHC on Windows. (See - # https://github.com/GaloisInc/saw-script/issues/1961.) When we drop - # support for 8.10 entirely from SAW's support Window, we can remove - # this part of the matrix entirely. - - os: windows-2019 - ghc: "8.10.7" - cabal: "3.10.1.0" - run-tests: true - hpc: false outputs: cabal-test-suites-json: ${{ steps.cabal-test-suites.outputs.targets-json }} steps: @@ -183,7 +171,7 @@ jobs: dest: dist-tests - uses: actions/upload-artifact@v2 - if: "matrix.ghc == '9.2.7'" + if: "matrix.ghc == '9.2.8'" with: path: dist-tests name: dist-tests-${{ matrix.os }} @@ -200,14 +188,14 @@ jobs: - shell: bash run: .github/ci.sh zip_dist_with_solvers $NAME-with-solvers - - if: matrix.ghc == '9.2.7' && github.event.pull_request.head.repo.fork == false + - if: matrix.ghc == '9.2.8' && github.event.pull_request.head.repo.fork == false shell: bash env: SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} SIGNING_KEY: ${{ secrets.SIGNING_KEY }} run: .github/ci.sh sign $NAME.tar.gz - - if: matrix.ghc == '9.2.7' && github.event.pull_request.head.repo.fork == false + - if: matrix.ghc == '9.2.8' && github.event.pull_request.head.repo.fork == false shell: bash env: SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} @@ -217,7 +205,7 @@ jobs: ########################################################################## # We upload an archive containing SAW, and also and archive containing SAW # and the set of possible SMT solvers, but only for our "primary" - # distribution (currently: GHC 9.2.7). These archives are utilized in + # distribution (currently: GHC 9.2.8). These archives are utilized in # subsequent CI jobs, but are also published for external users, and are # therefore signed. # @@ -232,7 +220,7 @@ jobs: # In the next 3 steps we check that `matrix.hpc == false` so that if the # distribution version matches the HPC version, the HPC build artifacts do # not clobber the non-HPC distribution artifacts. - - if: matrix.ghc == '9.2.7' && matrix.hpc == false + - if: matrix.ghc == '9.2.8' && matrix.hpc == false uses: actions/upload-artifact@v2 with: name: ${{ steps.config.outputs.name }} (GHC ${{ matrix.ghc }}) @@ -240,7 +228,7 @@ jobs: if-no-files-found: error retention-days: ${{ needs.config.outputs.retention-days }} - - if: matrix.ghc == '9.2.7' && matrix.hpc == false + - if: matrix.ghc == '9.2.8' && matrix.hpc == false uses: actions/upload-artifact@v2 with: name: ${{ steps.config.outputs.name }}-with-solvers (GHC ${{ matrix.ghc }}) @@ -248,7 +236,7 @@ jobs: if-no-files-found: error retention-days: ${{ needs.config.outputs.retention-days }} - - if: matrix.ghc == '9.2.7' && matrix.run-tests && matrix.hpc == false + - if: matrix.ghc == '9.2.8' && matrix.run-tests && matrix.hpc == false uses: actions/upload-artifact@v2 with: path: dist/bin @@ -726,7 +714,7 @@ jobs: - hmac-failure - awslc - blst - ghc: ["9.2.7"] + ghc: ["9.2.8"] steps: - uses: actions/checkout@v2 - run: | @@ -779,7 +767,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - ghc: ["9.2.7"] + ghc: ["9.2.8"] steps: - uses: actions/checkout@v2 - run: | diff --git a/.gitmodules b/.gitmodules index 90b2fb191d..ae16f8fa82 100644 --- a/.gitmodules +++ b/.gitmodules @@ -42,7 +42,7 @@ url = https://github.com/galoisinc/argo [submodule "deps/language-rust"] path = deps/language-rust - url = https://github.com/harpocrates/language-rust.git + url = https://github.com/GaloisInc/language-rust.git [submodule "deps/language-sally"] path = deps/language-sally url = https://github.com/GaloisInc/language-sally diff --git a/README.md b/README.md index 0d846bf35c..fb1c06b9e6 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ To build SAWScript and related utilities from source: * Ensure that you have the `cabal` and `ghc` executables in your `PATH`. If you don't already have them, we recommend using `ghcup` to install them: . We recommend - Cabal 3.4 or newer, and GHC 8.10, 9.2, or 9.4. + Cabal 3.10 or newer, and GHC 9.2, 9.4, or 9.6. (If you are using the GHC 9.2 series, make sure to use 9.2.6 or later to avoid [this bug](https://gitlab.haskell.org/ghc/ghc/-/issues/22491).) diff --git a/cabal.GHC-9.2.7.config b/cabal.GHC-9.2.8.config similarity index 89% rename from cabal.GHC-9.2.7.config rename to cabal.GHC-9.2.8.config index d86db548df..8e9e5cad34 100644 --- a/cabal.GHC-9.2.7.config +++ b/cabal.GHC-9.2.8.config @@ -20,7 +20,7 @@ constraints: any.BoundedChan ==1.0.3.0, aeson -cffi +ordered-keymap, any.aeson-pretty ==0.8.10, aeson-pretty -lib-only, - any.alex ==3.4.0.0, + any.alex ==3.4.0.1, any.ansi-terminal ==0.11.5, ansi-terminal -example, any.ansi-terminal-types ==0.11.5, @@ -40,11 +40,11 @@ constraints: any.BoundedChan ==1.0.3.0, attoparsec -developer, any.attoparsec-aeson ==2.1.0.0, any.auto-update ==0.1.6, - any.barbies ==2.0.4.0, + any.barbies ==2.0.5.0, any.base ==4.16.4.0, any.base-compat ==0.12.3, any.base-compat-batteries ==0.12.3, - any.base-orphans ==0.9.0, + any.base-orphans ==0.9.1, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, any.basement ==0.0.16, @@ -53,12 +53,12 @@ constraints: any.BoundedChan ==1.0.3.0, any.bimap ==0.5.0, any.binary ==0.8.9.0, any.binary-orphans ==1.0.4.1, - any.bitvec ==1.1.4.0, - bitvec -libgmp, + any.bitvec ==1.1.5.0, + bitvec +simd, any.bitwise ==1.0.0.1, - any.blaze-builder ==0.4.2.2, + any.blaze-builder ==0.4.2.3, any.blaze-html ==0.9.1.2, - any.blaze-markup ==0.8.2.8, + any.blaze-markup ==0.8.3.0, any.boomerang ==1.4.9, any.bsb-http-chunked ==0.0.0.4, any.bv-sized ==1.0.5, @@ -69,12 +69,12 @@ constraints: any.BoundedChan ==1.0.3.0, any.case-insensitive ==1.2.1.0, any.cassava ==0.5.3.0, cassava -bytestring--lt-0_10_4, - any.cborg ==0.2.9.0, + any.cborg ==0.2.10.0, cborg +optimize-gmp, - any.cborg-json ==0.2.5.0, + any.cborg-json ==0.2.6.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, - any.chimera ==0.3.3.0, + any.chimera ==0.3.4.0, chimera +representable, any.clock ==0.8.4, clock -llvm, @@ -85,7 +85,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.18, + any.concurrent-output ==1.10.20, any.conduit ==1.3.5, any.conduit-extra ==1.3.6, any.config-schema ==1.3.0.0, @@ -106,7 +106,7 @@ constraints: any.BoundedChan ==1.0.3.0, cryptohash-sha256 -exe +use-cbits, cryptol +ffi +relocatable -static, cryptol-remote-api -notthreaded -static, - any.crypton ==0.33, + any.crypton ==0.34, crypton -check_alignment +integer-gmp -old_toolchain_inliner +support_aesni +support_deepseq +support_pclmuldq +support_rdrand -support_sse +use_target_attributes, any.crypton-x509 ==1.7.6, any.crypton-x509-store ==1.6.9, @@ -130,7 +130,7 @@ constraints: any.BoundedChan ==1.0.3.0, distributive +semigroups +tagged, any.dlist ==1.0, dlist -werror, - any.doctest ==0.22.0, + any.doctest ==0.22.2, any.dotgen ==0.4.3, dotgen -devel, any.easy-file ==0.2.5, @@ -144,7 +144,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.extensible-exceptions ==0.1.1.4, any.extra ==1.7.14, any.fast-logger ==3.2.2, - any.fgl ==5.8.1.1, + any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filelock ==0.1.1.7, @@ -161,14 +161,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.generic-random ==1.5.0.1, generic-random -enable-inspect, any.generically ==0.1.1, - any.ghc ==9.2.7, + any.ghc ==9.2.8, any.ghc-bignum ==1.2, - any.ghc-boot ==9.2.7, - any.ghc-boot-th ==9.2.7, - any.ghc-heap ==9.2.7, + any.ghc-boot ==9.2.8, + any.ghc-boot-th ==9.2.8, + any.ghc-heap ==9.2.8, any.ghc-paths ==0.1.0.12, any.ghc-prim ==0.8.0, - any.ghci ==9.2.7, + any.ghci ==9.2.8, any.gitrev ==1.3.1, any.graphviz ==2999.20.1.0, graphviz -test-parsing, @@ -181,7 +181,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.haskeline ==0.8.2, any.haskell-lexer ==1.1.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.12, + any.haskell-src-meta ==0.8.13, any.hedgehog ==1.2, any.hedgehog-classes ==0.2.5.4, hedgehog-classes +aeson +comonad +primitive +semirings +vector, @@ -191,20 +191,20 @@ constraints: any.BoundedChan ==1.0.3.0, any.hostname ==1.0, any.hourglass ==0.2.12, any.hpc ==0.6.1.0, - any.hsc2hs ==0.68.9, + any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - any.hspec ==2.11.4, - any.hspec-api ==2.11.4, - any.hspec-core ==2.11.4, - any.hspec-discover ==2.11.4, + any.hspec ==2.11.7, + any.hspec-api ==2.11.7, + any.hspec-core ==2.11.7, + any.hspec-discover ==2.11.7, any.hspec-expectations ==0.8.4, any.http-date ==0.0.11, any.http-types ==0.12.3, - any.http2 ==4.1.4, + any.http2 ==4.2.2, http2 -devel -h2spec, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.2.1, + any.indexed-traversable ==0.1.3, any.indexed-traversable-instances ==0.1.1.2, any.infinite-list ==0.1, any.integer-gmp ==1.1, @@ -223,10 +223,10 @@ constraints: any.BoundedChan ==1.0.3.0, any.kan-extensions ==5.2.5, any.kvitable ==1.0.2.1, any.language-c99 ==0.2.0, - any.language-c99-simple ==0.2.2, + any.language-c99-simple ==0.2.3, any.language-c99-util ==0.2.0, language-rust +enablequasiquotes +usebytestrings, - any.lens ==5.2.2, + any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, any.libBF ==0.6.6, libBF -system-libbf, @@ -234,26 +234,26 @@ constraints: any.BoundedChan ==1.0.3.0, libffi +ghc-bundled-libffi, any.libyaml ==0.1.2, libyaml -no-unicode -system-libyaml, - any.lifted-async ==0.10.2.4, + any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, lmdb -pkg-config, any.logict ==0.8.1.0, any.lucid ==2.11.20230408, any.lumberjack ==1.0.3.0, - any.math-functions ==0.3.4.2, + any.math-functions ==0.3.4.3, math-functions +system-erf +system-expm1, any.megaparsec ==9.3.1, megaparsec -dev, any.memory ==0.18.0, memory +support_bytestring +support_deepseq, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.13, + any.microlens-th ==0.4.3.14, any.microstache ==1.0.2.3, any.mmorph ==1.2.0, any.mod ==0.2.0.1, mod +semirings +vector, - any.modern-uri ==0.3.6.0, + any.modern-uri ==0.3.6.1, modern-uri -dev, any.monad-control ==1.0.3.1, any.monadLib ==3.10.1, @@ -262,7 +262,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.mwc-random ==0.15.0.2, any.network ==3.1.4.0, network -devel, - any.network-byte-order ==0.1.6, + any.network-byte-order ==0.1.7, any.network-info ==0.2.1, any.newtype-generics ==0.6.2, any.numtype-dk ==0.5.0.3, @@ -288,8 +288,8 @@ constraints: any.BoundedChan ==1.0.3.0, any.primitive ==0.8.0.0, any.process ==1.6.16.0, any.profunctors ==5.6.2, - any.psqueues ==0.2.7.3, - any.quickcheck-instances ==0.3.29.1, + any.psqueues ==0.2.8.0, + any.quickcheck-instances ==0.3.30, quickcheck-instances -bytestring-builder, any.quickcheck-io ==0.2.0, any.random ==1.2.1.1, @@ -307,7 +307,7 @@ constraints: any.BoundedChan ==1.0.3.0, s-cargot -build-example, any.safe ==0.3.19, any.safe-exceptions ==0.1.7.4, - any.sbv ==9.2, + any.sbv ==10.2, any.scientific ==0.3.7.0, scientific -bytestring-builder -integer-simple, any.scotty ==0.12.1, @@ -319,7 +319,7 @@ constraints: any.BoundedChan ==1.0.3.0, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, any.semirings ==0.6, semirings +containers +unordered-containers, - any.serialise ==0.2.6.0, + any.serialise ==0.2.6.1, serialise +newtime15, any.silently ==1.2.5.3, any.simple-get-opt ==0.4, @@ -327,10 +327,10 @@ constraints: any.BoundedChan ==1.0.3.0, simple-sendfile +allow-bsd -fallback, any.simple-smt ==0.9.7, any.smallcheck ==1.2.1.1, - any.split ==0.2.3.5, - any.splitmix ==0.1.0.4, + any.split ==0.2.4, + any.splitmix ==0.1.0.5, splitmix -optimised-mixer, - any.statistics ==0.16.2.0, + any.statistics ==0.16.2.1, any.stm ==2.5.0.2, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, @@ -342,14 +342,14 @@ constraints: any.BoundedChan ==1.0.3.0, tagged +deepseq +transformers, any.tasty ==1.4.3, tasty +unix, - any.tasty-ant-xml ==1.1.8, + any.tasty-ant-xml ==1.1.9, any.tasty-checklist ==1.0.6.0, any.tasty-expected-failure ==0.12.3, any.tasty-golden ==2.3.5, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.1, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.0.3, + any.tasty-hunit ==0.10.1, any.tasty-quickcheck ==0.10.2, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, @@ -376,8 +376,8 @@ constraints: any.BoundedChan ==1.0.3.0, any.time ==1.11.1.1, any.time-compat ==1.9.6.1, time-compat -old-locale, - any.time-manager ==0.0.0, - any.tls ==1.7.1, + any.time-manager ==0.0.1, + any.tls ==1.9.0, tls +compat -hans +network, any.tls-session-manager ==0.0.4, any.transformers ==0.5.6.2, @@ -386,23 +386,23 @@ constraints: any.BoundedChan ==1.0.3.0, any.transformers-compat ==0.7.2, transformers-compat -five +five-three -four +generic-deriving +mtl -three -two, any.type-equality ==1, - any.typed-process ==0.2.11.0, + any.typed-process ==0.2.11.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, any.unix ==2.7.2.2, any.unix-compat ==0.7, unix-compat -old-time, - any.unix-time ==0.4.10, + any.unix-time ==0.4.11, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.19.1, unordered-containers -debug, any.utf8-string ==1.0.2, any.uuid ==1.3.15, - any.uuid-types ==1.0.5, + any.uuid-types ==1.0.5.1, any.vault ==0.3.1.5, vault +useghc, - any.vector ==0.13.0.0, + any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, any.vector-algorithms ==0.9.0.1, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, @@ -416,9 +416,9 @@ constraints: any.BoundedChan ==1.0.3.0, any.wai-extra ==3.1.13.0, wai-extra -build-example, any.wai-logger ==2.4.0, - any.warp ==3.3.28, + any.warp ==3.3.30, warp +allow-sendfilefd -network-bytestring -warp-debug +x509, - any.warp-tls ==3.4.0, + any.warp-tls ==3.4.3, any.weigh ==0.0.17, what4 -drealtestdisable -solvertests -stptestdisable, any.witherable ==0.4.2, @@ -432,4 +432,4 @@ constraints: any.BoundedChan ==1.0.3.0, any.zlib ==0.6.3.0, zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2023-08-12T09:08:58Z +index-state: hackage.haskell.org 2023-11-20T16:07:24Z diff --git a/cabal.GHC-9.4.4.config b/cabal.GHC-9.4.8.config similarity index 87% rename from cabal.GHC-9.4.4.config rename to cabal.GHC-9.4.8.config index 60c28d9c4c..ba4f1fa561 100644 --- a/cabal.GHC-9.4.4.config +++ b/cabal.GHC-9.4.8.config @@ -21,7 +21,7 @@ constraints: any.BoundedChan ==1.0.3.0, aeson -cffi +ordered-keymap, any.aeson-pretty ==0.8.10, aeson-pretty -lib-only, - any.alex ==3.4.0.0, + any.alex ==3.4.0.1, any.ansi-terminal ==0.11.5, ansi-terminal -example, any.ansi-terminal-types ==0.11.5, @@ -41,11 +41,11 @@ constraints: any.BoundedChan ==1.0.3.0, attoparsec -developer, any.attoparsec-aeson ==2.1.0.0, any.auto-update ==0.1.6, - any.barbies ==2.0.4.0, - any.base ==4.17.0.0, + any.barbies ==2.0.5.0, + any.base ==4.17.2.1, any.base-compat ==0.12.3, any.base-compat-batteries ==0.12.3, - any.base-orphans ==0.9.0, + any.base-orphans ==0.9.1, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, any.basement ==0.0.16, @@ -54,28 +54,28 @@ constraints: any.BoundedChan ==1.0.3.0, any.bimap ==0.5.0, any.binary ==0.8.9.1, any.binary-orphans ==1.0.4.1, - any.bitvec ==1.1.4.0, - bitvec -libgmp, + any.bitvec ==1.1.5.0, + bitvec +simd, any.bitwise ==1.0.0.1, - any.blaze-builder ==0.4.2.2, + any.blaze-builder ==0.4.2.3, any.blaze-html ==0.9.1.2, - any.blaze-markup ==0.8.2.8, + any.blaze-markup ==0.8.3.0, any.boomerang ==1.4.9, any.bsb-http-chunked ==0.0.0.4, any.bv-sized ==1.0.5, any.byteorder ==1.0.4, - any.bytestring ==0.11.3.1, + any.bytestring ==0.11.5.3, any.cabal-doctest ==1.0.9, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cassava ==0.5.3.0, cassava -bytestring--lt-0_10_4, - any.cborg ==0.2.9.0, + any.cborg ==0.2.10.0, cborg +optimize-gmp, - any.cborg-json ==0.2.5.0, + any.cborg-json ==0.2.6.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, - any.chimera ==0.3.3.0, + any.chimera ==0.3.4.0, chimera +representable, any.clock ==0.8.4, clock -llvm, @@ -86,13 +86,13 @@ constraints: any.BoundedChan ==1.0.3.0, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.18, + any.concurrent-output ==1.10.20, any.conduit ==1.3.5, any.conduit-extra ==1.3.6, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, any.constraints ==0.13.4, - any.containers ==0.6.6, + any.containers ==0.6.7, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, any.cookie ==0.4.6, @@ -107,7 +107,7 @@ constraints: any.BoundedChan ==1.0.3.0, cryptohash-sha256 -exe +use-cbits, cryptol +ffi +relocatable -static, cryptol-remote-api -notthreaded -static, - any.crypton ==0.33, + any.crypton ==0.34, crypton -check_alignment +integer-gmp -old_toolchain_inliner +support_aesni +support_deepseq +support_pclmuldq +support_rdrand -support_sse +use_target_attributes, any.crypton-x509 ==1.7.6, any.crypton-x509-store ==1.6.9, @@ -130,7 +130,7 @@ constraints: any.BoundedChan ==1.0.3.0, distributive +semigroups +tagged, any.dlist ==1.0, dlist -werror, - any.doctest ==0.22.0, + any.doctest ==0.22.2, any.dotgen ==0.4.3, dotgen -devel, any.easy-file ==0.2.5, @@ -144,7 +144,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.extensible-exceptions ==0.1.1.4, any.extra ==1.7.14, any.fast-logger ==3.2.2, - any.fgl ==5.8.1.1, + any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filelock ==0.1.1.7, @@ -161,14 +161,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.generic-random ==1.5.0.1, generic-random -enable-inspect, any.generically ==0.1.1, - any.ghc ==9.4.4, + any.ghc ==9.4.8, any.ghc-bignum ==1.3, - any.ghc-boot ==9.4.4, - any.ghc-boot-th ==9.4.4, - any.ghc-heap ==9.4.4, + any.ghc-boot ==9.4.8, + any.ghc-boot-th ==9.4.8, + any.ghc-heap ==9.4.8, any.ghc-paths ==0.1.0.12, - any.ghc-prim ==0.9.0, - any.ghci ==9.4.4, + any.ghc-prim ==0.9.1, + any.ghci ==9.4.8, any.gitrev ==1.3.1, any.graphviz ==2999.20.1.0, graphviz -test-parsing, @@ -181,7 +181,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.haskeline ==0.8.2, any.haskell-lexer ==1.1.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.12, + any.haskell-src-meta ==0.8.13, any.hedgehog ==1.2, any.hedgehog-classes ==0.2.5.4, hedgehog-classes +aeson +comonad +primitive +semirings +vector, @@ -191,20 +191,20 @@ constraints: any.BoundedChan ==1.0.3.0, any.hostname ==1.0, any.hourglass ==0.2.12, any.hpc ==0.6.1.0, - any.hsc2hs ==0.68.9, + any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - any.hspec ==2.11.4, - any.hspec-api ==2.11.4, - any.hspec-core ==2.11.4, - any.hspec-discover ==2.11.4, + any.hspec ==2.11.7, + any.hspec-api ==2.11.7, + any.hspec-core ==2.11.7, + any.hspec-discover ==2.11.7, any.hspec-expectations ==0.8.4, any.http-date ==0.0.11, any.http-types ==0.12.3, - any.http2 ==4.1.4, + any.http2 ==4.2.2, http2 -devel -h2spec, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.2.1, + any.indexed-traversable ==0.1.3, any.indexed-traversable-instances ==0.1.1.2, any.infinite-list ==0.1, any.integer-gmp ==1.1, @@ -223,10 +223,10 @@ constraints: any.BoundedChan ==1.0.3.0, any.kan-extensions ==5.2.5, any.kvitable ==1.0.2.1, any.language-c99 ==0.2.0, - any.language-c99-simple ==0.2.2, + any.language-c99-simple ==0.2.3, any.language-c99-util ==0.2.0, language-rust +enablequasiquotes +usebytestrings, - any.lens ==5.2.2, + any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, any.libBF ==0.6.6, libBF -system-libbf, @@ -234,26 +234,26 @@ constraints: any.BoundedChan ==1.0.3.0, libffi +ghc-bundled-libffi, any.libyaml ==0.1.2, libyaml -no-unicode -system-libyaml, - any.lifted-async ==0.10.2.4, + any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, lmdb -pkg-config, any.logict ==0.8.1.0, any.lucid ==2.11.20230408, any.lumberjack ==1.0.3.0, - any.math-functions ==0.3.4.2, + any.math-functions ==0.3.4.3, math-functions +system-erf +system-expm1, any.megaparsec ==9.3.1, megaparsec -dev, any.memory ==0.18.0, memory +support_bytestring +support_deepseq, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.13, + any.microlens-th ==0.4.3.14, any.microstache ==1.0.2.3, any.mmorph ==1.2.0, any.mod ==0.2.0.1, mod +semirings +vector, - any.modern-uri ==0.3.6.0, + any.modern-uri ==0.3.6.1, modern-uri -dev, any.monad-control ==1.0.3.1, any.monadLib ==3.10.1, @@ -262,7 +262,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.mwc-random ==0.15.0.2, any.network ==3.1.4.0, network -devel, - any.network-byte-order ==0.1.6, + any.network-byte-order ==0.1.7, any.network-info ==0.2.1, any.newtype-generics ==0.6.2, any.numtype-dk ==0.5.0.3, @@ -274,7 +274,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, parameterized-utils +unsafe-operations, - any.parsec ==3.1.15.0, + any.parsec ==3.1.16.1, any.parser-combinators ==1.3.0, parser-combinators -dev, any.pem ==0.2.4, @@ -286,10 +286,10 @@ constraints: any.BoundedChan ==1.0.3.0, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, any.primitive ==0.8.0.0, - any.process ==1.6.16.0, + any.process ==1.6.18.0, any.profunctors ==5.6.2, - any.psqueues ==0.2.7.3, - any.quickcheck-instances ==0.3.29.1, + any.psqueues ==0.2.8.0, + any.quickcheck-instances ==0.3.30, quickcheck-instances -bytestring-builder, any.quickcheck-io ==0.2.0, any.random ==1.2.1.1, @@ -307,7 +307,7 @@ constraints: any.BoundedChan ==1.0.3.0, s-cargot -build-example, any.safe ==0.3.19, any.safe-exceptions ==0.1.7.4, - any.sbv ==9.2, + any.sbv ==10.2, any.scientific ==0.3.7.0, scientific -bytestring-builder -integer-simple, any.scotty ==0.12.1, @@ -319,7 +319,7 @@ constraints: any.BoundedChan ==1.0.3.0, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, any.semirings ==0.6, semirings +containers +unordered-containers, - any.serialise ==0.2.6.0, + any.serialise ==0.2.6.1, serialise +newtime15, any.silently ==1.2.5.3, any.simple-get-opt ==0.4, @@ -327,10 +327,10 @@ constraints: any.BoundedChan ==1.0.3.0, simple-sendfile +allow-bsd -fallback, any.simple-smt ==0.9.7, any.smallcheck ==1.2.1.1, - any.split ==0.2.3.5, - any.splitmix ==0.1.0.4, + any.split ==0.2.4, + any.splitmix ==0.1.0.5, splitmix -optimised-mixer, - any.statistics ==0.16.2.0, + any.statistics ==0.16.2.1, any.stm ==2.5.1.0, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, @@ -342,14 +342,14 @@ constraints: any.BoundedChan ==1.0.3.0, tagged +deepseq +transformers, any.tasty ==1.4.3, tasty +unix, - any.tasty-ant-xml ==1.1.8, + any.tasty-ant-xml ==1.1.9, any.tasty-checklist ==1.0.6.0, any.tasty-expected-failure ==0.12.3, any.tasty-golden ==2.3.5, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.1, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.0.3, + any.tasty-hunit ==0.10.1, any.tasty-quickcheck ==0.10.2, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, @@ -360,7 +360,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.test-framework ==0.8.2.0, any.test-framework-hunit ==0.3.0.2, test-framework-hunit -base3 +base4, - any.text ==2.0.1, + any.text ==2.0.2, any.text-conversions ==0.3.1.1, any.text-short ==0.1.5, text-short -asserts, @@ -376,8 +376,8 @@ constraints: any.BoundedChan ==1.0.3.0, any.time ==1.12.2, any.time-compat ==1.9.6.1, time-compat -old-locale, - any.time-manager ==0.0.0, - any.tls ==1.7.1, + any.time-manager ==0.0.1, + any.tls ==1.9.0, tls +compat -hans +network, any.tls-session-manager ==0.0.4, any.transformers ==0.5.6.2, @@ -386,23 +386,23 @@ constraints: any.BoundedChan ==1.0.3.0, any.transformers-compat ==0.7.2, transformers-compat -five +five-three -four +generic-deriving +mtl -three -two, any.type-equality ==1, - any.typed-process ==0.2.11.0, + any.typed-process ==0.2.11.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, any.unix ==2.7.3, any.unix-compat ==0.7, unix-compat -old-time, - any.unix-time ==0.4.10, + any.unix-time ==0.4.11, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.19.1, unordered-containers -debug, any.utf8-string ==1.0.2, any.uuid ==1.3.15, - any.uuid-types ==1.0.5, + any.uuid-types ==1.0.5.1, any.vault ==0.3.1.5, vault +useghc, - any.vector ==0.13.0.0, + any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, any.vector-algorithms ==0.9.0.1, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, @@ -416,9 +416,9 @@ constraints: any.BoundedChan ==1.0.3.0, any.wai-extra ==3.1.13.0, wai-extra -build-example, any.wai-logger ==2.4.0, - any.warp ==3.3.28, + any.warp ==3.3.30, warp +allow-sendfilefd -network-bytestring -warp-debug +x509, - any.warp-tls ==3.4.0, + any.warp-tls ==3.4.3, any.weigh ==0.0.17, what4 -drealtestdisable -solvertests -stptestdisable, any.witherable ==0.4.2, @@ -432,4 +432,4 @@ constraints: any.BoundedChan ==1.0.3.0, any.zlib ==0.6.3.0, zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2023-08-12T09:08:58Z +index-state: hackage.haskell.org 2023-11-20T16:07:24Z diff --git a/cabal.GHC-8.10.7.config b/cabal.GHC-9.6.3.config similarity index 82% rename from cabal.GHC-8.10.7.config rename to cabal.GHC-9.6.3.config index 1095efbdb8..2930e65284 100644 --- a/cabal.GHC-8.10.7.config +++ b/cabal.GHC-9.6.3.config @@ -1,6 +1,7 @@ active-repositories: hackage.haskell.org:merge constraints: any.BoundedChan ==1.0.3.0, - any.Cabal ==3.2.1.0, + any.Cabal ==3.10.1.0, + any.Cabal-syntax ==3.10.1.0, any.Glob ==0.10.2, any.GraphSCC ==1.0.4, GraphSCC -use-maps, @@ -20,15 +21,15 @@ constraints: any.BoundedChan ==1.0.3.0, aeson -cffi +ordered-keymap, any.aeson-pretty ==0.8.10, aeson-pretty -lib-only, - any.alex ==3.4.0.0, + any.alex ==3.4.0.1, any.ansi-terminal ==0.11.5, ansi-terminal -example, any.ansi-terminal-types ==0.11.5, any.ansi-wl-pprint ==0.6.9, ansi-wl-pprint -example, any.appar ==0.1.8, - any.arithmoi ==0.12.1.0, - any.array ==0.5.4.0, + any.arithmoi ==0.13.0.0, + any.array ==0.5.5.0, any.asn1-encoding ==0.9.6, any.asn1-parse ==0.9.5, any.asn1-types ==0.3.4, @@ -40,41 +41,41 @@ constraints: any.BoundedChan ==1.0.3.0, attoparsec -developer, any.attoparsec-aeson ==2.1.0.0, any.auto-update ==0.1.6, - any.barbies ==2.0.4.0, - any.base ==4.14.3.0, + any.barbies ==2.0.5.0, + any.base ==4.18.1.0, any.base-compat ==0.12.3, any.base-compat-batteries ==0.12.3, - any.base-orphans ==0.9.0, + any.base-orphans ==0.9.1, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, any.basement ==0.0.16, any.bifunctors ==5.6.1, bifunctors +tagged, any.bimap ==0.5.0, - any.binary ==0.8.8.0, + any.binary ==0.8.9.1, any.binary-orphans ==1.0.4.1, - any.bitvec ==1.1.4.0, - bitvec -libgmp, + any.bitvec ==1.1.5.0, + bitvec +simd, any.bitwise ==1.0.0.1, - any.blaze-builder ==0.4.2.2, + any.blaze-builder ==0.4.2.3, any.blaze-html ==0.9.1.2, - any.blaze-markup ==0.8.2.8, + any.blaze-markup ==0.8.3.0, any.boomerang ==1.4.9, any.bsb-http-chunked ==0.0.0.4, any.bv-sized ==1.0.5, any.byteorder ==1.0.4, - any.bytestring ==0.10.12.0, + any.bytestring ==0.11.5.2, any.cabal-doctest ==1.0.9, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cassava ==0.5.3.0, cassava -bytestring--lt-0_10_4, - any.cborg ==0.2.9.0, + any.cborg ==0.2.10.0, cborg +optimize-gmp, - any.cborg-json ==0.2.5.0, + any.cborg-json ==0.2.6.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, - any.chimera ==0.3.3.0, + any.chimera ==0.3.4.0, chimera +representable, any.clock ==0.8.4, clock -llvm, @@ -85,13 +86,13 @@ constraints: any.BoundedChan ==1.0.3.0, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.18, + any.concurrent-output ==1.10.20, any.conduit ==1.3.5, any.conduit-extra ==1.3.6, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, any.constraints ==0.13.4, - any.containers ==0.6.5.1, + any.containers ==0.6.7, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, any.cookie ==0.4.6, @@ -106,7 +107,7 @@ constraints: any.BoundedChan ==1.0.3.0, cryptohash-sha256 -exe +use-cbits, cryptol +ffi +relocatable -static, cryptol-remote-api -notthreaded -static, - any.crypton ==0.33, + any.crypton ==0.34, crypton -check_alignment +integer-gmp -old_toolchain_inliner +support_aesni +support_deepseq +support_pclmuldq +support_rdrand -support_sse +use_target_attributes, any.crypton-x509 ==1.7.6, any.crypton-x509-store ==1.6.9, @@ -116,21 +117,20 @@ constraints: any.BoundedChan ==1.0.3.0, any.cryptonite-conduit ==0.2.2, any.data-accessor ==0.2.3.1, data-accessor +category +monadfail +splitbase, - any.data-array-byte ==0.1.0.1, any.data-default-class ==0.1.2.0, any.data-fix ==0.3.2, any.data-inttrie ==0.1.4, any.data-ref ==0.1, - any.deepseq ==1.4.4.0, + any.deepseq ==1.4.8.1, any.dense-linear-algebra ==0.1.0.0, any.deriving-compat ==0.6.5, deriving-compat +base-4-9 +new-functor-classes +template-haskell-2-11, - any.directory ==1.3.6.0, + any.directory ==1.3.8.1, any.distributive ==0.6.2.1, distributive +semigroups +tagged, any.dlist ==1.0, dlist -werror, - any.doctest ==0.22.0, + any.doctest ==0.22.2, any.dotgen ==0.4.3, dotgen -devel, any.easy-file ==0.2.5, @@ -139,20 +139,18 @@ constraints: any.BoundedChan ==1.0.3.0, entropy -donotgetentropy, any.erf ==2.0.0.0, any.exact-pi ==0.5.0.2, - any.exceptions ==0.10.4, + any.exceptions ==0.10.7, any.executable-path ==0.0.3.1, any.extensible-exceptions ==0.1.1.4, any.extra ==1.7.14, any.fast-logger ==3.2.2, - any.fgl ==5.8.1.1, + any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filelock ==0.1.1.7, any.filemanip ==0.3.6.3, - any.filepath ==1.4.2.1, + any.filepath ==1.4.100.4, any.fingertree ==0.1.5.0, - any.foldable1-classes-compat ==0.1, - foldable1-classes-compat +tagged, any.free ==5.2, any.generic-deriving ==1.14.5, generic-deriving +base-4-9, @@ -161,13 +159,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.generic-random ==1.5.0.1, generic-random -enable-inspect, any.generically ==0.1.1, - any.ghc ==8.10.7, - any.ghc-boot ==8.10.7, - any.ghc-boot-th ==8.10.7, - any.ghc-heap ==8.10.7, + any.ghc ==9.6.3, + any.ghc-bignum ==1.3, + any.ghc-boot ==9.6.3, + any.ghc-boot-th ==9.6.3, + any.ghc-heap ==9.6.3, any.ghc-paths ==0.1.0.12, - any.ghc-prim ==0.6.1, - any.ghci ==8.10.7, + any.ghc-prim ==0.10.0, + any.ghci ==9.6.3, any.gitrev ==1.3.1, any.graphviz ==2999.20.1.0, graphviz -test-parsing, @@ -177,10 +176,10 @@ constraints: any.BoundedChan ==1.0.3.0, hashable +integer-gmp -random-initial-seed, any.hashtables ==1.3.1, 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.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.12, + any.haskell-src-meta ==0.8.13, any.hedgehog ==1.2, any.hedgehog-classes ==0.2.5.4, hedgehog-classes +aeson +comonad +primitive +semirings +vector, @@ -189,23 +188,24 @@ constraints: any.BoundedChan ==1.0.3.0, any.hobbits ==1.4, any.hostname ==1.0, any.hourglass ==0.2.12, - any.hpc ==0.6.1.0, - any.hsc2hs ==0.68.9, + any.hpc ==0.6.2.0, + any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - any.hspec ==2.11.4, - any.hspec-api ==2.11.4, - any.hspec-core ==2.11.4, - any.hspec-discover ==2.11.4, + any.hspec ==2.11.7, + any.hspec-api ==2.11.7, + any.hspec-core ==2.11.7, + any.hspec-discover ==2.11.7, any.hspec-expectations ==0.8.4, any.http-date ==0.0.11, any.http-types ==0.12.3, - any.http2 ==4.1.4, + any.http2 ==4.2.2, http2 -devel -h2spec, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.2.1, + any.indexed-traversable ==0.1.3, any.indexed-traversable-instances ==0.1.1.2, - any.integer-gmp ==1.0.3.0, + any.infinite-list ==0.1, + any.integer-gmp ==1.1, any.integer-logarithms ==1.0.3.1, integer-logarithms -check-bounds +integer-gmp, any.integer-roots ==1.0.2.0, @@ -221,10 +221,10 @@ constraints: any.BoundedChan ==1.0.3.0, any.kan-extensions ==5.2.5, any.kvitable ==1.0.2.1, any.language-c99 ==0.2.0, - any.language-c99-simple ==0.2.2, + any.language-c99-simple ==0.2.3, any.language-c99-util ==0.2.0, language-rust +enablequasiquotes +usebytestrings, - any.lens ==5.2.2, + any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, any.libBF ==0.6.6, libBF -system-libbf, @@ -232,35 +232,35 @@ constraints: any.BoundedChan ==1.0.3.0, libffi +ghc-bundled-libffi, any.libyaml ==0.1.2, libyaml -no-unicode -system-libyaml, - any.lifted-async ==0.10.2.4, + any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, lmdb -pkg-config, any.logict ==0.8.1.0, any.lucid ==2.11.20230408, any.lumberjack ==1.0.3.0, - any.math-functions ==0.3.4.2, + any.math-functions ==0.3.4.3, math-functions +system-erf +system-expm1, - any.megaparsec ==9.2.1, + any.megaparsec ==9.3.1, megaparsec -dev, any.memory ==0.18.0, memory +support_bytestring +support_deepseq, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.13, + any.microlens-th ==0.4.3.14, any.microstache ==1.0.2.3, any.mmorph ==1.2.0, - any.mod ==0.1.2.2, + any.mod ==0.2.0.1, mod +semirings +vector, - any.modern-uri ==0.3.4.4, + any.modern-uri ==0.3.6.1, modern-uri -dev, any.monad-control ==1.0.3.1, any.monadLib ==3.10.1, any.mono-traversable ==1.0.15.3, - any.mtl ==2.2.2, + any.mtl ==2.3.1, any.mwc-random ==0.15.0.2, any.network ==3.1.4.0, network -devel, - any.network-byte-order ==0.1.6, + any.network-byte-order ==0.1.7, any.network-info ==0.2.1, any.newtype-generics ==0.6.2, any.numtype-dk ==0.5.0.3, @@ -272,7 +272,7 @@ constraints: any.BoundedChan ==1.0.3.0, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, parameterized-utils +unsafe-operations, - any.parsec ==3.1.14.0, + any.parsec ==3.1.16.1, any.parser-combinators ==1.3.0, parser-combinators -dev, any.pem ==0.2.4, @@ -284,10 +284,10 @@ constraints: any.BoundedChan ==1.0.3.0, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, any.primitive ==0.8.0.0, - any.process ==1.6.13.2, + any.process ==1.6.17.0, any.profunctors ==5.6.2, - any.psqueues ==0.2.7.3, - any.quickcheck-instances ==0.3.29.1, + any.psqueues ==0.2.8.0, + any.quickcheck-instances ==0.3.30, quickcheck-instances -bytestring-builder, any.quickcheck-io ==0.2.0, any.random ==1.2.1.1, @@ -300,12 +300,12 @@ constraints: any.BoundedChan ==1.0.3.0, any.regex-posix ==0.96.0.1, regex-posix -_regex-posix-clib, any.resourcet ==1.3.0, - any.rts ==1.0.1, + any.rts ==1.0.2, any.s-cargot ==0.1.6.0, s-cargot -build-example, any.safe ==0.3.19, any.safe-exceptions ==0.1.7.4, - any.sbv ==9.2, + any.sbv ==10.2, any.scientific ==0.3.7.0, scientific -bytestring-builder -integer-simple, any.scotty ==0.12.1, @@ -317,7 +317,7 @@ constraints: any.BoundedChan ==1.0.3.0, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, any.semirings ==0.6, semirings +containers +unordered-containers, - any.serialise ==0.2.6.0, + any.serialise ==0.2.6.1, serialise +newtime15, any.silently ==1.2.5.3, any.simple-get-opt ==0.4, @@ -325,11 +325,11 @@ constraints: any.BoundedChan ==1.0.3.0, simple-sendfile +allow-bsd -fallback, any.simple-smt ==0.9.7, any.smallcheck ==1.2.1.1, - any.split ==0.2.3.5, - any.splitmix ==0.1.0.4, + any.split ==0.2.4, + any.splitmix ==0.1.0.5, splitmix -optimised-mixer, - any.statistics ==0.16.2.0, - any.stm ==2.5.0.1, + any.statistics ==0.16.2.1, + any.stm ==2.5.1.0, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, any.strict ==0.5, @@ -340,25 +340,25 @@ constraints: any.BoundedChan ==1.0.3.0, tagged +deepseq +transformers, any.tasty ==1.4.3, tasty +unix, - any.tasty-ant-xml ==1.1.8, + any.tasty-ant-xml ==1.1.9, any.tasty-checklist ==1.0.6.0, any.tasty-expected-failure ==0.12.3, any.tasty-golden ==2.3.5, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.1, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.0.3, + any.tasty-hunit ==0.10.1, any.tasty-quickcheck ==0.10.2, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, - any.template-haskell ==2.16.0.0, + any.template-haskell ==2.20.0.0, any.temporary ==1.3, any.terminal-size ==0.3.3, - any.terminfo ==0.4.1.4, + any.terminfo ==0.4.1.6, any.test-framework ==0.8.2.0, any.test-framework-hunit ==0.3.0.2, test-framework-hunit -base3 +base4, - any.text ==1.2.4.1, + any.text ==2.0.2, any.text-conversions ==0.3.1.1, any.text-short ==0.1.5, text-short -asserts, @@ -371,36 +371,36 @@ constraints: any.BoundedChan ==1.0.3.0, any.th-orphans ==0.13.14, any.th-reify-many ==0.1.10, any.these ==1.2, - any.time ==1.9.3, + any.time ==1.12.2, any.time-compat ==1.9.6.1, time-compat -old-locale, - any.time-manager ==0.0.0, - any.tls ==1.7.1, + any.time-manager ==0.0.1, + any.tls ==1.9.0, tls +compat -hans +network, any.tls-session-manager ==0.0.4, - any.transformers ==0.5.6.2, + any.transformers ==0.6.1.0, any.transformers-base ==0.4.6, transformers-base +orphaninstances, any.transformers-compat ==0.7.2, transformers-compat -five +five-three -four +generic-deriving +mtl -three -two, any.type-equality ==1, - any.typed-process ==0.2.11.0, + any.typed-process ==0.2.11.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, - any.unix ==2.7.2.2, + any.unix ==2.8.1.0, any.unix-compat ==0.7, unix-compat -old-time, - any.unix-time ==0.4.10, + any.unix-time ==0.4.11, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.19.1, unordered-containers -debug, any.utf8-string ==1.0.2, any.uuid ==1.3.15, - any.uuid-types ==1.0.5, + any.uuid-types ==1.0.5.1, any.vault ==0.3.1.5, vault +useghc, - any.vector ==0.13.0.0, + any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, any.vector-algorithms ==0.9.0.1, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, @@ -414,9 +414,9 @@ constraints: any.BoundedChan ==1.0.3.0, any.wai-extra ==3.1.13.0, wai-extra -build-example, any.wai-logger ==2.4.0, - any.warp ==3.3.28, + any.warp ==3.3.30, warp +allow-sendfilefd -network-bytestring -warp-debug +x509, - any.warp-tls ==3.4.0, + any.warp-tls ==3.4.3, any.weigh ==0.0.17, what4 -drealtestdisable -solvertests -stptestdisable, any.witherable ==0.4.2, @@ -430,4 +430,4 @@ constraints: any.BoundedChan ==1.0.3.0, any.zlib ==0.6.3.0, zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2023-08-12T09:08:58Z +index-state: hackage.haskell.org 2023-11-20T16:07:24Z diff --git a/cabal.project b/cabal.project index 4b3dc8753f..a282049b7f 100644 --- a/cabal.project +++ b/cabal.project @@ -48,4 +48,4 @@ packages: source-repository-package type: git location: https://github.com/eddywestbrook/hobbits.git - tag: b88cbfcad607a5ad05d9134e1f0b2461dd68c3d7 + tag: 5fc80ffdce596ca81bf3b6583b1062891d16452c diff --git a/crucible-mir-comp/src/Mir/Compositional/Clobber.hs b/crucible-mir-comp/src/Mir/Compositional/Clobber.hs index 0f71c5cc09..f9bebc062d 100644 --- a/crucible-mir-comp/src/Mir/Compositional/Clobber.hs +++ b/crucible-mir-comp/src/Mir/Compositional/Clobber.hs @@ -8,7 +8,8 @@ module Mir.Compositional.Clobber where import Control.Lens ((^.), (^?), ix) -import Control.Monad.Except +import Control.Monad (forM_) +import Control.Monad.IO.Class (MonadIO(..)) import qualified Data.Map as Map import qualified Data.Parameterized.Context as Ctx import Data.Parameterized.TraversableFC diff --git a/cryptol-saw-core/src/Verifier/SAW/Cryptol/Monadify.hs b/cryptol-saw-core/src/Verifier/SAW/Cryptol/Monadify.hs index 39b32169d9..3246bfaa58 100644 --- a/cryptol-saw-core/src/Verifier/SAW/Cryptol/Monadify.hs +++ b/cryptol-saw-core/src/Verifier/SAW/Cryptol/Monadify.hs @@ -77,9 +77,12 @@ import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map import Data.IntMap.Strict (IntMap) import qualified Data.IntMap.Strict as IntMap -import Control.Monad.Reader -import Control.Monad.State -import Control.Monad.Cont +import Control.Monad ((>=>), foldM, forM_, zipWithM) +import Control.Monad.Cont (Cont, cont, runCont) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import Control.Monad.State (MonadState(..), StateT(..), evalStateT, modify) +import Control.Monad.Trans (MonadTrans(..)) import qualified Control.Monad.Fail as Fail -- import Control.Monad.IO.Class (MonadIO, liftIO) import qualified Data.Text as T @@ -849,7 +852,7 @@ emptyMemoTable = IntMap.empty data MonadifyROState = MonadifyROState { -- | The monadification environment monStEnv :: MonadifyEnv, - -- | The monadification context + -- | The monadification context monStCtx :: MonadifyCtx, -- | The current @SpecM@ function stack monStStack :: OpenTerm, diff --git a/deps/cryptol b/deps/cryptol index 3973b15236..bd35c9b3b9 160000 --- a/deps/cryptol +++ b/deps/cryptol @@ -1 +1 @@ -Subproject commit 3973b15236ace5c11fdfabbf811d97daee7885ed +Subproject commit bd35c9b3b96f5d21d2608b5229c30eafee729dc5 diff --git a/deps/language-rust b/deps/language-rust index 9d509c450d..82acd312c0 160000 --- a/deps/language-rust +++ b/deps/language-rust @@ -1 +1 @@ -Subproject commit 9d509c450d009cc99f1180b3f2f30247dfb1cfce +Subproject commit 82acd312c0cd2b467ea8fa2a0feb316185b52c69 diff --git a/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs b/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs index a5941f520e..c1617ae2e9 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/CruUtil.hs @@ -32,7 +32,7 @@ import Numeric import Numeric.Natural import qualified Data.BitVector.Sized as BV import System.FilePath -import GHC.TypeNats +import GHC.TypeNats (KnownNat, natVal) import Data.Functor.Product import Control.Lens hiding ((:>), Index, Empty, ix, op) import qualified Control.Monad.Fail as Fail diff --git a/heapster-saw/src/Verifier/SAW/Heapster/GenMonad.hs b/heapster-saw/src/Verifier/SAW/Heapster/GenMonad.hs index 47e14c81ac..91bc25b060 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/GenMonad.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/GenMonad.hs @@ -18,7 +18,8 @@ module Verifier.SAW.Heapster.GenMonad ( ) where import Data.Binding.Hobbits ( nuMulti, nuMultiWithElim1, Mb, Name, RAssign ) -import Control.Monad.State ( ap, MonadState(get, put) ) +import Control.Monad ( ap ) +import Control.Monad.State ( MonadState(get, put) ) import Control.Monad.Trans.Class ( MonadTrans(lift) ) import Control.Monad.Trans.Reader import Data.Proxy diff --git a/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs b/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs index 33f65f3a83..42b5986b0e 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/IRTTranslation.hs @@ -34,9 +34,10 @@ module Verifier.SAW.Heapster.IRTTranslation ( import Numeric.Natural import Data.Functor.Const import GHC.TypeLits -import Control.Monad.Reader -import Control.Monad.State -import Control.Monad.Except +import Control.Monad (zipWithM) +import Control.Monad.Except (MonadError(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..), withReaderT) +import Control.Monad.State (MonadState(..), State, evalState) import qualified Data.Type.RList as RL import Data.Binding.Hobbits @@ -209,7 +210,7 @@ irtTMbCombine x = -- | Create an @args :++: ext@ binding irtNus :: (RAssign Name args -> RAssign Name ext -> b) -> IRTTyVarsTransM args ext (Mb (args :++: ext) b) -irtNus f = +irtNus f = do args <- irtTArgsCtx <$> ask ext <- irtTExtCtx <$> ask return $ mbCombine ext (nus (RL.map (\_->Proxy) args) (nus ext . f)) @@ -560,7 +561,7 @@ irtCtor c all_args = -- recursive permission/shape body given here, and an 'IRTVarIdxs' which is -- the second result of the same call to 'translateCompletePermIRTTyVars', -- translate the given recursive permission body to an IRT type description -translateCompleteIRTDesc :: IRTDescs a => SharedContext -> PermEnv -> +translateCompleteIRTDesc :: IRTDescs a => SharedContext -> PermEnv -> Ident -> CruCtx args -> Mb args a -> IRTVarIdxs -> IO TypedTerm translateCompleteIRTDesc sc env tyVarsIdent args p ixs = @@ -738,7 +739,7 @@ instance IRTDescs (RAssign ValuePerm ps) where -- of corresponding calls to 'translateCompleteIRTDesc' and -- 'translateCompletePermIRTTyVars' or 'translateCompleteShapeIRTTyVars', -- return a term which is @IRT@ applied to these identifiers -translateCompleteIRTDef :: SharedContext -> PermEnv -> +translateCompleteIRTDef :: SharedContext -> PermEnv -> Ident -> Ident -> CruCtx args -> IO TypedTerm translateCompleteIRTDef sc env tyVarsIdent descIdent args = @@ -751,7 +752,7 @@ translateCompleteIRTDef sc env tyVarsIdent descIdent args = -- 'translateCompleteIRTDesc', and 'translateCompletePermIRTTyVars' or -- 'translateCompleteShapeIRTTyVars', return a term which is @foldIRT@ applied -- to these identifiers -translateCompleteIRTFoldFun :: SharedContext -> PermEnv -> +translateCompleteIRTFoldFun :: SharedContext -> PermEnv -> Ident -> Ident -> Ident -> CruCtx args -> IO Term translateCompleteIRTFoldFun sc env tyVarsIdent descIdent _ args = @@ -764,7 +765,7 @@ translateCompleteIRTFoldFun sc env tyVarsIdent descIdent _ args = -- 'translateCompleteIRTDesc', and 'translateCompletePermIRTTyVars' or -- 'translateCompleteShapeIRTTyVars', return a term which is @unfoldIRT@ -- applied to these identifiers -translateCompleteIRTUnfoldFun :: SharedContext -> PermEnv -> +translateCompleteIRTUnfoldFun :: SharedContext -> PermEnv -> Ident -> Ident -> Ident -> CruCtx args -> IO Term translateCompleteIRTUnfoldFun sc env tyVarsIdent descIdent _ args = @@ -775,7 +776,7 @@ translateCompleteIRTUnfoldFun sc env tyVarsIdent descIdent _ args = -- | Get the terms for the arguments to @IRT@, @foldIRT@, and @unfoldIRT@ -- given the appropriate identifiers irtDefArgs :: Ident -> Ident -> TypeTransM args (OpenTerm, OpenTerm, OpenTerm) -irtDefArgs tyVarsIdent descIdent = +irtDefArgs tyVarsIdent descIdent = do args <- askExprCtxTerms let tyVars = applyOpenTermMulti (globalOpenTerm tyVarsIdent) args substs = ctorOpenTerm "Prelude.IRTs_Nil" [tyVars] @@ -783,18 +784,18 @@ irtDefArgs tyVarsIdent descIdent = return (tyVars, substs, desc) irtDefinition :: Ident -> Ident -> TypeTransM args OpenTerm -irtDefinition tyVarsIdent descIdent = +irtDefinition tyVarsIdent descIdent = do (tyVars, substs, desc) <- irtDefArgs tyVarsIdent descIdent return $ dataTypeOpenTerm "Prelude.IRT" [tyVars, substs, desc] irtFoldFun :: Ident -> Ident -> TypeTransM args OpenTerm -irtFoldFun tyVarsIdent descIdent = +irtFoldFun tyVarsIdent descIdent = do (tyVars, substs, desc) <- irtDefArgs tyVarsIdent descIdent return $ applyOpenTermMulti (globalOpenTerm "Prelude.foldIRT") [tyVars, substs, desc] irtUnfoldFun :: Ident -> Ident -> TypeTransM args OpenTerm -irtUnfoldFun tyVarsIdent descIdent = +irtUnfoldFun tyVarsIdent descIdent = do (tyVars, substs, desc) <- irtDefArgs tyVarsIdent descIdent return $ applyOpenTermMulti (globalOpenTerm "Prelude.unfoldIRT") [tyVars, substs, desc] diff --git a/heapster-saw/src/Verifier/SAW/Heapster/Implication.hs b/heapster-saw/src/Verifier/SAW/Heapster/Implication.hs index 7315c6aae1..620a3d77a0 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/Implication.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/Implication.hs @@ -7,7 +7,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -34,11 +33,13 @@ import Data.List import Data.Functor.Compose import Data.Reflection import qualified Data.BitVector.Sized as BV -import GHC.TypeLits +import GHC.TypeLits (KnownNat) import Control.Lens hiding ((:>), ix) -import Control.Applicative +import qualified Control.Applicative as App +import Control.Monad (forM_) import Control.Monad.Extra (concatMapM) -import Control.Monad.State.Strict hiding (ap) +import Control.Monad.State.Strict (MonadState(..), State, StateT, evalState, execStateT) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.Type.RList as RL import Data.Binding.Hobbits.MonadBind @@ -316,7 +317,7 @@ instance Applicative SomeEqProof where liftA2 f (SomeEqProofRefl a) some_eqp = fmap (f a) some_eqp liftA2 f some_eqp (SomeEqProofRefl b) = fmap (flip f b) some_eqp liftA2 f (SomeEqProofCons eqp1 step1) (SomeEqProofCons eqp2 step2) = - SomeEqProofCons (liftA2 f eqp1 eqp2) (eqProofStepLiftA2 f step1 step2) + SomeEqProofCons (App.liftA2 f eqp1 eqp2) (eqProofStepLiftA2 f step1 step2) -- | An 'EqProofStep' with an existentially quantified list of permissions data SomeEqProofStep a = forall ps. SomeEqProofStep (EqProofStep ps a) @@ -6085,7 +6086,7 @@ instance ProveEq (LLVMFramePerm w) where | mbLift mb_i == i = do eqp1 <- proveEq e mb_e eqp2 <- proveEq fperms mb_fperms - pure (liftA2 (\x y -> (x,i):y) eqp1 eqp2) + pure (App.liftA2 (\x y -> (x,i):y) eqp1 eqp2) proveEq perms mb = use implStatePPInfo >>>= \ppinfo -> implFailM $ EqualityProofError diff --git a/heapster-saw/src/Verifier/SAW/Heapster/LLVMGlobalConst.hs b/heapster-saw/src/Verifier/SAW/Heapster/LLVMGlobalConst.hs index 66f301fca4..ee0906ee1e 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/LLVMGlobalConst.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/LLVMGlobalConst.hs @@ -12,8 +12,10 @@ module Verifier.SAW.Heapster.LLVMGlobalConst ( import Data.Bits import Data.List -import Control.Monad.Reader -import GHC.TypeLits +import Control.Monad (MonadPlus(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import Control.Monad.Trans.Class (MonadTrans(..)) +import GHC.TypeLits (KnownNat) import qualified Text.PrettyPrint.HughesPJ as PPHPJ import qualified Data.BitVector.Sized as BV diff --git a/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs b/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs index 3925b582a0..fc38f5c7ac 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs @@ -46,17 +46,18 @@ import Data.Functor.Compose import qualified Data.BitVector.Sized as BV import Data.BitVector.Sized (BV) import Numeric.Natural -import GHC.TypeLits +import GHC.TypeLits (KnownNat, natVal) import Data.Kind import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map import Data.Set (Set) import qualified Data.Set as Set import Control.Applicative hiding (empty) +import Control.Monad (MonadPlus(..)) import Control.Monad.Extra (concatMapM) -import Control.Monad.Identity hiding (ap) -import Control.Monad.State hiding (ap) -import Control.Monad.Reader hiding (ap) +import Control.Monad.Identity () +import Control.Monad.Reader (MonadReader(..), Reader, ReaderT(..), runReader) +import Control.Monad.State (MonadState(..), State, evalState, modify) import Control.Lens hiding ((:>), Index, Empty, ix, op) import Data.Binding.Hobbits hiding (sym) diff --git a/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs b/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs index 8dad282f13..81fc1f2096 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/RustTypes.hs @@ -36,9 +36,11 @@ import GHC.TypeLits import qualified Data.BitVector.Sized as BV import Data.Functor.Constant import Data.Functor.Product -import Control.Applicative -import Control.Monad.Reader -import Control.Monad.Except +import qualified Control.Applicative as App +import Control.Monad (MonadPlus(..)) +import Control.Monad.Except (Except, MonadError(..), runExcept) +import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks) +import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Maybe import qualified Control.Monad.Fail as Fail @@ -1313,7 +1315,7 @@ data SomeMbWithPerms a where instance Functor SomeMbWithPerms where fmap f (SomeMbWithPerms ctx ps mb_a) = SomeMbWithPerms ctx ps (fmap f mb_a) -instance Applicative SomeMbWithPerms where +instance App.Applicative SomeMbWithPerms where pure a = SomeMbWithPerms CruCtxNil (emptyMb MNil) $ emptyMb a liftA2 f (SomeMbWithPerms ctx1 mb_ps1 mb_a1) (SomeMbWithPerms ctx2 mb_ps2 mb_a2) = SomeMbWithPerms (appendCruCtx ctx1 ctx2) @@ -1551,7 +1553,7 @@ parseFunPermFromRust :: (Fail.MonadFail m, 1 <= w, KnownNat w) => parseFunPermFromRust env w args ret str = do get3SomeFunPerm <- parseSome3FunPermFromRust env w str un3SomeFunPerm args ret get3SomeFunPerm - + -- | Just like `parseFunPermFromRust`, but returns a `Some3FunPerm` parseSome3FunPermFromRust :: (Fail.MonadFail m, 1 <= w, KnownNat w) => @@ -1585,10 +1587,7 @@ parseSome3FunPermFromRust _ _ str = parseNamedShapeFromRustDecl :: (Fail.MonadFail m, 1 <= w, KnownNat w) => PermEnv -> prx w -> String -> m (SomePartialNamedShape w) -parseNamedShapeFromRustDecl env w str - | Right item <- parse @(Item Span) (inputStreamFromString str) = - runLiftRustConvM (mkRustConvInfo env) $ rsConvert w item - | Left err <- parse @(Item Span) (inputStreamFromString str) = - fail ("Error parsing top-level item: " ++ show err) -parseNamedShapeFromRustDecl _ _ str = - fail ("Malformed Rust type: " ++ str) +parseNamedShapeFromRustDecl env w str = + case parse @(Item Span) (inputStreamFromString str) of + Right item -> runLiftRustConvM (mkRustConvInfo env) $ rsConvert w item + Left err -> fail ("Error parsing top-level item: " ++ show err) diff --git a/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs b/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs index 7369ccecc6..c8ca5a60d8 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/SAWTranslation.hs @@ -36,16 +36,17 @@ import Data.Maybe import Numeric.Natural import Data.List hiding (inits) import Data.Text (pack) -import GHC.TypeLits +import GHC.TypeLits (KnownNat, natVal) import Data.BitVector.Sized (BV) import qualified Data.BitVector.Sized as BV import Data.Functor.Compose -import Control.Applicative +import qualified Control.Applicative as App import Control.Lens hiding ((:>), Index, ix, op) -import Control.Monad.Reader hiding (ap) -import Control.Monad.Writer hiding (ap) -import Control.Monad.State hiding (ap) +import Control.Monad (MonadPlus(..), zipWithM) +import Control.Monad.Reader (MonadReader(..), Reader, runReader, withReader) +import Control.Monad.State (MonadState(..), StateT, evalStateT) import Control.Monad.Trans.Maybe +import Control.Monad.Writer (MonadWriter(..), Writer, runWriter) import qualified Control.Monad.Fail as Fail import What4.ProgramLoc @@ -212,7 +213,7 @@ strictTupleTypeTrans ttrans = -- | Build a type translation for a list of translations listTypeTrans :: [TypeTrans tr] -> TypeTrans [tr] listTypeTrans [] = pure [] -listTypeTrans (trans:transs) = liftA2 (:) trans $ listTypeTrans transs +listTypeTrans (trans:transs) = App.liftA2 (:) trans $ listTypeTrans transs -- | The result of translating a 'PermExpr' at 'CrucibleType' @a@. This is a @@ -879,7 +880,7 @@ instance TransInfo info => translate mb_ctx = case mbMatch mb_ctx of [nuMP| CruCtxNil |] -> return $ mkTypeTrans0 MNil [nuMP| CruCtxCons ctx tp |] -> - liftA2 (:>:) <$> translate ctx <*> translate tp + App.liftA2 (:>:) <$> translate ctx <*> translate tp -- | Translate all types in a Crucible context and lambda-abstract over them lambdaExprCtx :: TransInfo info => CruCtx ctx -> TransM info ctx OpenTerm -> @@ -1985,7 +1986,7 @@ instance TransInfo info => translate mb_ps = case mbMatch mb_ps of [nuMP| ValPerms_Nil |] -> return $ mkTypeTrans0 MNil [nuMP| ValPerms_Cons ps p |] -> - liftA2 (:>:) <$> translate ps <*> translate p + App.liftA2 (:>:) <$> translate ps <*> translate p -- Translate a DistPerms by translating its corresponding ValuePerms instance TransInfo info => diff --git a/heapster-saw/src/Verifier/SAW/Heapster/TypedCrucible.hs b/heapster-saw/src/Verifier/SAW/Heapster/TypedCrucible.hs index 38c95b1e24..708b73eda5 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/TypedCrucible.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/TypedCrucible.hs @@ -38,15 +38,18 @@ import Data.Type.Equality import Data.Kind import Data.Reflection import qualified Data.BitVector.Sized as BV -import GHC.TypeLits +import GHC.TypeLits (KnownNat) import What4.ProgramLoc import What4.FunctionName import What4.Interface (StringLiteral(..)) import Control.Lens hiding ((:>), Index, ix) -import Control.Monad.State.Strict hiding (ap) -import Control.Monad.Reader hiding (ap) +import Control.Monad ((>=>), foldM, forM, forM_) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import Control.Monad.State.Strict (MonadState(..), State, evalState, execState, + gets, modify, runState) +import Control.Monad.Trans.Class (MonadTrans(..)) import Prettyprinter as PP diff --git a/heapster-saw/src/Verifier/SAW/Heapster/Widening.hs b/heapster-saw/src/Verifier/SAW/Heapster/Widening.hs index 0e61cea46c..278e25f211 100644 --- a/heapster-saw/src/Verifier/SAW/Heapster/Widening.hs +++ b/heapster-saw/src/Verifier/SAW/Heapster/Widening.hs @@ -7,7 +7,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -31,11 +30,13 @@ module Verifier.SAW.Heapster.Widening where import Data.Maybe import Data.List +import Data.Functor (void) import Data.Functor.Constant import Data.Functor.Product -import Control.Monad.State --- import Control.Monad.Cont -import GHC.TypeLits +import Control.Monad (ap, zipWithM) +import Control.Monad.State (MonadState(..), StateT(..), modify) +import Control.Monad.Trans.Class (MonadTrans(..)) +import GHC.TypeLits (KnownNat) import Control.Lens hiding ((:>), Index, Empty, ix, op) import Control.Monad.Extra (concatMapM) diff --git a/saw-core-coq/src/Verifier/SAW/Translation/Coq.hs b/saw-core-coq/src/Verifier/SAW/Translation/Coq.hs index fd781cd27c..a58cd89266 100644 --- a/saw-core-coq/src/Verifier/SAW/Translation/Coq.hs +++ b/saw-core-coq/src/Verifier/SAW/Translation/Coq.hs @@ -21,7 +21,6 @@ module Verifier.SAW.Translation.Coq ( translateSAWModule, ) where -import Control.Monad.Reader hiding (fail) import Data.String.Interpolate (i) import Prelude hiding (fail) import Prettyprinter diff --git a/saw-core-coq/src/Verifier/SAW/Translation/Coq/Monad.hs b/saw-core-coq/src/Verifier/SAW/Translation/Coq/Monad.hs index b2fc710c41..8ad5d8e5e6 100644 --- a/saw-core-coq/src/Verifier/SAW/Translation/Coq/Monad.hs +++ b/saw-core-coq/src/Verifier/SAW/Translation/Coq/Monad.hs @@ -22,8 +22,8 @@ module Verifier.SAW.Translation.Coq.Monad ) where import qualified Control.Monad.Except as Except -import Control.Monad.Reader hiding (fail) -import Control.Monad.State hiding (fail, state) +import Control.Monad.Reader (MonadReader, ReaderT(..)) +import Control.Monad.State (MonadState, StateT(..)) import Prelude hiding (fail) import Verifier.SAW.SharedTerm diff --git a/saw-core-coq/src/Verifier/SAW/Translation/Coq/SAWModule.hs b/saw-core-coq/src/Verifier/SAW/Translation/Coq/SAWModule.hs index eca5a410f3..fcbddbf104 100644 --- a/saw-core-coq/src/Verifier/SAW/Translation/Coq/SAWModule.hs +++ b/saw-core-coq/src/Verifier/SAW/Translation/Coq/SAWModule.hs @@ -25,7 +25,7 @@ Portability : portable module Verifier.SAW.Translation.Coq.SAWModule where import qualified Control.Monad.Except as Except -import Control.Monad.Reader hiding (fail) +import Control.Monad.Reader (asks) import Prelude hiding (fail) import Prettyprinter (Doc, pretty) diff --git a/saw-core-coq/src/Verifier/SAW/Translation/Coq/Term.hs b/saw-core-coq/src/Verifier/SAW/Translation/Coq/Term.hs index 1afaf91218..90d393ddd6 100644 --- a/saw-core-coq/src/Verifier/SAW/Translation/Coq/Term.hs +++ b/saw-core-coq/src/Verifier/SAW/Translation/Coq/Term.hs @@ -30,10 +30,11 @@ Portability : portable module Verifier.SAW.Translation.Coq.Term where import Control.Lens (makeLenses, over, set, to, view) +import Control.Monad (forM) import qualified Control.Monad.Except as Except import qualified Control.Monad.Fail as Fail -import Control.Monad.Reader hiding (fail, fix) -import Control.Monad.State hiding (fail, fix, state) +import Control.Monad.Reader (MonadReader(ask, local), asks) +import Control.Monad.State (MonadState(get), modify) import Data.Char (isDigit) import Data.IntMap.Strict (IntMap) import qualified Data.IntMap.Strict as IntMap diff --git a/saw-core-sbv/saw-core-sbv.cabal b/saw-core-sbv/saw-core-sbv.cabal index 386a740dde..45c38e431c 100644 --- a/saw-core-sbv/saw-core-sbv.cabal +++ b/saw-core-sbv/saw-core-sbv.cabal @@ -20,7 +20,7 @@ library lens, mtl, saw-core, - sbv >= 9.1 && < 9.3, + sbv >= 9.1 && < 10.3, text, transformers, vector diff --git a/saw-core-sbv/src/Verifier/SAW/Simulator/SBV.hs b/saw-core-sbv/src/Verifier/SAW/Simulator/SBV.hs index 979bb21af2..d1e12804e9 100644 --- a/saw-core-sbv/src/Verifier/SAW/Simulator/SBV.hs +++ b/saw-core-sbv/src/Verifier/SAW/Simulator/SBV.hs @@ -37,6 +37,9 @@ module Verifier.SAW.Simulator.SBV ) where import Data.SBV.Dynamic +#if MIN_VERSION_sbv(10,0,0) +import Data.SBV.Internals (UICodeKind(..)) +#endif import Verifier.SAW.Simulator.SBV.SWord @@ -56,8 +59,9 @@ import Data.Traversable as T #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif +import Control.Monad ((<=<), (>=>), foldM, unless, void) import Control.Monad.IO.Class -import Control.Monad.State as ST +import Control.Monad.State as ST (MonadState(..), StateT(..), evalStateT, modify) import Numeric.Natural (Natural) import qualified Verifier.SAW.Prim as Prim @@ -667,7 +671,14 @@ parseUninterpreted cws nm ty = _ -> fail $ "could not create uninterpreted type for " ++ show ty mkUninterpreted :: Kind -> [SVal] -> String -> SVal -mkUninterpreted k args nm = svUninterpreted k nm' Nothing args +mkUninterpreted k args nm = + svUninterpreted k nm' +#if MIN_VERSION_sbv(10,0,0) + UINone +#else + Nothing +#endif + args where nm' = "|" ++ nm ++ "|" -- enclose name to allow primes and other non-alphanum chars sbvSATQuery :: SharedContext -> Map Ident SPrim -> SATQuery -> IO ([Labeler], [ExtCns Term], Symbolic SBool) diff --git a/saw-core-what4/src/Verifier/SAW/Simulator/What4.hs b/saw-core-what4/src/Verifier/SAW/Simulator/What4.hs index 9205af1b23..5a718180ae 100644 --- a/saw-core-what4/src/Verifier/SAW/Simulator/What4.hs +++ b/saw-core-what4/src/Verifier/SAW/Simulator/What4.hs @@ -79,7 +79,9 @@ import Data.Traversable as T import Control.Applicative #endif import qualified Control.Exception as X -import Control.Monad.State as ST +import Control.Monad ((<=<), foldM, unless) +import Control.Monad.State as ST (MonadState(..), StateT(..), evalStateT, modify) +import Control.Monad.Trans.Class (MonadTrans(..)) import Numeric.Natural (Natural) -- saw-core diff --git a/saw-core-what4/src/Verifier/SAW/Simulator/What4/PosNat.hs b/saw-core-what4/src/Verifier/SAW/Simulator/What4/PosNat.hs index a8f842f5dd..0dee4c1a91 100644 --- a/saw-core-what4/src/Verifier/SAW/Simulator/What4/PosNat.hs +++ b/saw-core-what4/src/Verifier/SAW/Simulator/What4/PosNat.hs @@ -6,7 +6,7 @@ -- Maintainer : sweirich@galois.com -- Stability : experimental -- Portability : non-portable (language extensions) --- +-- -- A runtime representation of positive nats ------------------------------------------------------------------------ @@ -36,13 +36,13 @@ -- to allow implicitly provided nats {-# LANGUAGE AllowAmbiguousTypes #-} --- to allow 'WithKnownNat' +-- to allow 'WithKnownNat' {-# OPTIONS_GHC -Wno-warnings-deprecations #-} module Verifier.SAW.Simulator.What4.PosNat where -- TODO: find the right place for this code -import GHC.TypeNats +import GHC.TypeNats (KnownNat, Nat) import Data.Parameterized.NatRepr import Data.Parameterized.Some(Some(..)) @@ -58,7 +58,7 @@ data PosNat (n :: Nat) where -- | Check whether an integer is a positive nat somePosNat :: Integral a => a -> Maybe (Some PosNat) -somePosNat n +somePosNat n | Just (Some nr) <- someNat n, Just LeqProof <- testLeq (knownNat @1) nr = withKnownNat nr $ Just (Some (PosNat nr)) @@ -79,7 +79,7 @@ addPosNat = let w1 = knownNat @w1 w2 = knownNat @w2 sm = addNat w1 w2 in - case leqAddPos w1 w2 of + case leqAddPos w1 w2 of LeqProof -> withKnownNat sm $ PosNat sm -- I would hope that the 'leqAddPos' call can be compiled away... diff --git a/saw-core/src/Verifier/SAW/Change.hs b/saw-core/src/Verifier/SAW/Change.hs index d2af8fb388..c47daf0b9a 100644 --- a/saw-core/src/Verifier/SAW/Change.hs +++ b/saw-core/src/Verifier/SAW/Change.hs @@ -24,7 +24,7 @@ module Verifier.SAW.Change , flatten ) where -import Control.Applicative (liftA2) +import qualified Control.Applicative as App (liftA2) import Control.Monad (liftM) import Control.Monad.Trans @@ -110,7 +110,7 @@ instance Functor m => Functor (ChangeT m) where instance Applicative m => Applicative (ChangeT m) where pure x = ChangeT (pure (Original x)) - ChangeT m1 <*> ChangeT m2 = ChangeT (liftA2 (<*>) m1 m2) + ChangeT m1 <*> ChangeT m2 = ChangeT (App.liftA2 (<*>) m1 m2) instance Monad m => Monad (ChangeT m) where return = pure diff --git a/saw-core/src/Verifier/SAW/ExternalFormat.hs b/saw-core/src/Verifier/SAW/ExternalFormat.hs index 5c0482b25d..e7668f0bfb 100644 --- a/saw-core/src/Verifier/SAW/ExternalFormat.hs +++ b/saw-core/src/Verifier/SAW/ExternalFormat.hs @@ -17,7 +17,9 @@ module Verifier.SAW.ExternalFormat ( scWriteExternal, scReadExternal ) where -import Control.Monad.State.Strict as State +import Control.Monad (forM) +import qualified Control.Monad.State.Strict as State +import Control.Monad.Trans.Class (MonadTrans(..)) #if !MIN_VERSION_base(4,8,0) import Data.Traversable #endif @@ -221,7 +223,7 @@ scReadExternal sc input = tf <- parse tokens t <- lift $ scTermF sc tf (ts, nms, vs) <- State.get - put (Map.insert i t ts, nms, vs) + State.put (Map.insert i t ts, nms, vs) go [] = pure () -- empty lines are ignored readM :: forall a. Read a => String -> ReadM a diff --git a/saw-core/src/Verifier/SAW/FiniteValue.hs b/saw-core/src/Verifier/SAW/FiniteValue.hs index 3f7db224a0..73474c498f 100644 --- a/saw-core/src/Verifier/SAW/FiniteValue.hs +++ b/saw-core/src/Verifier/SAW/FiniteValue.hs @@ -17,7 +17,7 @@ import Data.Traversable #endif import GHC.Generics (Generic) -import Control.Monad (mzero) +import Control.Monad (replicateM, mzero) import Control.Monad.Trans (lift) import Control.Monad.Trans.Maybe import qualified Control.Monad.State as S @@ -355,7 +355,7 @@ readFiniteValue' en ft = case bs of [] -> S.lift Nothing b : bs' -> S.put bs' >> return (FVBit b) - FTVec n t -> (fvVec t . fixup) <$> S.replicateM (fromIntegral n) (readFiniteValue' en t) + FTVec n t -> (fvVec t . fixup) <$> replicateM (fromIntegral n) (readFiniteValue' en t) where fixup = case (t, en) of (FTBit, LittleEndian) -> reverse _ -> id diff --git a/saw-core/src/Verifier/SAW/ParserUtils.hs b/saw-core/src/Verifier/SAW/ParserUtils.hs index 20e015119b..54f997e5d6 100644 --- a/saw-core/src/Verifier/SAW/ParserUtils.hs +++ b/saw-core/src/Verifier/SAW/ParserUtils.hs @@ -27,7 +27,9 @@ module Verifier.SAW.ParserUtils #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif -import Control.Monad.State +import Control.Monad (forM_) +import Control.Monad.State (StateT, execStateT, modify) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.ByteString.Lazy as BL #if !MIN_VERSION_template_haskell(2,8,0) import qualified Data.ByteString.Lazy.UTF8 as UTF8 diff --git a/saw-core/src/Verifier/SAW/Rewriter.hs b/saw-core/src/Verifier/SAW/Rewriter.hs index dc1119875d..aa51f2638d 100644 --- a/saw-core/src/Verifier/SAW/Rewriter.hs +++ b/saw-core/src/Verifier/SAW/Rewriter.hs @@ -62,8 +62,8 @@ module Verifier.SAW.Rewriter import Control.Applicative ((<$>), pure, (<*>)) import Data.Foldable (Foldable) #endif -import Control.Monad.Identity -import Control.Monad.State +import Control.Monad (MonadPlus(..), (>=>), guard, join, unless) +import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Maybe import Data.IORef import qualified Data.Foldable as Foldable diff --git a/saw-core/src/Verifier/SAW/SCTypeCheck.hs b/saw-core/src/Verifier/SAW/SCTypeCheck.hs index 20700dac03..5129ea06fd 100644 --- a/saw-core/src/Verifier/SAW/SCTypeCheck.hs +++ b/saw-core/src/Verifier/SAW/SCTypeCheck.hs @@ -47,9 +47,11 @@ module Verifier.SAW.SCTypeCheck ) where import Control.Applicative -import Control.Monad.Except -import Control.Monad.State.Strict -import Control.Monad.Reader +import Control.Monad (foldM, forM, forM_, mapM, unless, void) +import Control.Monad.Except (MonadError(..), ExceptT, runExceptT) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), Reader, ReaderT(..), runReader) +import Control.Monad.State.Strict (MonadState(..), StateT, evalStateT, modify) import Data.Map (Map) import qualified Data.Map as Map diff --git a/saw-core/src/Verifier/SAW/SharedTerm.hs b/saw-core/src/Verifier/SAW/SharedTerm.hs index 7a3fb99580..b9da0f1c5f 100644 --- a/saw-core/src/Verifier/SAW/SharedTerm.hs +++ b/saw-core/src/Verifier/SAW/SharedTerm.hs @@ -283,8 +283,11 @@ import Control.Applicative import Control.Concurrent.MVar import Control.Exception import Control.Lens -import Control.Monad.State.Strict as State -import Control.Monad.Reader +import Control.Monad (foldM, forM, join, unless, when) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import qualified Control.Monad.State.Strict as State +import Control.Monad.Trans.Class (MonadTrans(..)) import Data.Bits import Data.List (inits, find) import Data.Maybe @@ -306,7 +309,7 @@ import qualified Data.Set as Set import qualified Data.Text as Text import qualified Data.Vector as V import Numeric.Natural (Natural) -import Prelude hiding (mapM, maximum) +import Prelude hiding (maximum) import Text.URI import Verifier.SAW.Cache diff --git a/saw-core/src/Verifier/SAW/Simulator/MonadLazy.hs b/saw-core/src/Verifier/SAW/Simulator/MonadLazy.hs index 575a382e91..3205f110b8 100644 --- a/saw-core/src/Verifier/SAW/Simulator/MonadLazy.hs +++ b/saw-core/src/Verifier/SAW/Simulator/MonadLazy.hs @@ -8,7 +8,8 @@ Portability : non-portable (language extensions) -} module Verifier.SAW.Simulator.MonadLazy where -import Control.Monad.Identity +import Control.Monad (liftM) +import Control.Monad.Identity (Identity) import Control.Monad.IO.Class import Data.IORef diff --git a/saw-core/src/Verifier/SAW/Simulator/RME.hs b/saw-core/src/Verifier/SAW/Simulator/RME.hs index 77ba4e2d88..d03b5b4948 100644 --- a/saw-core/src/Verifier/SAW/Simulator/RME.hs +++ b/saw-core/src/Verifier/SAW/Simulator/RME.hs @@ -24,8 +24,9 @@ module Verifier.SAW.Simulator.RME , withBitBlastedSATQuery ) where -import Control.Monad.Identity -import Control.Monad.State +import Control.Monad (unless) +import Control.Monad.Identity (Identity(..)) +import Control.Monad.State (MonadState(..), State, evalState) import Data.Bits import Data.IntTrie (IntTrie) import qualified Data.IntTrie as IntTrie @@ -315,14 +316,14 @@ vSignedShiftR xs i toIntModOp :: RPrim toIntModOp = - Prims.natFun $ \n -> + Prims.natFun $ \n -> Prims.intFun $ \x -> Prims.PrimValue (VIntMod n (x `mod` toInteger n)) fromIntModOp :: RPrim fromIntModOp = Prims.constFun $ - Prims.intModFun $ \x -> + Prims.intModFun $ \x -> Prims.PrimValue (VInt x) intModEqOp :: RPrim diff --git a/saw-core/src/Verifier/SAW/Term/Pretty.hs b/saw-core/src/Verifier/SAW/Term/Pretty.hs index a06d930828..72c1b97798 100644 --- a/saw-core/src/Verifier/SAW/Term/Pretty.hs +++ b/saw-core/src/Verifier/SAW/Term/Pretty.hs @@ -46,8 +46,9 @@ module Verifier.SAW.Term.Pretty import Data.Char (intToDigit, isDigit) import Data.Maybe (isJust) -import Control.Monad.Reader -import Control.Monad.State.Strict as State +import Control.Monad (forM) +import Control.Monad.Reader (MonadReader(..), Reader, asks, runReader) +import Control.Monad.State.Strict (MonadState(..), State, execState) #if !MIN_VERSION_base(4,8,0) import Data.Foldable (Foldable) #endif @@ -311,9 +312,9 @@ withMemoVar global_p idx f = -- "pretend" we memoized by calling `updateMemoVar`, so that non-inlined -- memoization identifiers are kept constant between two -- otherwise-identical terms with differing inline strategies. - (skip:skips) + (skip:skips) | skip == memoVar -> local (updateMemoVar . addIdxSkip . setMemoSkips skips) (f Nothing) - _ + _ | idx `Set.member` idxSkips -> f Nothing | otherwise -> local (updateMemoVar . bind memoVar) (f (Just memoVar)) where @@ -693,7 +694,7 @@ ppLets global_p ((idx, (t_rhs,_)):idxs) bindings baseDoc = if isBound then ppLets global_p idxs bindings baseDoc else do doc_rhs <- ppTerm' PrecTerm t_rhs withMemoVar global_p idx $ \memoVarM -> - let bindings' = case memoVarM of + let bindings' = case memoVarM of Just memoVar -> (memoVar, doc_rhs):bindings Nothing -> bindings in ppLets global_p idxs bindings' baseDoc diff --git a/saw-core/src/Verifier/SAW/Typechecker.hs b/saw-core/src/Verifier/SAW/Typechecker.hs index 1ad0b42757..b04a190773 100644 --- a/saw-core/src/Verifier/SAW/Typechecker.hs +++ b/saw-core/src/Verifier/SAW/Typechecker.hs @@ -33,7 +33,8 @@ module Verifier.SAW.Typechecker #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif -import Control.Monad.State +import Control.Monad (forM, forM_, void) +import Control.Monad.IO.Class (MonadIO(..)) import Data.List (findIndex) import Data.Text (Text) import qualified Data.Vector as V diff --git a/saw-remote-api/Dockerfile b/saw-remote-api/Dockerfile index 75f5d3ecb8..348a75aacd 100644 --- a/saw-remote-api/Dockerfile +++ b/saw-remote-api/Dockerfile @@ -14,16 +14,16 @@ USER saw WORKDIR /home/saw ENV LANG=C.UTF-8 \ LC_ALL=C.UTF-8 -COPY cabal.GHC-9.2.7.config cabal.project.freeze +COPY cabal.GHC-9.2.8.config cabal.project.freeze ENV PATH=/home/saw/ghcup-download/bin:/home/saw/.ghcup/bin:$PATH RUN mkdir -p /home/saw/ghcup-download/bin && \ - curl -L https://downloads.haskell.org/~ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 -o /home/saw/ghcup-download/bin/ghcup && \ + curl -L https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 -o /home/saw/ghcup-download/bin/ghcup && \ chmod +x /home/saw/ghcup-download/bin/ghcup RUN mkdir -p /home/saw/.ghcup && \ ghcup --version && \ ghcup install cabal 3.8.1.0 && \ - ghcup install ghc 9.2.7 && \ - ghcup set ghc 9.2.7 + ghcup install ghc 9.2.8 && \ + ghcup set ghc 9.2.8 RUN cabal v2-update && cabal v2-build -j exe:saw-remote-api RUN mkdir -p /home/saw/rootfs/usr/local/bin RUN cp $(cabal v2-exec which saw-remote-api) /home/saw/rootfs/usr/local/bin/saw-remote-api diff --git a/saw-remote-api/saw-remote-api.cabal b/saw-remote-api/saw-remote-api.cabal index 6be87a64b5..d477bfa175 100644 --- a/saw-remote-api/saw-remote-api.cabal +++ b/saw-remote-api/saw-remote-api.cabal @@ -34,8 +34,8 @@ common errors -Werror=overlapping-patterns common deps - build-depends: base >=4.11.1.0 && <4.18, - aeson >= 1.4.2 && < 2.2, + build-depends: base >=4.11.1.0 && <4.19, + aeson >= 1.4.2 && < 2.3, aig, argo, base64-bytestring, diff --git a/saw-script.cabal b/saw-script.cabal index 4d596c0018..2b52c55716 100644 --- a/saw-script.cabal +++ b/saw-script.cabal @@ -23,7 +23,7 @@ library default-language: Haskell2010 build-depends: base >= 4.9 - , aeson >= 2.0 && < 2.2 + , aeson >= 2.0 && < 2.3 , aig , array , binary @@ -84,7 +84,7 @@ library , saw-core-coq , saw-core-sbv , saw-core-what4 - , sbv >= 9.1 && < 9.3 + , sbv >= 9.1 && < 10.3 , serialise , split , temporary diff --git a/saw/Dockerfile b/saw/Dockerfile index 339bca8471..301d783c00 100644 --- a/saw/Dockerfile +++ b/saw/Dockerfile @@ -14,16 +14,16 @@ USER saw WORKDIR /home/saw ENV LANG=C.UTF-8 \ LC_ALL=C.UTF-8 -COPY cabal.GHC-9.2.7.config cabal.project.freeze +COPY cabal.GHC-9.2.8.config cabal.project.freeze ENV PATH=/home/saw/ghcup-download/bin:/home/saw/.ghcup/bin:$PATH RUN mkdir -p /home/saw/ghcup-download/bin && \ - curl -L https://downloads.haskell.org/~ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 -o /home/saw/ghcup-download/bin/ghcup && \ + curl -L https://downloads.haskell.org/~ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 -o /home/saw/ghcup-download/bin/ghcup && \ chmod +x /home/saw/ghcup-download/bin/ghcup RUN mkdir -p /home/saw/.ghcup && \ ghcup --version && \ ghcup install cabal 3.8.1.0 && \ - ghcup install ghc 9.2.7 && \ - ghcup set ghc 9.2.7 + ghcup install ghc 9.2.8 && \ + ghcup set ghc 9.2.8 RUN cabal v2-update RUN cabal v2-build RUN mkdir -p /home/saw/rootfs/usr/local/bin diff --git a/src/SAWScript/AutoMatch/Interaction.hs b/src/SAWScript/AutoMatch/Interaction.hs index f0049625c0..1a03ea38c5 100644 --- a/src/SAWScript/AutoMatch/Interaction.hs +++ b/src/SAWScript/AutoMatch/Interaction.hs @@ -14,13 +14,15 @@ import SAWScript.AutoMatch.Util import Data.Map (Map) import Data.Set (Set) -import Control.Monad +import Control.Monad (forM_, when) +import Control.Monad.Fix (fix) import Control.Monad.Free -import Control.Monad.Trans -import Control.Monad.Writer -import Control.Monad.State -import Control.Monad.Reader +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (ReaderT(..)) +import Control.Monad.State (MonadState(..), StateT(..), evalStateT, modify) +import Control.Monad.Trans (MonadTrans(..)) import Control.Monad.Trans.Maybe +import Control.Monad.Writer (MonadWriter(..), WriterT(..)) #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif diff --git a/src/SAWScript/AutoMatch/LLVM.hs b/src/SAWScript/AutoMatch/LLVM.hs index 7758db852a..3272056b96 100644 --- a/src/SAWScript/AutoMatch/LLVM.hs +++ b/src/SAWScript/AutoMatch/LLVM.hs @@ -4,7 +4,7 @@ module SAWScript.AutoMatch.LLVM where -import Control.Monad.State hiding (mapM) +import Control.Monad (when) import Control.Monad.Free import qualified Data.AIG as AIG diff --git a/src/SAWScript/Bisimulation.hs b/src/SAWScript/Bisimulation.hs index 726ea59409..97e2d48ba6 100644 --- a/src/SAWScript/Bisimulation.hs +++ b/src/SAWScript/Bisimulation.hs @@ -74,7 +74,10 @@ module SAWScript.Bisimulation ( BisimTheorem, proveBisimulation ) where -import Control.Monad.State.Strict as State +import Control.Monad (foldM, forM_, unless) +import Control.Monad.IO.Class (MonadIO(..)) +import qualified Control.Monad.State.Strict as State +import Control.Monad.Trans.Class (MonadTrans(..)) import Data.Foldable (foldl') import qualified Data.IntSet as IntSet import qualified Data.Map.Strict as Map diff --git a/src/SAWScript/Builtins.hs b/src/SAWScript/Builtins.hs index 279c3acddd..fe52a42fb1 100644 --- a/src/SAWScript/Builtins.hs +++ b/src/SAWScript/Builtins.hs @@ -27,8 +27,11 @@ import Data.Functor import Control.Applicative import Data.Monoid #endif +import Control.Monad (foldM, forM, unless, when) import Control.Monad.Except (MonadError(..)) -import Control.Monad.State +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.State (MonadState(..), gets, modify) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Control.Exception as Ex import Data.Char (toLower) import qualified Data.ByteString as StrictBS @@ -471,7 +474,7 @@ print_goal_inline noInline = execTactic $ tacticId $ \goal -> do opts <- getTopLevelPPOpts - let opts' = opts { ppNoInlineMemo = sort noInline } + let opts' = opts { ppNoInlineMemo = sort noInline } sc <- getSharedContext nenv <- io (scGetNamingEnv sc) let output = prettySequent opts' nenv (goalSequent goal) diff --git a/src/SAWScript/Crucible/JVM/Builtins.hs b/src/SAWScript/Crucible/JVM/Builtins.hs index a3920359f6..77c5d99dd6 100644 --- a/src/SAWScript/Crucible/JVM/Builtins.hs +++ b/src/SAWScript/Crucible/JVM/Builtins.hs @@ -49,9 +49,12 @@ module SAWScript.Crucible.JVM.Builtins import Control.Lens import qualified Control.Monad.Catch as X -import Control.Monad.State +import Control.Monad (foldM, forM, forM_, guard, unless, when) +import Control.Monad.IO.Class (MonadIO(..)) import Control.Monad.Reader (runReaderT) +import Control.Monad.State (MonadState(..), StateT(..), execStateT, gets) import qualified Control.Monad.State.Strict as Strict +import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Except (runExceptT) import qualified Data.BitVector.Sized as BV import Data.Foldable (for_) diff --git a/src/SAWScript/Crucible/LLVM/Builtins.hs b/src/SAWScript/Crucible/LLVM/Builtins.hs index f70e250bc4..e7fa7c7892 100644 --- a/src/SAWScript/Crucible/LLVM/Builtins.hs +++ b/src/SAWScript/Crucible/LLVM/Builtins.hs @@ -93,14 +93,18 @@ import Prelude hiding (fail) import qualified Control.Exception as X import Control.Lens +import Control.Monad (foldM, forM, forM_, replicateM, unless, when) import Control.Monad.Extra (findM, whenM) -import Control.Monad.State hiding (fail) -import Control.Monad.Reader (runReaderT) import Control.Monad.Fail (MonadFail(..)) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (runReaderT) +import Control.Monad.State (MonadState(..), StateT(..), execStateT, gets) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.Bimap as Bimap import Data.Char (isDigit) import Data.Foldable (for_, toList, fold) import Data.Function +import Data.Functor (void) import Data.IORef import Data.List import Data.List.Extra (nubOrd) diff --git a/src/SAWScript/Crucible/LLVM/Override.hs b/src/SAWScript/Crucible/LLVM/Override.hs index 27b11aed0c..695cb50b44 100644 --- a/src/SAWScript/Crucible/LLVM/Override.hs +++ b/src/SAWScript/Crucible/LLVM/Override.hs @@ -65,8 +65,9 @@ import Control.Lens.Lens import Control.Lens.Setter import Control.Lens.TH import Control.Exception as X -import Control.Monad -import Control.Monad.Except +import Control.Monad (filterM, foldM, forM, forM_, when, zipWithM) +import Control.Monad.Except (runExcept) +import Control.Monad.IO.Class (MonadIO(..)) import Data.Either (partitionEithers) import Data.Foldable (for_, traverse_, toList) import Data.List diff --git a/src/SAWScript/Crucible/LLVM/X86.hs b/src/SAWScript/Crucible/LLVM/X86.hs index 8cadba3856..0e8f7715b2 100644 --- a/src/SAWScript/Crucible/LLVM/X86.hs +++ b/src/SAWScript/Crucible/LLVM/X86.hs @@ -36,12 +36,15 @@ import Control.Lens.TH (makeLenses) import System.IO (stdout) import Control.Exception (throw) import Control.Lens (Getter, to, view, use, (&), (^.), (.~), (%~), (.=)) -import Control.Monad.State -import Control.Monad.Reader (runReaderT) +import Control.Monad (forM, forM_, unless, when, zipWithM) import Control.Monad.Catch (MonadThrow) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (runReaderT) +import Control.Monad.State (MonadState, StateT(..), execStateT, gets) import qualified Data.BitVector.Sized as BV import Data.Foldable (foldlM) +import Data.Functor (void) import Data.IORef import qualified Data.List.NonEmpty as NE import qualified Data.Vector as Vector diff --git a/src/SAWScript/HeapsterBuiltins.hs b/src/SAWScript/HeapsterBuiltins.hs index 252b70c0dc..491b4c75e4 100644 --- a/src/SAWScript/HeapsterBuiltins.hs +++ b/src/SAWScript/HeapsterBuiltins.hs @@ -75,7 +75,7 @@ import qualified Control.Monad.Fail as Fail import System.Directory import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy.UTF8 as BL -import GHC.TypeLits +import GHC.TypeLits (KnownNat) import Data.Text (Text) import Data.Binding.Hobbits hiding (sym) @@ -645,7 +645,7 @@ heapster_define_reachability_perm _bic _opts henv _ -> Fail.fail "Incorrect type for last argument of reachability perm" let args_ctx = appendParsedCtx pre_args_ctx last_args_ctx let args = parsedCtxCtx args_ctx - trans_tp <- liftIO $ + trans_tp <- liftIO $ translateCompleteTypeInCtx sc env args $ nus (cruCtxProxies args) $ const $ ValuePermRepr tp trans_tp_ident <- parseAndInsDef henv nm trans_tp trans_tp_str @@ -1054,7 +1054,7 @@ heapster_translate_rust_type _bic _opts henv perms_string = Some3FunPerm fun_perm <- parseSome3FunPermFromRust env w64 perms_string liftIO $ putStrLn $ permPrettyString emptyPPInfo fun_perm - + -- | Create a new SAW core primitive named @nm@ with type @tp@ in the module -- associated with the supplied Heapster environment, and return its identifier insPrimitive :: HeapsterEnv -> String -> Term -> TopLevel Ident diff --git a/src/SAWScript/Proof.hs b/src/SAWScript/Proof.hs index eb98ba95b2..f75cf0b0db 100644 --- a/src/SAWScript/Proof.hs +++ b/src/SAWScript/Proof.hs @@ -129,8 +129,11 @@ module SAWScript.Proof , predicateToSATQuery ) where +import Control.Monad (foldM, forM_, unless) import qualified Control.Monad.Fail as F -import Control.Monad.Except +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Except (ExceptT, MonadError(..), runExceptT) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.Foldable as Fold import Data.List import Data.Maybe (fromMaybe) diff --git a/src/SAWScript/Prover/Exporter.hs b/src/SAWScript/Prover/Exporter.hs index 39d56f3455..216836c01a 100644 --- a/src/SAWScript/Prover/Exporter.hs +++ b/src/SAWScript/Prover/Exporter.hs @@ -1,3 +1,4 @@ +{-# Language CPP #-} {-# Language GADTs #-} {-# Language ImplicitParams #-} {-# Language NamedFieldPuns #-} @@ -299,8 +300,12 @@ write_smtlib2_w4 f (TypedTerm schema t) = do writeSMTLib2 :: FilePath -> SATQuery -> TopLevel () writeSMTLib2 f satq = getSharedContext >>= \sc -> io $ do (_, _, l) <- SBV.sbvSATQuery sc mempty satq +#if MIN_VERSION_sbv(10,0,0) + txt <- SBV.generateSMTBenchmarkSat l +#else let isSat = True -- l is encoded as an existential formula txt <- SBV.generateSMTBenchmark isSat l +#endif writeFile f txt -- | Write a SAT query an SMT-Lib version 2 file. diff --git a/src/SAWScript/Prover/MRSolver/Monad.hs b/src/SAWScript/Prover/MRSolver/Monad.hs index f7b4663444..72cc2a0aab 100644 --- a/src/SAWScript/Prover/MRSolver/Monad.hs +++ b/src/SAWScript/Prover/MRSolver/Monad.hs @@ -27,10 +27,13 @@ module SAWScript.Prover.MRSolver.Monad where import Data.List (find, findIndex, foldl') import qualified Data.Text as T import System.IO (hPutStrLn, stderr) -import Control.Monad.Reader -import Control.Monad.State -import Control.Monad.Except +import Control.Monad (MonadPlus(..), foldM) import Control.Monad.Catch (MonadThrow, MonadCatch) +import Control.Monad.Except (MonadError(..), ExceptT, runExceptT) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import Control.Monad.State (MonadState(..), StateT(..), modify) +import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Maybe import GHC.Generics @@ -451,7 +454,7 @@ runMRM sc env timeout askSMT rs m = -- | Run an 'MRM' computation and return a result or an error, discarding the -- final state -evalMRM :: +evalMRM :: SharedContext -> MREnv {- ^ The Mr Solver environment -} -> Maybe Integer {- ^ Timeout in milliseconds for each SMT call -} -> @@ -465,7 +468,7 @@ evalMRM sc env timeout askSMT rs = -- | Run an 'MRM' computation and return a final state or an error, discarding -- the result -execMRM :: +execMRM :: SharedContext -> MREnv {- ^ The Mr Solver environment -} -> Maybe Integer {- ^ Timeout in milliseconds for each SMT call -} -> diff --git a/src/SAWScript/Prover/MRSolver/SMT.hs b/src/SAWScript/Prover/MRSolver/SMT.hs index 5856d252d3..e02ddbfd69 100644 --- a/src/SAWScript/Prover/MRSolver/SMT.hs +++ b/src/SAWScript/Prover/MRSolver/SMT.hs @@ -24,8 +24,10 @@ module SAWScript.Prover.MRSolver.SMT where import qualified Data.Vector as V import Numeric.Natural (Natural) -import Control.Monad.Except +import Control.Monad (MonadPlus(..), (<=<), join, when, zipWithM) import Control.Monad.Catch (throwM, catch) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Maybe import Data.Foldable (foldrM, foldlM) import GHC.Generics @@ -319,7 +321,7 @@ smtNormPrims sc = Map.fromList Just n -> scNat sc n >>= \n' -> scBvNat sc n' ix' tm <- scApplyBeta sc f ix'' tm' <- smtNorm sc tm - return $ VExtra $ VExtraTerm a tm') + return $ VExtra $ VExtraTerm a tm') ), -- Don't normalize applications of @SpecM@ and its arguments ("Prelude.SpecM", @@ -613,7 +615,7 @@ mrConvOfTerm _ = NoConv -- as large as possible, using information from the given terms (i.e. using -- 'mrConvOfTerm') where possible. In pictorial form, this function finds -- a @tp@, @c1@, and @c2@ which satisfy the following diagram: --- +-- -- > tp1 tp2 -- > ^ ^ -- > c1 \ / c2 @@ -655,10 +657,10 @@ findInjConvs tp1 t1 (asNatType -> Just ()) -- add a 'BVToNat' conversion we have a BV on the other side, using the -- bit-width from the other side findInjConvs (asNatType -> Just ()) _ (asBitvectorType -> Just n) _ = - do bv_tp <- liftSC1 scBitvector n + do bv_tp <- liftSC1 scBitvector n return $ Just (bv_tp, BVToNat n, NoConv) findInjConvs (asBitvectorType -> Just n) _ (asNatType -> Just ()) _ = - do bv_tp <- liftSC1 scBitvector n + do bv_tp <- liftSC1 scBitvector n return $ Just (bv_tp, NoConv, BVToNat n) -- add a 'BVVecToVec' conversion if the (optional) given term has a -- 'BVVecToVec' conversion @@ -882,7 +884,7 @@ mrProveRelH' _ _ _ _ (asNum -> Just (Left t1)) (asNum -> Just (Left t2)) = mrProveEqSimple (liftSC2 scEqualNat) t1 t2 mrProveRelH' _ _ (asNatType -> Just _) (asNatType -> Just _) t1 t2 = mrProveEqSimple (liftSC2 scEqualNat) t1 t2 -mrProveRelH' _ _ tp1@(asVectorType -> Just (n1, asBoolType -> Just ())) +mrProveRelH' _ _ tp1@(asVectorType -> Just (n1, asBoolType -> Just ())) tp2@(asVectorType -> Just (n2, asBoolType -> Just ())) t1 t2 = do ns_are_eq <- mrConvertible n1 n2 if ns_are_eq then return () else diff --git a/src/SAWScript/Prover/MRSolver/Solver.hs b/src/SAWScript/Prover/MRSolver/Solver.hs index 20f2d2254f..ec4a6795b2 100644 --- a/src/SAWScript/Prover/MRSolver/Solver.hs +++ b/src/SAWScript/Prover/MRSolver/Solver.hs @@ -35,7 +35,7 @@ defined in the SAW core prelude: > (if b then m1 else m2) >>= k = if b then m1 >>= k else m2 >>= k > (either f1 f2 e) >>= k = either (\x -> f1 x >>= k) (\x -> f2 x >>= k) e > (multiFixS funs body) >>= k = multiFixS funs (\F1 ... Fn -> body F1 ... Fn >>= k) -> +> > liftStackS (retS x) = retS x > liftStackS (errorS str) = errorS str > liftStackS (m >>= k) = liftStackS m >>= \x -> liftStackS (k x) @@ -74,65 +74,65 @@ The goal of the solver at any point is of the form @C |- m1 |= m2@, meaning that we are trying to prove @m1@ refines @m2@ in context @C@. This proceeds by cases: > C |- retS e1 |= retS e2: prove C |- e1 = e2 -> +> > C |- errorS str1 |= errorS str2: vacuously true -> +> > C |- if b then m1' else m1'' |= m2: prove C,b=true |- m1' |= m2 and > C,b=false |- m1'' |= m2, skipping either case where C,b=X is unsatisfiable; -> +> > C |- m1 |= if b then m2' else m2'': similar to the above -> +> > C |- either T U (SpecM V) f1 f2 e |= m: prove C,x:T,e=inl x |- f1 x |= m and > C,y:U,e=inl y |- f2 y |= m, again skippping any case with unsatisfiable context; -> +> > C |- m |= either T U (SpecM V) f1 f2 e: similar to previous -> +> > C |- m |= forallS f: make a new universal variable x and recurse -> +> > C |- existsS f |= m: make a new universal variable x and recurse (existential > elimination uses universal variables and vice-versa) -> +> > C |- m |= existsS f: make a new existential variable x and recurse -> +> > C |- forallS f |= m: make a new existential variable x and recurse -> +> > C |- m |= orS m1 m2: try to prove C |- m |= m1, and if that fails, backtrack and > prove C |- m |= m2 -> +> > C |- orS m1 m2 |= m: prove both C |- m1 |= m and C |- m2 |= m -> +> > C |- multiFixS (\F1 ... Fn -> (f1, ..., fn)) (\F1 ... Fn -> body) |= m: create > multiFixS-bound variables F1 through Fn in the context bound to their unfoldings > f1 through fn, respectively, and recurse on body |= m -> +> > C |- m |= multiFixS (\F1 ... Fn -> (f1, ..., fn)) (\F1 ... Fn -> body): similar to > previous case -> +> > C |- F e1 ... en >>= k |= F e1' ... en' >>= k': prove C |- ei = ei' for each i > and then prove k x |= k' x for new universal variable x -> +> > C |- F e1 ... en >>= k |= F' e1' ... em' >>= k': -> +> > * If we have an assumption that forall x1 ... xj, F a1 ... an |= F' a1' .. am', > prove ei = ai and ei' = ai' and then that C |- k x |= k' x for fresh uvar x -> +> > * If we have an assumption that forall x1, ..., xn, F e1'' ... en'' |= m' for > some ei'' and m', match the ei'' against the ei by instantiating the xj with > fresh evars, and if this succeeds then recursively prove C |- m' >>= k |= RHS -> +> > (We don't do this one right now) > * If we have an assumption that forall x1', ..., xn', m |= F e1'' ... en'' for > some ei'' and m', match the ei'' against the ei by instantiating the xj with > fresh evars, and if this succeeds then recursively prove C |- LHS |= m' >>= k' -> +> > * If either side is a definition whose unfolding does not contain multiFixS, or > any related operations, unfold it -> +> > * If F and F' have the same return type, add an assumption forall uvars in scope > that F e1 ... en |= F' e1' ... em' and unfold both sides, recursively proving > that F_body e1 ... en |= F_body' e1' ... em'. Then also prove k x |= k' x for > fresh uvar x. -> +> > * Otherwise we don't know to "split" one of the sides into a bind whose > components relate to the two components on the other side, so just fail @@ -150,8 +150,11 @@ import Numeric.Natural (Natural) import Data.List (find, findIndices) import Data.Foldable (foldlM) import Data.Bits (shiftL) -import Control.Monad.Reader -import Control.Monad.Except +import Control.Monad ((>=>), forM, zipWithM, zipWithM_) +import Control.Monad.Except (MonadError(..)) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), ReaderT(..)) +import Control.Monad.Trans.Class (MonadTrans(..)) import qualified Data.Map as Map import qualified Data.Text as Text import Data.Set (Set) diff --git a/src/SAWScript/Prover/MRSolver/Term.hs b/src/SAWScript/Prover/MRSolver/Term.hs index 3b6d2399b3..ccbb3d04af 100644 --- a/src/SAWScript/Prover/MRSolver/Term.hs +++ b/src/SAWScript/Prover/MRSolver/Term.hs @@ -34,7 +34,9 @@ module SAWScript.Prover.MRSolver.Term where import Data.String import Data.IORef -import Control.Monad.Reader +import Control.Monad (foldM) +import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Reader (MonadReader(..), Reader, runReader) import qualified Data.IntMap as IntMap import Numeric.Natural (Natural) import GHC.Generics diff --git a/src/SAWScript/SBVParser.hs b/src/SAWScript/SBVParser.hs index 3aef0a3277..609bbd8e2a 100644 --- a/src/SAWScript/SBVParser.hs +++ b/src/SAWScript/SBVParser.hs @@ -20,7 +20,9 @@ module SAWScript.SBVParser import Prelude hiding (mapM) -import Control.Monad.State hiding (mapM) +import Control.Monad (foldM, liftM, replicateM, unless) +import Control.Monad.State (MonadState(..), StateT(..)) +import Control.Monad.Trans.Class (MonadTrans(..)) import Data.List (intercalate) import Data.Map (Map) import qualified Data.Map as Map diff --git a/src/SAWScript/X86Spec.hs b/src/SAWScript/X86Spec.hs index e066fd3569..7128e688b8 100644 --- a/src/SAWScript/X86Spec.hs +++ b/src/SAWScript/X86Spec.hs @@ -70,7 +70,8 @@ import Data.Proxy(Proxy(..)) import qualified Data.Map as Map import Data.IORef(newIORef,atomicModifyIORef') import Data.String -import Control.Monad.Reader +import Control.Monad (MonadPlus(..), foldM, join, zipWithM) +import Control.Monad.IO.Class (MonadIO(..)) import Data.Parameterized.NatRepr import Data.Parameterized.Classes