diff --git a/.github/Dockerfile-crux-llvm b/.github/Dockerfile-crux-llvm index fb952984b..b04eef29e 100644 --- a/.github/Dockerfile-crux-llvm +++ b/.github/Dockerfile-crux-llvm @@ -5,7 +5,7 @@ RUN apt-get update && \ # ghcup requirements build-essential curl libffi-dev libffi8 libgmp-dev libgmp10 libncurses-dev libncurses6 libtinfo6 \ # Crux dependencies \ - zlib1g-dev \ + pkg-config zlib1g-dev \ # LLVM toolchain clang-12 llvm-12-tools \ # Miscellaneous @@ -29,9 +29,9 @@ RUN mkdir -p /root/ghcup-download/bin && \ chmod +x /root/ghcup-download/bin/ghcup RUN mkdir -p /root/.ghcup && \ ghcup --version && \ - ghcup install cabal 3.10.1.0 && \ - ghcup install ghc 9.2.8 && \ - ghcup set ghc 9.2.8 + ghcup install cabal 3.10.3.0 && \ + ghcup install ghc 9.4.8 && \ + ghcup set ghc 9.4.8 RUN cabal v2-update ARG DIR=/crux-llvm @@ -44,7 +44,7 @@ ADD crux ${DIR}/build/crux ADD crux-llvm ${DIR}/build/crux-llvm ADD dependencies ${DIR}/build/dependencies ADD .github/cabal.project.crux-llvm ${DIR}/build/cabal.project -ADD cabal.GHC-9.2.8.config ${DIR}/build/cabal.project.freeze +ADD cabal.GHC-9.4.8.config ${DIR}/build/cabal.project.freeze # Workaround until we have an LLVM 12 build available RUN cp $DIR/build/crux-llvm/c-src/libcxx-7.1.0.bc $DIR/build/crux-llvm/c-src/libcxx-12.0.1.bc diff --git a/.github/Dockerfile-crux-mir b/.github/Dockerfile-crux-mir index 41609cd67..ea90acfb7 100644 --- a/.github/Dockerfile-crux-mir +++ b/.github/Dockerfile-crux-mir @@ -20,7 +20,7 @@ RUN apt-get update && \ # ghcup requirements build-essential curl libffi-dev libffi8 libgmp-dev libgmp10 libncurses-dev libncurses6 libtinfo6 \ # Crux dependencies \ - zlib1g-dev \ + pkg-config zlib1g-dev \ # Miscellaneous unzip wget @@ -45,9 +45,9 @@ RUN mkdir -p /root/ghcup-download/bin && \ chmod +x /root/ghcup-download/bin/ghcup RUN mkdir -p /root/.ghcup && \ ghcup --version && \ - ghcup install cabal 3.10.1.0 && \ - ghcup install ghc 9.2.8 && \ - ghcup set ghc 9.2.8 + ghcup install cabal 3.10.3.0 && \ + ghcup install ghc 9.4.8 && \ + ghcup set ghc 9.4.8 RUN cabal v2-update ARG DIR=/crux-mir @@ -60,7 +60,7 @@ ADD crux ${DIR}/build/crux ADD crux-mir ${DIR}/build/crux-mir ADD dependencies ${DIR}/build/dependencies ADD .github/cabal.project.crux-mir ${DIR}/build/cabal.project -ADD cabal.GHC-9.2.8.config ${DIR}/build/cabal.project.freeze +ADD cabal.GHC-9.4.8.config ${DIR}/build/cabal.project.freeze WORKDIR ${DIR}/build RUN cabal v2-build --only-dependencies crux-mir diff --git a/.github/workflows/crucible-go-build.yml b/.github/workflows/crucible-go-build.yml index a0ee4659e..a8018b19c 100644 --- a/.github/workflows/crucible-go-build.yml +++ b/.github/workflows/crucible-go-build.yml @@ -27,15 +27,15 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04] - cabal: ["3.10.1.0"] - ghc: ["9.2.8", "9.4.5", "9.6.2"] + cabal: ["3.10.3.0"] + ghc: ["9.4.8", "9.6.5", "9.8.2"] include: - os: macos-12 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 - os: windows-2019 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 name: crucible-go - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -87,9 +87,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.2.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.4.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.6.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; + 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crucible-jvm-build.yml b/.github/workflows/crucible-jvm-build.yml index a50436e99..7f16b34f0 100644 --- a/.github/workflows/crucible-jvm-build.yml +++ b/.github/workflows/crucible-jvm-build.yml @@ -27,15 +27,15 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04] - cabal: ["3.10.1.0"] - ghc: ["9.2.8", "9.4.5", "9.6.2"] + cabal: ["3.10.3.0"] + ghc: ["9.4.8", "9.6.5", "9.8.2"] include: - os: macos-12 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 - os: windows-2019 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 name: crucible-jvm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -87,9 +87,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.2.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.4.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.6.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; + 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crucible-wasm-build.yml b/.github/workflows/crucible-wasm-build.yml index 554dd9052..73ec4621c 100644 --- a/.github/workflows/crucible-wasm-build.yml +++ b/.github/workflows/crucible-wasm-build.yml @@ -27,15 +27,15 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04] - cabal: ["3.10.1.0"] - ghc: ["9.2.8", "9.4.5", "9.6.2"] + cabal: ["3.10.3.0"] + ghc: ["9.4.8", "9.6.5", "9.8.2"] include: - os: macos-12 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 - os: windows-2019 - cabal: 3.10.1.0 - ghc: 9.6.2 + cabal: 3.10.3.0 + ghc: 9.8.2 name: crucible-wasm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -87,9 +87,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.2.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.4.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.6.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; + 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crux-llvm-build.yml b/.github/workflows/crux-llvm-build.yml index 6a85a68d0..f949208a2 100644 --- a/.github/workflows/crux-llvm-build.yml +++ b/.github/workflows/crux-llvm-build.yml @@ -64,18 +64,18 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04] - cabal: ["3.10.1.0"] - ghc: ["9.2.8", "9.4.5", "9.6.2"] + cabal: ["3.10.3.0"] + ghc: ["9.4.8", "9.6.5", "9.8.2"] include: - os: ubuntu-20.04 - cabal: 3.10.1.0 - ghc: 9.2.8 + cabal: 3.10.3.0 + ghc: 9.4.8 - os: macos-14 - cabal: 3.10.1.0 - ghc: 9.2.8 + cabal: 3.10.3.0 + ghc: 9.4.8 - os: windows-2019 - cabal: 3.10.1.0 - ghc: 9.2.8 + cabal: 3.10.3.0 + ghc: 9.4.8 name: crux-llvm - GHC v${{ matrix.ghc }} - ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -127,9 +127,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.2.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.4.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.6.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; + 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/.github/workflows/crux-mir-build.yml b/.github/workflows/crux-mir-build.yml index 5543c4d94..8bf7a68c3 100644 --- a/.github/workflows/crux-mir-build.yml +++ b/.github/workflows/crux-mir-build.yml @@ -64,15 +64,15 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04] - cabal: ["3.10.1.0"] - ghc: ["9.2.8", "9.4.5", "9.6.2"] + cabal: ["3.10.3.0"] + ghc: ["9.4.8", "9.6.5", "9.8.2"] include: - os: ubuntu-20.04 - cabal: 3.10.1.0 - ghc: 9.2.8 + cabal: 3.10.3.0 + ghc: 9.4.8 - os: macos-14 - cabal: 3.10.1.0 - ghc: 9.2.8 + cabal: 3.10.3.0 + ghc: 9.4.8 # We want Windows soon, but it doesn't need to be now name: crux-mir - GHC v${{ matrix.ghc }} - ${{ matrix.os }} @@ -133,9 +133,9 @@ jobs: run: | GHC=haskell.compiler.ghc$(echo ${{ matrix.ghc }} | sed -e s,\\.,,g) case ${{ matrix.ghc }} in - 9.2.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.4.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; - 9.6.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-23.05 ;; + 9.4.8) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.6.5) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; + 9.8.2) GHC_NIXPKGS=github:nixos/nixpkgs/nixos-24.05 ;; *) GHC_NIXPKGS=github:nixos/nixpkgs/21.11 ;; esac echo NS="nix shell ${GHC_NIXPKGS}#cabal-install ${GHC_NIXPKGS}#${GHC} nixpkgs#gmp nixpkgs#zlib nixpkgs#zlib.dev" >> $GITHUB_ENV diff --git a/cabal.GHC-9.4.5.config b/cabal.GHC-9.4.8.config similarity index 76% rename from cabal.GHC-9.4.5.config rename to cabal.GHC-9.4.8.config index cbf2fbe08..686cc5a14 100644 --- a/cabal.GHC-9.4.5.config +++ b/cabal.GHC-9.4.8.config @@ -5,36 +5,35 @@ constraints: any.BoundedChan ==1.0.3.0, any.Glob ==0.10.2, any.HUnit ==1.6.2.0, any.IntervalMap ==0.6.2.1, - any.OneTuple ==0.4.1.1, - any.QuickCheck ==2.14.3, + any.OneTuple ==0.4.2, + any.QuickCheck ==2.15.0.1, QuickCheck -old-random +templatehaskell, any.SHA ==1.6.4.4, SHA -exe, any.StateVar ==1.2.2, any.adjunctions ==4.4.2, - any.aeson ==2.1.2.1, - aeson -cffi +ordered-keymap, - any.alex ==3.2.7.4 || ==3.5.0.0, - any.ansi-terminal ==1.0.2, + any.aeson ==2.2.3.0, + aeson +ordered-keymap, + any.alex ==3.2.7.4, + any.ansi-terminal ==1.1.1, ansi-terminal -example, - any.ansi-terminal-types ==0.11.5, + any.ansi-terminal-types ==1.1, any.array ==0.5.4.0, - any.assoc ==1.1, - assoc +tagged, + any.assoc ==1.1.1, + assoc -tagged, any.async ==2.2.5, async -bench, - any.atomic-primops ==0.8.4, + any.atomic-primops ==0.8.8, atomic-primops -debug, any.attoparsec ==0.14.4, attoparsec -developer, any.barbies ==2.1.1.0, - any.base ==4.17.1.0, - any.base-compat ==0.13.1, - any.base-compat-batteries ==0.13.1, - any.base-orphans ==0.9.1, + any.base ==4.17.2.1, + any.base-compat ==0.14.0, + any.base-orphans ==0.9.2, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, - any.bifunctors ==5.6.1, + any.bifunctors ==5.6.2, bifunctors +tagged, any.bimap ==0.5.0, any.binary ==0.8.9.1, @@ -42,26 +41,27 @@ constraints: any.BoundedChan ==1.0.3.0, bitvec +simd, any.bitwise ==1.0.0.1, any.blaze-builder ==0.4.2.3, - any.boomerang ==1.4.9.1, - any.boring ==0.2.1, + any.boomerang ==1.4.9.3, + any.boring ==0.2.2, boring +tagged, any.bv-sized ==1.0.5, - any.bytestring ==0.11.4.0, + any.bytestring ==0.11.5.3, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, + any.character-ps ==0.1, any.clock ==0.8.4, clock -llvm, any.colour ==2.3.6, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.20, + any.concurrent-output ==1.10.21, any.conduit ==1.3.5, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, - any.constraints ==0.14, + any.constraints ==0.14.2, any.containers ==0.6.7, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, @@ -69,11 +69,10 @@ constraints: any.BoundedChan ==1.0.3.0, any.cryptohash-sha1 ==0.11.101.0, any.cryptohash-sha256 ==0.11.102.1, cryptohash-sha256 -exe +use-cbits, - any.data-binary-ieee754 ==0.4.4, any.data-default-class ==0.1.2.0, - any.data-fix ==0.3.2, + any.data-fix ==0.3.4, any.deepseq ==1.4.8.0, - any.deriving-compat ==0.6.5, + any.deriving-compat ==0.6.6, deriving-compat +base-4-9 +new-functor-classes +template-haskell-2-11, any.directory ==1.3.7.1, any.distributive ==0.6.2.1, @@ -86,7 +85,7 @@ constraints: any.BoundedChan ==1.0.3.0, entropy -donotgetentropy, any.erf ==2.0.0.0, any.exceptions ==0.10.5, - any.extra ==1.7.14, + any.extra ==1.7.16, any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, @@ -102,46 +101,48 @@ constraints: any.BoundedChan ==1.0.3.0, generic-random -enable-inspect, any.generically ==0.1.1, any.ghc-bignum ==1.3, - any.ghc-boot-th ==9.4.5, - any.ghc-prim ==0.9.0, + any.ghc-boot-th ==9.4.8, + any.ghc-prim ==0.9.1, any.gitrev ==1.3.1, any.happy ==1.20.1.1, - any.hashable ==1.4.3.0, - hashable +integer-gmp -random-initial-seed, + any.hashable ==1.4.7.0, + hashable -arch-native +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.haskell-lexer ==1.1.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.13, + any.haskell-src-meta ==0.8.14, any.hedgehog ==1.4, any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - 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 ==2.11.9, + any.hspec-api ==2.11.9, + any.hspec-core ==2.11.9, + any.hspec-discover ==2.11.9, any.hspec-expectations ==0.8.4, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.3, - any.indexed-traversable-instances ==0.1.1.2, + any.indexed-traversable ==0.1.4, + any.indexed-traversable-instances ==0.1.2, + any.integer-conversion ==0.1.1, any.integer-logarithms ==1.0.3.1, integer-logarithms -check-bounds +integer-gmp, - any.invariant ==0.6.2, + any.invariant ==0.6.3, any.io-streams ==1.5.2.2, io-streams +network -nointeractivetests +zlib, any.itanium-abi ==0.1.2, any.json ==0.11, json +generic -mapdict +parsec +pretty +split-base, - any.kan-extensions ==5.2.5, - any.kvitable ==1.0.2.1, + any.kan-extensions ==5.2.6, + any.kvitable ==1.0.3.0, any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, - any.libBF ==0.6.7, + any.libBF ==0.6.8, libBF -system-libbf, - any.libyaml ==0.1.2, + any.libyaml ==0.1.4, libyaml -no-unicode -system-libyaml, + any.libyaml-clib ==0.2.5, any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, @@ -151,17 +152,19 @@ constraints: any.BoundedChan ==1.0.3.0, any.megaparsec ==9.6.1, megaparsec -dev, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.14, + any.microlens-th ==0.4.3.15, any.mmorph ==1.2.0, any.monad-control ==1.0.3.1, any.monadLib ==3.10.1, - any.mono-traversable ==1.0.15.3, + any.mono-traversable ==1.0.17.0, any.mtl ==2.2.2, - any.network ==3.1.4.0, + any.network ==3.2.1.0, network -devel, + any.network-uri ==2.6.4.2, any.optparse-applicative ==0.18.1.0, optparse-applicative +process, - any.ordered-containers ==0.2.3, + any.ordered-containers ==0.2.4, + any.os-string ==2.0.6, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, any.parameterized-utils ==2.1.8.0, @@ -174,14 +177,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.prettyprinter ==1.7.1, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, - any.primitive ==0.7.4.0, - any.process ==1.6.16.0, + any.primitive ==0.9.0.0, + any.process ==1.6.18.0, any.profunctors ==5.6.2, any.pvar ==1.0.0.0, any.quickcheck-io ==0.2.0, any.random ==1.2.1.2, any.raw-strings-qq ==1.1, - any.reflection ==2.1.7, + any.reflection ==2.1.8, reflection -slow +template-haskell, any.regex-base ==0.94.0.2, any.regex-compat ==0.95.2.1, @@ -194,11 +197,11 @@ constraints: any.BoundedChan ==1.0.3.0, any.safe ==0.3.21, any.safe-exceptions ==0.1.7.4, any.scheduler ==2.0.0.1, - any.scientific ==0.3.7.0, - scientific -bytestring-builder -integer-simple, - any.semialign ==1.3, + any.scientific ==0.3.8.0, + scientific -integer-simple, + any.semialign ==1.3.1, semialign +semigroupoids, - any.semigroupoids ==6.0.0.1, + any.semigroupoids ==6.0.1, semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers, any.semigroups ==0.20, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, @@ -210,8 +213,8 @@ constraints: any.BoundedChan ==1.0.3.0, any.stm ==2.5.1.0, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, - any.strict ==0.5, - any.string-interpolate ==0.3.3.0, + any.strict ==0.5.1, + any.string-interpolate ==0.3.4.0, string-interpolate -bytestring-builder -extended-benchmarks -text-builder, any.syb ==0.7.2.4, any.tagged ==0.8.8, @@ -224,8 +227,8 @@ constraints: any.BoundedChan ==1.0.3.0, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.2, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.1, - any.tasty-quickcheck ==0.10.3, + any.tasty-hunit ==0.10.2, + any.tasty-quickcheck ==0.11, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, any.template-haskell ==2.19.0.0, @@ -234,56 +237,53 @@ constraints: any.BoundedChan ==1.0.3.0, any.terminfo ==0.4.1.5, any.text ==2.0.2, any.text-conversions ==0.3.1.1, - any.text-short ==0.1.5, + any.text-iso8601 ==0.1.1, + any.text-short ==0.1.6, text-short -asserts, any.tf-random ==0.5, - any.th-abstraction ==0.5.0.0, - any.th-compat ==0.1.4, + any.th-abstraction ==0.6.0.0, + any.th-compat ==0.1.5, any.th-expand-syns ==0.4.11.0, any.th-lift ==0.8.4, any.th-lift-instances ==0.1.20, any.th-orphans ==0.13.14, any.th-reify-many ==0.1.10, - any.these ==1.2, + any.these ==1.2.1, any.time ==1.12.2, - any.time-compat ==1.9.6.1, - time-compat -old-locale, + any.time-compat ==1.9.7, any.transformers ==0.5.6.2, 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.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, any.unix ==2.7.3, - any.unix-compat ==0.7.1, - unix-compat -old-time, + any.unix-compat ==0.7.2, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.20, unordered-containers -debug, any.utf8-string ==1.0.2, - any.uuid-types ==1.0.5.1, + any.uuid-types ==1.0.6, any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, - any.vector-algorithms ==0.9.0.1, + any.vector-algorithms ==0.9.0.2, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, any.vector-stream ==0.1.0.1, - any.versions ==6.0.5, + any.versions ==6.0.7, any.void ==0.7.3, void -safe, any.websockets ==0.13.0.0, websockets -example, what4 -drealtestdisable -solvertests -stptestdisable, - any.witherable ==0.4.2, + any.witherable ==0.5, any.wl-pprint-annotated ==0.1.0.1, any.xml ==1.3.14, any.yaml ==0.11.11.2, yaml +no-examples +no-exe, any.zenc ==0.1.2, - any.zlib ==0.6.3.0, - zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, + any.zlib ==0.7.1.0, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2024-02-05T11:57:43Z +index-state: hackage.haskell.org 2024-08-01T22:40:06Z diff --git a/cabal.GHC-9.6.2.config b/cabal.GHC-9.6.5.config similarity index 74% rename from cabal.GHC-9.6.2.config rename to cabal.GHC-9.6.5.config index 96a402649..85a443db2 100644 --- a/cabal.GHC-9.6.2.config +++ b/cabal.GHC-9.6.5.config @@ -1,40 +1,39 @@ active-repositories: hackage.haskell.org:merge constraints: any.BoundedChan ==1.0.3.0, - any.Cabal ==3.10.1.0, - any.Cabal-syntax ==3.10.1.0, + any.Cabal ==3.10.3.0, + any.Cabal-syntax ==3.10.3.0, any.Glob ==0.10.2, any.HUnit ==1.6.2.0, any.IntervalMap ==0.6.2.1, - any.OneTuple ==0.4.1.1, - any.QuickCheck ==2.14.3, + any.OneTuple ==0.4.2, + any.QuickCheck ==2.15.0.1, QuickCheck -old-random +templatehaskell, any.SHA ==1.6.4.4, SHA -exe, any.StateVar ==1.2.2, any.adjunctions ==4.4.2, - any.aeson ==2.1.2.1, - aeson -cffi +ordered-keymap, - any.alex ==3.2.7.4 || ==3.5.0.0, - any.ansi-terminal ==1.0.2, + any.aeson ==2.2.3.0, + aeson +ordered-keymap, + any.alex ==3.2.7.4, + any.ansi-terminal ==1.1.1, ansi-terminal -example, - any.ansi-terminal-types ==0.11.5, - any.array ==0.5.5.0, - any.assoc ==1.1, - assoc +tagged, + any.ansi-terminal-types ==1.1, + any.array ==0.5.6.0, + any.assoc ==1.1.1, + assoc -tagged, any.async ==2.2.5, async -bench, - any.atomic-primops ==0.8.4, + any.atomic-primops ==0.8.8, atomic-primops -debug, any.attoparsec ==0.14.4, attoparsec -developer, any.barbies ==2.1.1.0, - any.base ==4.18.0.0, - any.base-compat ==0.13.1, - any.base-compat-batteries ==0.13.1, - any.base-orphans ==0.9.1, + any.base ==4.18.2.1, + any.base-compat ==0.14.0, + any.base-orphans ==0.9.2, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, - any.bifunctors ==5.6.1, + any.bifunctors ==5.6.2, bifunctors +tagged, any.bimap ==0.5.0, any.binary ==0.8.9.1, @@ -42,26 +41,27 @@ constraints: any.BoundedChan ==1.0.3.0, bitvec +simd, any.bitwise ==1.0.0.1, any.blaze-builder ==0.4.2.3, - any.boomerang ==1.4.9.1, - any.boring ==0.2.1, + any.boomerang ==1.4.9.3, + any.boring ==0.2.2, boring +tagged, any.bv-sized ==1.0.5, - any.bytestring ==0.11.4.0, + any.bytestring ==0.11.5.3, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, + any.character-ps ==0.1, any.clock ==0.8.4, clock -llvm, any.colour ==2.3.6, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.20, + any.concurrent-output ==1.10.21, any.conduit ==1.3.5, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, - any.constraints ==0.14, + any.constraints ==0.14.2, any.containers ==0.6.7, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, @@ -69,13 +69,12 @@ constraints: any.BoundedChan ==1.0.3.0, any.cryptohash-sha1 ==0.11.101.0, any.cryptohash-sha256 ==0.11.102.1, cryptohash-sha256 -exe +use-cbits, - any.data-binary-ieee754 ==0.4.4, any.data-default-class ==0.1.2.0, - any.data-fix ==0.3.2, + any.data-fix ==0.3.4, any.deepseq ==1.4.8.1, - any.deriving-compat ==0.6.5, + any.deriving-compat ==0.6.6, deriving-compat +base-4-9 +new-functor-classes +template-haskell-2-11, - any.directory ==1.3.8.1, + any.directory ==1.3.8.4, any.distributive ==0.6.2.1, distributive +semigroups +tagged, any.dlist ==1.0, @@ -86,12 +85,12 @@ constraints: any.BoundedChan ==1.0.3.0, entropy -donotgetentropy, any.erf ==2.0.0.0, any.exceptions ==0.10.7, - any.extra ==1.7.14, + any.extra ==1.7.16, any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filemanip ==0.3.6.3, - any.filepath ==1.4.100.1, + any.filepath ==1.4.300.1, any.fingertree ==0.1.5.0, any.free ==5.2, any.generic-lens ==2.2.2.0, @@ -100,46 +99,48 @@ constraints: any.BoundedChan ==1.0.3.0, generic-random -enable-inspect, any.generically ==0.1.1, any.ghc-bignum ==1.3, - any.ghc-boot-th ==9.6.2, + any.ghc-boot-th ==9.6.5, any.ghc-prim ==0.10.0, any.gitrev ==1.3.1, any.happy ==1.20.1.1, - any.hashable ==1.4.3.0, - hashable +integer-gmp -random-initial-seed, + any.hashable ==1.4.7.0, + hashable -arch-native +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.1, any.haskell-lexer ==1.1.1, any.haskell-src-exts ==1.23.1, - any.haskell-src-meta ==0.8.13, + any.haskell-src-meta ==0.8.14, any.hedgehog ==1.4, any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - 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 ==2.11.9, + any.hspec-api ==2.11.9, + any.hspec-core ==2.11.9, + any.hspec-discover ==2.11.9, any.hspec-expectations ==0.8.4, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.3, - any.indexed-traversable-instances ==0.1.1.2, + any.indexed-traversable ==0.1.4, + any.indexed-traversable-instances ==0.1.2, + any.integer-conversion ==0.1.1, any.integer-logarithms ==1.0.3.1, integer-logarithms -check-bounds +integer-gmp, - any.invariant ==0.6.2, + any.invariant ==0.6.3, any.io-streams ==1.5.2.2, io-streams +network -nointeractivetests +zlib, any.itanium-abi ==0.1.2, any.json ==0.11, json +generic -mapdict +parsec +pretty +split-base, - any.kan-extensions ==5.2.5, - any.kvitable ==1.0.2.1, + any.kan-extensions ==5.2.6, + any.kvitable ==1.0.3.0, any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, - any.libBF ==0.6.7, + any.libBF ==0.6.8, libBF -system-libbf, - any.libyaml ==0.1.2, + any.libyaml ==0.1.4, libyaml -no-unicode -system-libyaml, + any.libyaml-clib ==0.2.5, any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, @@ -149,17 +150,19 @@ constraints: any.BoundedChan ==1.0.3.0, any.megaparsec ==9.6.1, megaparsec -dev, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.14, + any.microlens-th ==0.4.3.15, any.mmorph ==1.2.0, any.monad-control ==1.0.3.1, any.monadLib ==3.10.1, - any.mono-traversable ==1.0.15.3, + any.mono-traversable ==1.0.17.0, any.mtl ==2.3.1, - any.network ==3.1.4.0, + any.network ==3.2.1.0, network -devel, + any.network-uri ==2.6.4.2, any.optparse-applicative ==0.18.1.0, optparse-applicative +process, - any.ordered-containers ==0.2.3, + any.ordered-containers ==0.2.4, + any.os-string ==2.0.6, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, any.parameterized-utils ==2.1.8.0, @@ -172,14 +175,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.prettyprinter ==1.7.1, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, - any.primitive ==0.7.4.0, - any.process ==1.6.17.0, + any.primitive ==0.9.0.0, + any.process ==1.6.19.0, any.profunctors ==5.6.2, any.pvar ==1.0.0.0, any.quickcheck-io ==0.2.0, any.random ==1.2.1.2, any.raw-strings-qq ==1.1, - any.reflection ==2.1.7, + any.reflection ==2.1.8, reflection -slow +template-haskell, any.regex-base ==0.94.0.2, any.regex-compat ==0.95.2.1, @@ -192,11 +195,11 @@ constraints: any.BoundedChan ==1.0.3.0, any.safe ==0.3.21, any.safe-exceptions ==0.1.7.4, any.scheduler ==2.0.0.1, - any.scientific ==0.3.7.0, - scientific -bytestring-builder -integer-simple, - any.semialign ==1.3, + any.scientific ==0.3.8.0, + scientific -integer-simple, + any.semialign ==1.3.1, semialign +semigroupoids, - any.semigroupoids ==6.0.0.1, + any.semigroupoids ==6.0.1, semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers, any.semigroups ==0.20, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, @@ -208,8 +211,8 @@ constraints: any.BoundedChan ==1.0.3.0, any.stm ==2.5.1.0, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, - any.strict ==0.5, - any.string-interpolate ==0.3.3.0, + any.strict ==0.5.1, + any.string-interpolate ==0.3.4.0, string-interpolate -bytestring-builder -extended-benchmarks -text-builder, any.syb ==0.7.2.4, any.tagged ==0.8.8, @@ -222,8 +225,8 @@ constraints: any.BoundedChan ==1.0.3.0, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.2, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.1, - any.tasty-quickcheck ==0.10.3, + any.tasty-hunit ==0.10.2, + any.tasty-quickcheck ==0.11, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, any.template-haskell ==2.20.0.0, @@ -232,56 +235,53 @@ constraints: any.BoundedChan ==1.0.3.0, any.terminfo ==0.4.1.6, any.text ==2.0.2, any.text-conversions ==0.3.1.1, - any.text-short ==0.1.5, + any.text-iso8601 ==0.1.1, + any.text-short ==0.1.6, text-short -asserts, any.tf-random ==0.5, - any.th-abstraction ==0.5.0.0, - any.th-compat ==0.1.4, + any.th-abstraction ==0.6.0.0, + any.th-compat ==0.1.5, any.th-expand-syns ==0.4.11.0, any.th-lift ==0.8.4, any.th-lift-instances ==0.1.20, any.th-orphans ==0.13.14, any.th-reify-many ==0.1.10, - any.these ==1.2, + any.these ==1.2.1, any.time ==1.12.2, - any.time-compat ==1.9.6.1, - time-compat -old-locale, + any.time-compat ==1.9.7, 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.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, - any.unix ==2.8.1.0, - any.unix-compat ==0.7.1, - unix-compat -old-time, + any.unix ==2.8.4.0, + any.unix-compat ==0.7.2, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.20, unordered-containers -debug, any.utf8-string ==1.0.2, - any.uuid-types ==1.0.5.1, + any.uuid-types ==1.0.6, any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, - any.vector-algorithms ==0.9.0.1, + any.vector-algorithms ==0.9.0.2, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, any.vector-stream ==0.1.0.1, - any.versions ==6.0.5, + any.versions ==6.0.7, any.void ==0.7.3, void -safe, any.websockets ==0.13.0.0, websockets -example, what4 -drealtestdisable -solvertests -stptestdisable, - any.witherable ==0.4.2, + any.witherable ==0.5, any.wl-pprint-annotated ==0.1.0.1, any.xml ==1.3.14, any.yaml ==0.11.11.2, yaml +no-examples +no-exe, any.zenc ==0.1.2, - any.zlib ==0.6.3.0, - zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, + any.zlib ==0.7.1.0, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2024-02-05T11:57:43Z +index-state: hackage.haskell.org 2024-08-01T22:40:06Z diff --git a/cabal.GHC-9.2.8.config b/cabal.GHC-9.8.2.config similarity index 69% rename from cabal.GHC-9.2.8.config rename to cabal.GHC-9.8.2.config index 0908e7658..6c25d3ed7 100644 --- a/cabal.GHC-9.2.8.config +++ b/cabal.GHC-9.8.2.config @@ -1,81 +1,80 @@ active-repositories: hackage.haskell.org:merge constraints: any.BoundedChan ==1.0.3.0, - any.Cabal ==3.6.3.0, + any.Cabal ==3.10.2.0, + any.Cabal-syntax ==3.10.2.0, any.Glob ==0.10.2, any.HUnit ==1.6.2.0, any.IntervalMap ==0.6.2.1, - any.OneTuple ==0.4.1.1, - any.QuickCheck ==2.14.3, + any.OneTuple ==0.4.2, + any.QuickCheck ==2.15.0.1, QuickCheck -old-random +templatehaskell, any.SHA ==1.6.4.4, SHA -exe, any.StateVar ==1.2.2, any.adjunctions ==4.4.2, - any.aeson ==2.1.2.1, - aeson -cffi +ordered-keymap, - any.alex ==3.2.7.4 || ==3.5.0.0, - any.ansi-terminal ==1.0.2, + any.aeson ==2.2.3.0, + aeson +ordered-keymap, + any.alex ==3.2.7.4, + any.ansi-terminal ==1.1.1, ansi-terminal -example, - any.ansi-terminal-types ==0.11.5, - any.array ==0.5.4.0, - any.assoc ==1.1, - assoc +tagged, + any.ansi-terminal-types ==1.1, + any.array ==0.5.6.0, + any.assoc ==1.1.1, + assoc -tagged, any.async ==2.2.5, async -bench, - any.atomic-primops ==0.8.4, + any.atomic-primops ==0.8.8, atomic-primops -debug, any.attoparsec ==0.14.4, attoparsec -developer, any.barbies ==2.1.1.0, - any.base ==4.16.4.0, - any.base-compat ==0.13.1, - any.base-compat-batteries ==0.13.1, - any.base-orphans ==0.9.1, + any.base ==4.19.1.0, + any.base-compat ==0.14.0, + any.base-orphans ==0.9.2, any.base16-bytestring ==1.0.2.0, any.base64-bytestring ==1.2.1.0, - any.bifunctors ==5.6.1, + any.bifunctors ==5.6.2, bifunctors +tagged, any.bimap ==0.5.0, - any.binary ==0.8.9.0, + any.binary ==0.8.9.1, any.bitvec ==1.1.5.0, bitvec +simd, any.bitwise ==1.0.0.1, any.blaze-builder ==0.4.2.3, - any.boomerang ==1.4.9.1, - any.boring ==0.2.1, + any.boomerang ==1.4.9.3, + any.boring ==0.2.2, boring +tagged, any.bv-sized ==1.0.5, - any.bytestring ==0.11.4.0, + any.bytestring ==0.12.1.0, any.call-stack ==0.4.0, any.case-insensitive ==1.2.1.0, any.cereal ==0.5.8.3, cereal -bytestring-builder, + any.character-ps ==0.1, any.clock ==0.8.4, clock -llvm, any.colour ==2.3.6, any.comonad ==5.0.8, comonad +containers +distributive +indexed-traversable, any.concurrent-extra ==0.7.0.12, - any.concurrent-output ==1.10.20, + any.concurrent-output ==1.10.21, any.conduit ==1.3.5, any.config-schema ==1.3.0.0, any.config-value ==0.8.3, - any.constraints ==0.14, - any.containers ==0.6.5.1, + any.constraints ==0.14.2, + any.containers ==0.6.8, any.contravariant ==1.5.5, contravariant +semigroups +statevar +tagged, crucible +unsafe-operations, any.cryptohash-sha1 ==0.11.101.0, any.cryptohash-sha256 ==0.11.102.1, cryptohash-sha256 -exe +use-cbits, - any.data-array-byte ==0.1.0.1, - any.data-binary-ieee754 ==0.4.4, any.data-default-class ==0.1.2.0, - any.data-fix ==0.3.2, - any.deepseq ==1.4.6.1, - any.deriving-compat ==0.6.5, + any.data-fix ==0.3.4, + any.deepseq ==1.5.0.0, + any.deriving-compat ==0.6.6, deriving-compat +base-4-9 +new-functor-classes +template-haskell-2-11, - any.directory ==1.3.6.2, + any.directory ==1.3.8.1, any.distributive ==0.6.2.1, distributive +semigroups +tagged, any.dlist ==1.0, @@ -85,63 +84,63 @@ constraints: any.BoundedChan ==1.0.3.0, any.entropy ==0.4.1.10, entropy -donotgetentropy, any.erf ==2.0.0.0, - any.exceptions ==0.10.4, - any.extra ==1.7.14, + any.exceptions ==0.10.7, + any.extra ==1.7.16, any.fgl ==5.8.2.0, fgl +containers042, any.fgl-visualize ==0.1.0.1, any.filemanip ==0.3.6.3, - any.filepath ==1.4.2.2, + any.filepath ==1.4.200.1, any.fingertree ==0.1.5.0, - any.foldable1-classes-compat ==0.1, - foldable1-classes-compat +tagged, any.free ==5.2, any.generic-lens ==2.2.2.0, any.generic-lens-core ==2.2.1.0, any.generic-random ==1.5.0.1, generic-random -enable-inspect, any.generically ==0.1.1, - any.ghc-bignum ==1.2, - any.ghc-boot-th ==9.2.8, - any.ghc-prim ==0.8.0, + any.ghc-bignum ==1.3, + any.ghc-boot-th ==9.8.2, + any.ghc-prim ==0.11.0, any.gitrev ==1.3.1, any.happy ==1.20.1.1, - any.hashable ==1.4.3.0, - hashable +integer-gmp -random-initial-seed, + any.hashable ==1.4.7.0, + hashable -arch-native +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.13, + any.haskell-src-meta ==0.8.14, any.hedgehog ==1.4, any.hsc2hs ==0.68.10, hsc2hs -in-ghc-tree, - 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 ==2.11.9, + any.hspec-api ==2.11.9, + any.hspec-core ==2.11.9, + any.hspec-discover ==2.11.9, any.hspec-expectations ==0.8.4, any.ieee754 ==0.8.0, any.indexed-profunctors ==0.1.1.1, - any.indexed-traversable ==0.1.3, - any.indexed-traversable-instances ==0.1.1.2, + any.indexed-traversable ==0.1.4, + any.indexed-traversable-instances ==0.1.2, + any.integer-conversion ==0.1.1, any.integer-logarithms ==1.0.3.1, integer-logarithms -check-bounds +integer-gmp, - any.invariant ==0.6.2, + any.invariant ==0.6.3, any.io-streams ==1.5.2.2, io-streams +network -nointeractivetests +zlib, any.itanium-abi ==0.1.2, any.json ==0.11, json +generic -mapdict +parsec +pretty +split-base, - any.kan-extensions ==5.2.5, - any.kvitable ==1.0.2.1, + any.kan-extensions ==5.2.6, + any.kvitable ==1.0.3.0, any.lens ==5.2.3, lens -benchmark-uniplate -dump-splices +inlining -j +test-hunit +test-properties +test-templates +trustworthy, - any.libBF ==0.6.7, + any.libBF ==0.6.8, libBF -system-libbf, - any.libyaml ==0.1.2, + any.libyaml ==0.1.4, libyaml -no-unicode -system-libyaml, + any.libyaml-clib ==0.2.5, any.lifted-async ==0.10.2.5, any.lifted-base ==0.2.3.12, llvm-pretty-bc-parser -fuzz -regressions, @@ -151,22 +150,24 @@ constraints: any.BoundedChan ==1.0.3.0, any.megaparsec ==9.6.1, megaparsec -dev, any.microlens ==0.4.13.1, - any.microlens-th ==0.4.3.14, + any.microlens-th ==0.4.3.15, any.mmorph ==1.2.0, 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.network ==3.1.4.0, + any.mono-traversable ==1.0.17.0, + any.mtl ==2.3.1, + any.network ==3.2.1.0, network -devel, + any.network-uri ==2.6.4.2, any.optparse-applicative ==0.18.1.0, optparse-applicative +process, - any.ordered-containers ==0.2.3, + any.ordered-containers ==0.2.4, + any.os-string ==2.0.6, any.panic ==0.4.0.1, any.parallel ==3.2.2.0, any.parameterized-utils ==2.1.8.0, parameterized-utils +unsafe-operations, - any.parsec ==3.1.15.0, + any.parsec ==3.1.17.0, any.parser-combinators ==1.3.0, parser-combinators -dev, any.pretty ==1.1.3.6, @@ -174,14 +175,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.prettyprinter ==1.7.1, prettyprinter -buildreadme +text, any.prettyprinter-ansi-terminal ==1.1.3, - any.primitive ==0.7.4.0, - any.process ==1.6.16.0, + any.primitive ==0.9.0.0, + any.process ==1.6.18.0, any.profunctors ==5.6.2, any.pvar ==1.0.0.0, any.quickcheck-io ==0.2.0, any.random ==1.2.1.2, any.raw-strings-qq ==1.1, - any.reflection ==2.1.7, + any.reflection ==2.1.8, reflection -slow +template-haskell, any.regex-base ==0.94.0.2, any.regex-compat ==0.95.2.1, @@ -194,11 +195,11 @@ constraints: any.BoundedChan ==1.0.3.0, any.safe ==0.3.21, any.safe-exceptions ==0.1.7.4, any.scheduler ==2.0.0.1, - any.scientific ==0.3.7.0, - scientific -bytestring-builder -integer-simple, - any.semialign ==1.3, + any.scientific ==0.3.8.0, + scientific -integer-simple, + any.semialign ==1.3.1, semialign +semigroupoids, - any.semigroupoids ==6.0.0.1, + any.semigroupoids ==6.0.1, semigroupoids +comonad +containers +contravariant +distributive +tagged +unordered-containers, any.semigroups ==0.20, semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, @@ -207,13 +208,14 @@ constraints: any.BoundedChan ==1.0.3.0, any.split ==0.2.5, any.splitmix ==0.1.0.5, splitmix -optimised-mixer, - any.stm ==2.5.0.2, + any.stm ==2.5.2.1, any.streaming-commons ==0.2.2.6, streaming-commons -use-bytestring-builder, - any.strict ==0.5, - any.string-interpolate ==0.3.3.0, + any.strict ==0.5.1, + any.string-interpolate ==0.3.4.0, string-interpolate -bytestring-builder -extended-benchmarks -text-builder, any.syb ==0.7.2.4, + any.system-cxx-std-lib ==1.0, any.tagged ==0.8.8, tagged +deepseq +transformers, any.tasty ==1.5, @@ -224,66 +226,64 @@ constraints: any.BoundedChan ==1.0.3.0, tasty-golden -build-example, any.tasty-hedgehog ==1.4.0.2, any.tasty-hspec ==1.2.0.4, - any.tasty-hunit ==0.10.1, - any.tasty-quickcheck ==0.10.3, + any.tasty-hunit ==0.10.2, + any.tasty-quickcheck ==0.11, any.tasty-smallcheck ==0.8.2, any.tasty-sugar ==2.2.1.0, - any.template-haskell ==2.18.0.0, + any.template-haskell ==2.21.0.0, any.temporary ==1.3, any.terminal-size ==0.3.3, - any.terminfo ==0.4.1.5, - any.text ==1.2.5.0, + any.terminfo ==0.4.1.6, + any.text ==2.0.1 || ==2.1.1, + text -developer +simdutf, any.text-conversions ==0.3.1.1, - any.text-short ==0.1.5, + any.text-iso8601 ==0.1.1, + any.text-short ==0.1.6, text-short -asserts, any.tf-random ==0.5, - any.th-abstraction ==0.5.0.0, - any.th-compat ==0.1.4, + any.th-abstraction ==0.6.0.0, + any.th-compat ==0.1.5, any.th-expand-syns ==0.4.11.0, any.th-lift ==0.8.4, any.th-lift-instances ==0.1.20, any.th-orphans ==0.13.14, any.th-reify-many ==0.1.10, - any.these ==1.2, - any.time ==1.11.1.1, - any.time-compat ==1.9.6.1, - time-compat -old-locale, - any.transformers ==0.5.6.2, + any.these ==1.2.1, + any.time ==1.12.2, + any.time-compat ==1.9.7, + 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.1, any.unbounded-delays ==0.1.1.1, any.uniplate ==1.6.13, - any.unix ==2.7.2.2, - any.unix-compat ==0.7.1, - unix-compat -old-time, + any.unix ==2.8.4.0, + any.unix-compat ==0.7.2, any.unliftio ==0.2.25.0, any.unliftio-core ==0.2.1.0, any.unordered-containers ==0.2.20, unordered-containers -debug, any.utf8-string ==1.0.2, - any.uuid-types ==1.0.5.1, + any.uuid-types ==1.0.6, any.vector ==0.13.1.0, vector +boundschecks -internalchecks -unsafechecks -wall, - any.vector-algorithms ==0.9.0.1, + any.vector-algorithms ==0.9.0.2, vector-algorithms +bench +boundschecks -internalchecks -llvm +properties -unsafechecks, any.vector-stream ==0.1.0.1, - any.versions ==6.0.5, + any.versions ==6.0.7, any.void ==0.7.3, void -safe, any.websockets ==0.13.0.0, websockets -example, what4 -drealtestdisable -solvertests -stptestdisable, - any.witherable ==0.4.2, + any.witherable ==0.5, any.wl-pprint-annotated ==0.1.0.1, any.xml ==1.3.14, any.yaml ==0.11.11.2, yaml +no-examples +no-exe, any.zenc ==0.1.2, - any.zlib ==0.6.3.0, - zlib -bundled-c-zlib -non-blocking-ffi -pkg-config, + any.zlib ==0.7.1.0, any.zlib-bindings ==0.1.1.5 -index-state: hackage.haskell.org 2024-02-05T11:57:43Z +index-state: hackage.haskell.org 2024-08-01T22:40:06Z diff --git a/crucible-go/src/Lang/Crucible/Go/Types.hs b/crucible-go/src/Lang/Crucible/Go/Types.hs index 5ef0e061c..9db1d878a 100644 --- a/crucible-go/src/Lang/Crucible/Go/Types.hs +++ b/crucible-go/src/Lang/Crucible/Go/Types.hs @@ -24,6 +24,7 @@ import Control.Monad.State import Data.Default.Class import Data.HashMap.Strict as HM +import qualified Data.Kind as Kind import Data.Maybe (fromJust) import Data.Text (Text) @@ -223,7 +224,7 @@ goExprType :: GoExpr a tp -> TypeRepr tp goExprType (GoExpr _loc e) = exprType e -- | Pair of things with the same type index. -data PairIx (f :: * -> CrucibleType -> *) s tp where +data PairIx (f :: Kind.Type -> CrucibleType -> Kind.Type) s tp where PairIx :: forall f s tp. f s tp -> f s tp -> PairIx f s tp -- | Pair of things with the same type index. diff --git a/crucible-jvm/src/Lang/Crucible/JVM/Overrides.hs b/crucible-jvm/src/Lang/Crucible/JVM/Overrides.hs index dd3af64e5..d997f6cd7 100644 --- a/crucible-jvm/src/Lang/Crucible/JVM/Overrides.hs +++ b/crucible-jvm/src/Lang/Crucible/JVM/Overrides.hs @@ -636,7 +636,13 @@ printStream name showNewline descr t = { C.typedOverrideHandler= \args -> do let reg = C.unRV (Ctx.last args) - str <- showReg @sym (head (J.methodKeyParameterTypes mk)) t reg + let paramTy = + case J.methodKeyParameterTypes mk of + ty:_ -> ty + [] -> panic + "printStream" + ["Expected a parameter type, but none found"] + str <- showReg @sym paramTy t reg h <- C.printHandle <$> C.getContext liftIO $ (if showNewline then hPutStrLn else hPutStr) h str liftIO $ hFlush h diff --git a/crucible-llvm/crucible-llvm.cabal b/crucible-llvm/crucible-llvm.cabal index 40acb45fe..01ca3866f 100644 --- a/crucible-llvm/crucible-llvm.cabal +++ b/crucible-llvm/crucible-llvm.cabal @@ -33,7 +33,7 @@ common bldflags library import: bldflags build-depends: - base >= 4.13 && < 4.19, + base >= 4.13 && < 4.20, attoparsec, bv-sized >= 1.0.0, bytestring, diff --git a/crucible-llvm/src/Lang/Crucible/LLVM/Printf.hs b/crucible-llvm/src/Lang/Crucible/LLVM/Printf.hs index d6869da6a..971cf481b 100644 --- a/crucible-llvm/src/Lang/Crucible/LLVM/Printf.hs +++ b/crucible-llvm/src/Lang/Crucible/LLVM/Printf.hs @@ -47,6 +47,8 @@ import qualified Data.Set as Set import Data.Word import qualified GHC.Stack as GHC +import Lang.Crucible.Panic (panic) + data PrintfFlag = PrintfAlternateForm -- # | PrintfZeroPadding -- 0 @@ -234,7 +236,13 @@ formatOctal formatOctal i minwidth prec flags = do let digits = N.showOct (abs i) [] let precdigits = addLeadingZeros prec digits - let altdigits = if Set.member PrintfAlternateForm flags && head precdigits /= '0' then + let leadingPrecDigit = + case precdigits of + d:_ -> d + [] -> panic + "formatOctal" + ["Octal-formatted number with no digits"] + let altdigits = if Set.member PrintfAlternateForm flags && leadingPrecDigit /= '0' then '0':precdigits else precdigits diff --git a/crucible-mir/src/Mir/Generator.hs b/crucible-mir/src/Mir/Generator.hs index 6fb25f626..d1fe2ff66 100644 --- a/crucible-mir/src/Mir/Generator.hs +++ b/crucible-mir/src/Mir/Generator.hs @@ -100,6 +100,7 @@ import qualified Lang.Crucible.CFG.Generator as G import qualified Lang.Crucible.CFG.Reg as R import qualified Lang.Crucible.CFG.Expr as E import qualified Lang.Crucible.CFG.Core as Core +import qualified Lang.Crucible.Panic as P import qualified Lang.Crucible.Syntax as S @@ -589,8 +590,15 @@ resolveCustom instDefId = do freshVarName :: Text -> Map Text a -> Text freshVarName base vm = - head $ filter (\n -> not $ n `Map.member` vm) $ - base : [base <> "_" <> Text.pack (show i) | i <- [0 :: Integer ..]] + case varNamesInfList of + varName:_ -> varName + [] -> P.panic + "freshVarName" + ["Expected infinite list, but list was empty"] + where + varNamesInfList = + filter (\n -> not $ n `Map.member` vm) $ + base : [base <> "_" <> Text.pack (show i) | i <- [0 :: Integer ..]] -- Generate a fresh name of the form `_temp123` freshTempName :: Map Text a -> Text diff --git a/crucible-mir/src/Mir/Pass/AllocateEnum.hs b/crucible-mir/src/Mir/Pass/AllocateEnum.hs index 4a154d409..240c347c9 100644 --- a/crucible-mir/src/Mir/Pass/AllocateEnum.hs +++ b/crucible-mir/src/Mir/Pass/AllocateEnum.hs @@ -99,6 +99,6 @@ pcr :: HasCallStack => (?col :: Collection) => BasicBlock -> BasicBlock pcr (BasicBlock inf (BasicBlockData stmts term)) = BasicBlock inf (BasicBlockData (go stmts) term) where go :: [Statement] -> [Statement] go [] = [] - go s | Just (s', ss) <- findAllocEnum s = s' : go ss - | otherwise = head s : go (tail s) - + go stmtss@(stmt:stmts) + | Just (stmt', stmts') <- findAllocEnum stmtss = stmt' : go stmts' + | otherwise = stmt : go stmts diff --git a/crucible-mir/src/Mir/Trans.hs b/crucible-mir/src/Mir/Trans.hs index 092a2bf63..8ae306d8e 100644 --- a/crucible-mir/src/Mir/Trans.hs +++ b/crucible-mir/src/Mir/Trans.hs @@ -1893,7 +1893,9 @@ transVtableShim colState vtableName (VtableItem fnName defName) $ \implFn -> withMethodHandle fnName (die ["failed to look up implementation", show fnName]) $ \implFH -> - let implMirArg0 = head $ implFn ^. M.fsig . M.fsarg_tys in + let implMirArg0 = case implFn ^. M.fsig . M.fsarg_tys of + arg_ty:_ -> arg_ty + [] -> die ["shim has no argument types"] in let implArgs = FH.handleArgTypes implFH in let implRet = FH.handleReturnType implFH in diff --git a/crucible-symio/crucible-symio.cabal b/crucible-symio/crucible-symio.cabal index 12602db01..eae802377 100644 --- a/crucible-symio/crucible-symio.cabal +++ b/crucible-symio/crucible-symio.cabal @@ -21,7 +21,7 @@ source-repository head subdir: crucible-symio common shared - build-depends: base >=4.12 && <4.19, + build-depends: base >=4.12 && <4.20, aeson, bv-sized, bytestring, @@ -63,7 +63,7 @@ test-suite crucible-symio-tests main-is: TestMain.hs hs-source-dirs: tests, src ghc-options: -Wall -Wcompat - build-depends: base >=4.12 && <4.19, + build-depends: base >=4.12 && <4.20, what4, crucible, crucible-symio, diff --git a/crucible/crucible.cabal b/crucible/crucible.cabal index c786a4e23..28968018d 100644 --- a/crucible/crucible.cabal +++ b/crucible/crucible.cabal @@ -45,7 +45,7 @@ library import: bldflags build-depends: async, - base >= 4.13 && < 4.19, + base >= 4.13 && < 4.20, bimap, bv-sized >= 1.0.0 && < 1.1, containers >= 0.5.9.0, @@ -61,7 +61,7 @@ library template-haskell, text, time >= 1.8 && < 2.0, - th-abstraction >=0.1 && <0.6, + th-abstraction >=0.1 && <0.7, transformers, unordered-containers, vector, diff --git a/crucible/src/Lang/Crucible/Simulator/Profiling.hs b/crucible/src/Lang/Crucible/Simulator/Profiling.hs index 98cdbe57c..0b60148d2 100644 --- a/crucible/src/Lang/Crucible/Simulator/Profiling.hs +++ b/crucible/src/Lang/Crucible/Simulator/Profiling.hs @@ -76,6 +76,7 @@ import What4.SatResult import Lang.Crucible.Backend import Lang.Crucible.CFG.Core +import Lang.Crucible.Panic (panic) import Lang.Crucible.Simulator.CallFrame import Lang.Crucible.Simulator.EvalStmt import Lang.Crucible.Simulator.ExecutionTree @@ -290,7 +291,11 @@ openEventFrames = go [] go xs (e Seq.:<| es) = case cgEvent_type e of ENTER -> go (e:xs) es - EXIT -> go (tail xs) es + EXIT -> case xs of + (_:xss) -> go xss es + _ -> panic + "openEventFrames" + ["Encountered an EXIT without a preceding ENTER"] _ -> go xs es openToCloseEvent :: UTCTime -> Metrics Identity -> CGEvent -> CGEvent diff --git a/crux-llvm/README.md b/crux-llvm/README.md index 7961816a7..122d1fe94 100644 --- a/crux-llvm/README.md +++ b/crux-llvm/README.md @@ -42,7 +42,7 @@ software: * `echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.bash_profile` * run `crux-llvm` in a new console to reload `.bash_profile` -We have tested `crux-llvm` most heavily with GHC 9.2, GHC 9.4, GHC 9.6, +We have tested `crux-llvm` most heavily with GHC 9.4, GHC 9.6, GHC 9.8, and `cabal` version 3.10. We recommend Yices 2.6.x, and Z3 4.8.x. Technically, only one of Yices or Z3 is required, and CVC4 is also supported. However, in practice, having both tends to be diff --git a/crux-llvm/crux-llvm.cabal b/crux-llvm/crux-llvm.cabal index 91d3cc35d..f6fb48d57 100644 --- a/crux-llvm/crux-llvm.cabal +++ b/crux-llvm/crux-llvm.cabal @@ -55,7 +55,7 @@ common bldflags -Wincomplete-uni-patterns ghc-prof-options: -O2 default-language: Haskell2010 - build-depends: base >= 4.8 && < 4.19 + build-depends: base >= 4.8 && < 4.20 , bytestring , containers , crucible diff --git a/crux-llvm/src/Crux/LLVM/Compile.hs b/crux-llvm/src/Crux/LLVM/Compile.hs index 5448da5d5..3aa6704f6 100644 --- a/crux-llvm/src/Crux/LLVM/Compile.hs +++ b/crux-llvm/src/Crux/LLVM/Compile.hs @@ -30,6 +30,7 @@ import System.Process ( readProcessWithExitCode ) import What4.Interface import What4.ProgramLoc +import Lang.Crucible.Panic ( panic ) import Lang.Crucible.Simulator.SimError import Crux @@ -124,13 +125,20 @@ genBitCode :: Log.SupportsCruxLLVMLogMessage msgs => CruxOptions -> LLVMOptions -> IO FilePath genBitCode cruxOpts llvmOpts = - -- n.b. use of head here is OK because inputFiles should not be - -- empty (and was previously verified as such in CruxLLVMMain). if noCompile llvmOpts - then return (head (Crux.inputFiles cruxOpts)) + then return headInputFile else do - let ofn = "crux~" <> (takeFileName $ head $ Crux.inputFiles cruxOpts) -<.> ".bc" + let ofn = "crux~" <> takeFileName headInputFile -<.> ".bc" genBitCodeToFile ofn (Crux.inputFiles cruxOpts) cruxOpts llvmOpts False + where + -- n.b. the use of partiality here is OK because inputFiles should not be + -- empty (and was previously verified as such in CruxLLVMMain). + headInputFile = + case Crux.inputFiles cruxOpts of + inputFile:_ -> inputFile + [] -> panic + "genBitCode" + ["Unexpected empty list of files"] -- | Given the target filename and a list of input files, along with -- the crux and llvm options, bitcode-compile each input .c file and diff --git a/crux-llvm/test/Test.hs b/crux-llvm/test/Test.hs index 9f4b56ee2..7358eaf10 100644 --- a/crux-llvm/test/Test.hs +++ b/crux-llvm/test/Test.hs @@ -12,7 +12,7 @@ import Data.Bifunctor ( first ) import qualified Data.ByteString.Lazy as BSIO import qualified Data.ByteString.Lazy.Char8 as BSC import Data.Char ( isLetter, isSpace ) -import Data.List.Extra ( isInfixOf, isPrefixOf ) +import Data.List.Extra ( isInfixOf ) import Data.Maybe ( catMaybes, fromMaybe ) import qualified Data.Text as T import Data.Versions ( Versioning, versioning, prettyV, major ) @@ -32,6 +32,8 @@ import qualified Test.Tasty as TT import Test.Tasty.HUnit ( testCase, assertFailure ) import qualified Test.Tasty.Sugar as TS +import qualified Lang.Crucible.Panic as P + import qualified CruxLLVMMain as C @@ -103,7 +105,7 @@ getClangVersion :: IO VersionCheck getClangVersion = do -- Determine which version of clang will be used for these tests. -- An exception (E.g. in the readProcess if clang is not found) will - -- result in termination (test failure). Uses partial 'head' but + -- result in termination (test failure). Uses partiality, but -- this is just tests, and failure is captured. clangBin <- fromMaybe "clang" <$> lookupEnv "CLANG" let isVerLine = isInfixOf "clang version" @@ -112,10 +114,27 @@ getClangVersion = do -- as tildes (cf. https://github.com/fosskers/versions/issues/62). -- These have been observed in the wild (e.g., 12.0.0-3ubuntu1~20.04.5). scrubProblemChars = filter (/= '~') + + headVersionLine :: [String] -> String + headVersionLine ls = + case ls of + l:_ -> l + [] -> P.panic + "getClangVersion" + ["`clang --version` output does not contain line with version"] + + headVersionWord :: [String] -> String + headVersionWord ws = + case ws of + w:_ -> w + [] -> P.panic + "getClangVersion" + ["`clang --version` output does not contain numeric version"] + getVer (Right inp) = -- example inp: "clang version 10.0.1" - scrubProblemChars $ head $ dropLetter $ words $ - head $ filter isVerLine $ lines inp + scrubProblemChars $ headVersionWord $ dropLetter $ words $ + headVersionLine $ filter isVerLine $ lines inp getVer (Left full) = full mkVC "clang" . getVer <$> readProcessVersion clangBin @@ -123,9 +142,9 @@ getZ3Version :: IO VersionCheck getZ3Version = let getVer (Right inp) = -- example inp: "Z3 version 4.8.7 - 64 bit" - let w = words inp - in if and [ length w > 2, head w == "Z3" ] - then w !! 2 else "?" + case words inp of + "Z3":_:verNum:_ -> verNum + _ -> "?" getVer (Left full) = full in mkVC "z3" . getVer <$> readProcessVersion "z3" @@ -133,9 +152,9 @@ getYicesVersion :: IO VersionCheck getYicesVersion = let getVer (Right inp) = -- example inp: "Yices 2.6.1\nCopyright ..." - let w = words inp - in if and [ length w > 1, head w == "Yices" ] - then w !! 1 else "?" + case words inp of + "Yices":verNum:_ -> verNum + _ -> "?" getVer (Left full) = full in mkVC "yices" . getVer <$> readProcessVersion "yices" @@ -143,11 +162,9 @@ getSTPVersion :: IO VersionCheck getSTPVersion = let getVer (Right inp) = -- example inp: "STP version 2.3.3\n..." - let w = words inp - in if and [ length w > 2 - , head w == "STP" - , w !! 1 == "version" ] - then w !! 2 else "?" + case words inp of + "STP":"version":verNum:_ -> verNum + _ -> "?" getVer (Left full) = full in mkVC "stp" . getVer <$> readProcessVersion "stp" @@ -155,11 +172,9 @@ getCVC4Version :: IO VersionCheck getCVC4Version = let getVer (Right inp) = -- example inp: "This is CVC4 version 1.8\ncompiled ..." - let w = words inp - in if and [ length w > 4 - , "This is CVC4 version" `isPrefixOf` inp - ] - then w !! 4 else "?" + case words inp of + "This":"is":"CVC4":"version":verNum:_ -> verNum + _ -> "?" getVer (Left full) = full in mkVC "cvc4" . getVer <$> readProcessVersion "cvc4" @@ -167,11 +182,9 @@ getCVC5Version :: IO VersionCheck getCVC5Version = let getVer (Right inp) = -- example inp: "This is cvc5 version 1.0.2\ncompiled ..." - let w = words inp - in if and [ length w > 4 - , "This is cvc5 version" `isPrefixOf` inp - ] - then w !! 4 else "?" + case words inp of + "This":"is":"cvc5":"version":verNum:_ -> verNum + _ -> "?" getVer (Left full) = full in mkVC "cvc5" . getVer <$> readProcessVersion "cvc5" @@ -179,8 +192,9 @@ getBoolectorVersion :: IO VersionCheck getBoolectorVersion = let getVer (Right inp) = -- example inp: "3.2.1" - let w = words inp - in if not (null w) then head w else "?" + case words inp of + verNum:_ -> verNum + [] -> "?" getVer (Left full) = full in mkVC "boolector" . getVer <$> readProcessVersion "boolector" diff --git a/crux-mir/README.md b/crux-mir/README.md index 9b0f9a029..a55ce8cb5 100644 --- a/crux-mir/README.md +++ b/crux-mir/README.md @@ -24,7 +24,7 @@ README][mir-json-readme]. ## Installation -Use GHC 9.2, 9.4, or 9.6. From the `crux-mir` directory, run: +Use GHC 9.4, 9.6, or 9.8. From the `crux-mir` directory, run: $ cabal v2-install exe:crux-mir --overwrite-policy=always diff --git a/dependencies/jvm-parser b/dependencies/jvm-parser index b1a5a2168..65e33e853 160000 --- a/dependencies/jvm-parser +++ b/dependencies/jvm-parser @@ -1 +1 @@ -Subproject commit b1a5a216849a573ffc214c96b9aefb61e987365b +Subproject commit 65e33e8536880a0be14378fb046633fbb552f5ac diff --git a/uc-crux-llvm/test/VersionCheck.hs b/uc-crux-llvm/test/VersionCheck.hs index 40049ad51..f173c40fe 100644 --- a/uc-crux-llvm/test/VersionCheck.hs +++ b/uc-crux-llvm/test/VersionCheck.hs @@ -32,6 +32,8 @@ import Data.Versions (Versioning, versioning, prettyV, major) import qualified GHC.IO.Exception as GE import System.Process (readProcess) +import UCCrux.LLVM.Errors.Panic (panic) + -- lack of decipherable version is not fatal to running the tests data VersionCheck = VC String (Either Text Versioning) @@ -59,7 +61,7 @@ getClangVersion :: FilePath -> IO VersionCheck getClangVersion clangBin = do -- Determine which version of clang will be used for these tests. -- An exception (E.g. in the readProcess if clang is not found) will - -- result in termination (test failure). Uses partial 'head' but + -- result in termination (test failure). Uses partiality, but -- this is just tests, and failure is captured. let isVerLine = isInfixOf "clang version" dropLetter = dropWhile (all isLetter) @@ -67,10 +69,27 @@ getClangVersion clangBin = do -- as tildes (cf. https://github.com/fosskers/versions/issues/62). -- These have been observed in the wild (e.g., 12.0.0-3ubuntu1~20.04.5). scrubProblemChars = filter (/= '~') + + headVersionLine :: [String] -> String + headVersionLine ls = + case ls of + l:_ -> l + [] -> panic + "getClangVersion" + ["`clang --version` output does not contain line with version"] + + headVersionWord :: [String] -> String + headVersionWord ws = + case ws of + w:_ -> w + [] -> panic + "getClangVersion" + ["`clang --version` output does not contain numeric version"] + getVer (Right inp) = -- example inp: "clang version 10.0.1" - scrubProblemChars $ head $ dropLetter $ words $ - head $ filter isVerLine $ lines inp + scrubProblemChars $ headVersionWord $ dropLetter $ words $ + headVersionLine $ filter isVerLine $ lines inp getVer (Left full) = full mkVC "clang" . getVer <$> readProcessVersion clangBin diff --git a/uc-crux-llvm/uc-crux-llvm.cabal b/uc-crux-llvm/uc-crux-llvm.cabal index 9e91b8ed6..e431110b5 100644 --- a/uc-crux-llvm/uc-crux-llvm.cabal +++ b/uc-crux-llvm/uc-crux-llvm.cabal @@ -185,7 +185,7 @@ library build-depends: aeson, async, - base >= 4.8 && < 4.19, + base >= 4.8 && < 4.20, bv-sized, bytestring, containers, @@ -217,7 +217,7 @@ executable uc-crux-llvm hs-source-dirs: exe build-depends: - base >= 4.8 && < 4.19, + base >= 4.8 && < 4.20, uc-crux-llvm ghc-options: -threaded