From 5dcf6408cbced3ca6313cab1d7a67e685be91d07 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:40:23 +0900 Subject: [PATCH 1/6] fix compilation errors with mtl >=2.3 --- src/ToySolver/Arith/CAD.hs | 1 + src/ToySolver/Arith/Simplex/Textbook/MIPSolver/Simple.hs | 1 + src/ToySolver/Combinatorial/Knapsack/BB.hs | 1 + src/ToySolver/Converter/NAESAT.hs | 1 + src/ToySolver/SAT/Encoder/Cardinality/Internal/Totalizer.hs | 1 + src/ToySolver/SAT/Encoder/PB/Internal/Sorter.hs | 1 + 6 files changed, 6 insertions(+) diff --git a/src/ToySolver/Arith/CAD.hs b/src/ToySolver/Arith/CAD.hs index 5ad78aeb..ba622bc3 100644 --- a/src/ToySolver/Arith/CAD.hs +++ b/src/ToySolver/Arith/CAD.hs @@ -50,6 +50,7 @@ module ToySolver.Arith.CAD ) where import Control.Exception +import Control.Monad import Control.Monad.State import Data.List import Data.Maybe diff --git a/src/ToySolver/Arith/Simplex/Textbook/MIPSolver/Simple.hs b/src/ToySolver/Arith/Simplex/Textbook/MIPSolver/Simple.hs index 8f5c8d47..9b692637 100644 --- a/src/ToySolver/Arith/Simplex/Textbook/MIPSolver/Simple.hs +++ b/src/ToySolver/Arith/Simplex/Textbook/MIPSolver/Simple.hs @@ -35,6 +35,7 @@ module ToySolver.Arith.Simplex.Textbook.MIPSolver.Simple ) where import Control.Exception +import Control.Monad import Control.Monad.State import Data.Default.Class import Data.Ord diff --git a/src/ToySolver/Combinatorial/Knapsack/BB.hs b/src/ToySolver/Combinatorial/Knapsack/BB.hs index c4f74df7..79a7db82 100644 --- a/src/ToySolver/Combinatorial/Knapsack/BB.hs +++ b/src/ToySolver/Combinatorial/Knapsack/BB.hs @@ -20,6 +20,7 @@ module ToySolver.Combinatorial.Knapsack.BB , solve ) where +import Control.Monad import Control.Monad.State.Strict import Data.Function (on) import Data.IntSet (IntSet) diff --git a/src/ToySolver/Converter/NAESAT.hs b/src/ToySolver/Converter/NAESAT.hs index f08f0265..1eafdf18 100644 --- a/src/ToySolver/Converter/NAESAT.hs +++ b/src/ToySolver/Converter/NAESAT.hs @@ -41,6 +41,7 @@ module ToySolver.Converter.NAESAT , nae3sat2max2sat ) where +import Control.Monad import Control.Monad.State.Strict import Data.Array.Unboxed import qualified Data.IntMap as IntMap diff --git a/src/ToySolver/SAT/Encoder/Cardinality/Internal/Totalizer.hs b/src/ToySolver/SAT/Encoder/Cardinality/Internal/Totalizer.hs index 347b21c1..a588b62f 100644 --- a/src/ToySolver/SAT/Encoder/Cardinality/Internal/Totalizer.hs +++ b/src/ToySolver/SAT/Encoder/Cardinality/Internal/Totalizer.hs @@ -32,6 +32,7 @@ module ToySolver.SAT.Encoder.Cardinality.Internal.Totalizer , encodeSum ) where +import Control.Monad import Control.Monad.Primitive import Control.Monad.State.Strict import qualified Data.IntSet as IntSet diff --git a/src/ToySolver/SAT/Encoder/PB/Internal/Sorter.hs b/src/ToySolver/SAT/Encoder/PB/Internal/Sorter.hs index 57ab561f..d0254cac 100644 --- a/src/ToySolver/SAT/Encoder/PB/Internal/Sorter.hs +++ b/src/ToySolver/SAT/Encoder/PB/Internal/Sorter.hs @@ -36,6 +36,7 @@ module ToySolver.SAT.Encoder.PB.Internal.Sorter , encodePBLinAtLeastSorter ) where +import Control.Monad import Control.Monad.Primitive import Control.Monad.State import Control.Monad.Writer From 351f444b870a6407177c5831b6a328992540513e Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:41:36 +0900 Subject: [PATCH 2/6] fix compilation error with hashable >=1.4.3 --- src/ToySolver/SAT/Solver/CDCL.hs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ToySolver/SAT/Solver/CDCL.hs b/src/ToySolver/SAT/Solver/CDCL.hs index 4742443d..e50599aa 100644 --- a/src/ToySolver/SAT/Solver/CDCL.hs +++ b/src/ToySolver/SAT/Solver/CDCL.hs @@ -139,7 +139,9 @@ import Control.Exception import Data.Array.IO import Data.Array.Unsafe (unsafeFreeze) import Data.Array.Base (unsafeRead, unsafeWrite) +#if !MIN_VERSION_hashable(1,4,3) import Data.Bits (xor) -- for defining 'combine' function +#endif import Data.Coerce import Data.Default.Class import Data.Either @@ -3619,12 +3621,16 @@ shift ref = do writeIORef ref xs return x +#if !MIN_VERSION_hashable(1,4,3) + defaultHashWithSalt :: Hashable a => Int -> a -> Int defaultHashWithSalt salt x = salt `combine` hash x where combine :: Int -> Int -> Int combine h1 h2 = (h1 * 16777619) `xor` h2 +#endif + {-------------------------------------------------------------------- debug --------------------------------------------------------------------} From 7dbb90e5705d15cd2b94a72fd309a337dbb4f0d9 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:42:17 +0900 Subject: [PATCH 3/6] fix compilation error with array >=0.5.6 --- src/ToySolver/SAT/Solver/SLS/ProbSAT.hs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ToySolver/SAT/Solver/SLS/ProbSAT.hs b/src/ToySolver/SAT/Solver/SLS/ProbSAT.hs index d459adf7..9fc3ed14 100644 --- a/src/ToySolver/SAT/Solver/SLS/ProbSAT.hs +++ b/src/ToySolver/SAT/Solver/SLS/ProbSAT.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -528,12 +529,16 @@ walksat solver opt cb p = do -- ------------------------------------------------------------------- +#if !MIN_VERSION_array(0,5,6) + {-# INLINE modifyArray #-} modifyArray :: (MArray a e m, Ix i) => a i e -> i -> (e -> e) -> m () modifyArray a i f = do e <- readArray a i writeArray a i (f e) +#endif + {-# INLINE forAssocsM_ #-} forAssocsM_ :: (IArray a e, Monad m) => a Int e -> ((Int,e) -> m ()) -> m () forAssocsM_ a f = do From f3c8c48d45b3398c811fa4a2bce8a488e82e8182 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:44:20 +0900 Subject: [PATCH 4/6] relax upperbounds of bytestring, logic-TPTP, and tasty-quickcheck --- toysolver.cabal | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/toysolver.cabal b/toysolver.cabal index 94594a23..f7ac2cf8 100644 --- a/toysolver.cabal +++ b/toysolver.cabal @@ -127,7 +127,7 @@ Library array >=0.5, -- GHC >=8.6 && <9.7 base >=4.12 && <4.19, - bytestring >=0.9.2.1 && <0.12, + bytestring >=0.9.2.1 && <0.13, bytestring-builder, bytestring-encoding >=0.1.1.0, case-insensitive, @@ -526,7 +526,7 @@ Executable toyfmf base, containers, intern, - logic-TPTP >=0.4.6.0 && <0.5, + logic-TPTP >=0.4.6.0 && <0.6, optparse-applicative, text, toysolver @@ -865,7 +865,7 @@ Test-suite TestPolynomial pretty, tasty >=0.10.1, tasty-hunit >=0.9 && <0.11, - tasty-quickcheck >=0.8 && <0.11, + tasty-quickcheck >=0.8 && <0.12, tasty-th, toysolver Default-Language: Haskell2010 @@ -939,7 +939,7 @@ Test-suite TestSuite scientific, tasty >=0.10.1, tasty-hunit >=0.9 && <0.11, - tasty-quickcheck >=0.8 && <0.11, + tasty-quickcheck >=0.8 && <0.12, tasty-th, text, toysolver, From 010fb86b19b9e6bbf51bbc1a20386b37101a9fa7 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:46:57 +0900 Subject: [PATCH 5/6] :up: update stackge LTS versions --- .github/workflows/build.yaml | 10 +++- stack-ghc-9.2.yaml | 2 +- stack-ghc-9.4.yaml | 2 +- stack-ghc-9.6.yaml | 89 ++++++++++++++++++++++++++++++++++++ toysolver.cabal | 3 +- 5 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 stack-ghc-9.6.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 28a835c6..f63972eb 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,15 @@ jobs: fail-fast: false matrix: include: - - ghc: '9.4.5' + - ghc: '9.6.6' + os: ubuntu-latest + stack_yaml: 'stack-ghc-9.6.yaml' + stack_args: '--haddock --no-haddock-deps' + flags: '--flag toysolver:BuildToyFMF --flag toysolver:BuildSamplePrograms --flag toysolver:BuildMiscPrograms' + platform: linux-x86_64 + coveralls: false + + - ghc: '9.4.8' os: ubuntu-latest stack_yaml: 'stack-ghc-9.4.yaml' stack_args: '--haddock --no-haddock-deps' diff --git a/stack-ghc-9.2.yaml b/stack-ghc-9.2.yaml index 3dc9f4eb..75ffd6af 100644 --- a/stack-ghc-9.2.yaml +++ b/stack-ghc-9.2.yaml @@ -15,7 +15,7 @@ # resolver: # name: custom-snapshot # location: "./custom-snapshot.yaml" -resolver: lts-20.25 +resolver: lts-20.26 # User packages to be built. # Various formats can be used as shown in the example below. diff --git a/stack-ghc-9.4.yaml b/stack-ghc-9.4.yaml index 9dd6d8a0..f4762df4 100644 --- a/stack-ghc-9.4.yaml +++ b/stack-ghc-9.4.yaml @@ -15,7 +15,7 @@ # resolver: # name: custom-snapshot # location: "./custom-snapshot.yaml" -resolver: nightly-2023-06-11 +resolver: lts-21.25 # User packages to be built. # Various formats can be used as shown in the example below. diff --git a/stack-ghc-9.6.yaml b/stack-ghc-9.6.yaml new file mode 100644 index 00000000..9a7c24ea --- /dev/null +++ b/stack-ghc-9.6.yaml @@ -0,0 +1,89 @@ +# This file was automatically generated by 'stack init' +# +# Some commonly used options have been documented as comments in this file. +# For advanced use and comprehensive documentation of the format, please see: +# http://docs.haskellstack.org/en/stable/yaml_configuration/ + +# Resolver to choose a 'specific' stackage snapshot or a compiler version. +# A snapshot resolver dictates the compiler version and the set of packages +# to be used for project dependencies. For example: +# +# resolver: lts-3.5 +# resolver: nightly-2015-09-21 +# resolver: ghc-7.10.2 +# resolver: ghcjs-0.1.0_ghc-7.10.2 +# resolver: +# name: custom-snapshot +# location: "./custom-snapshot.yaml" +resolver: lts-22.33 + +# User packages to be built. +# Various formats can be used as shown in the example below. +# +# packages: +# - some-directory +# - https://example.com/foo/bar/baz-0.0.2.tar.gz +# - location: +# git: https://github.com/commercialhaskell/stack.git +# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a +# extra-dep: true +# subdirs: +# - auto-update +# - wai +# +# A package marked 'extra-dep: true' will only be built if demanded by a +# non-dependency (i.e. a user package), and its test suites and benchmarks +# will not be run. This is useful for tweaking upstream packages. +packages: +- . + +# Dependency packages to be pulled from upstream that are not in the resolver +# (e.g., acme-missiles-0.3) +extra-deps: +- queue-0.1.2 +- OptDir-0.0.3 +- logic-TPTP-0.5.1.0 +- finite-field-0.9.0 +- pseudo-boolean-0.1.11.0@sha256:3e03a1fd845c70397d4e47c0da79a126c747bf4c3b0e4553eb4026297376dfd7 +- sign-0.4.4 +- bytestring-encoding-0.1.2.0 +- MIP-0.1.2.0 +# Patched version of tasty-th for reading UTF-8 files on non UTF-8 environment. +- git: https://github.com/msakai/tasty-th/ + commit: ebbe5a79b3c7a537ceafc6291744c4d531bef63c + +- ansi-wl-pprint-0.6.9@sha256:fb737bc96e2aef34ad595d54ced7a73f648c521ebcb00fe0679aff45ccd49212,2448 +- base-compat-0.12.3@sha256:4ef57766629fda9a5a6e41777e5279beb48a37b9d6cf5904c78643ad11a8a1ee,7490 +- base-compat-batteries-0.12.3@sha256:398c0d3c01407d5f79d7737961e79d0da1272ea11285238c6082850afc60dd9d,9666 +- criterion-1.5.13.0@sha256:6d627a4c269981d3c94bff5aca7c377e838336faf666ac5a4447863bf1044727,5650 +- criterion-measurement-0.1.4.0@sha256:a1e16321f63bb2de4eb9fe2ad9982479d0fed590be82ec0b99cfa082f4ed1821,2121 +- optparse-applicative-0.17.1.0@sha256:cb5f5f0dc9749846fc0e3df0041a8efee6368cc1cff07336acd4c3b02a951ed6,5147 + +# hack for avoiding haddock error of MemoTrie-0.6.4 +#- MemoTrie-0.6.7 +#- newtype-generics-0.5 + +# Override default flag values for local packages and extra-deps +flags: {} + +# Extra package databases containing global packages +extra-package-dbs: [] + +# Control whether we use the GHC we find on the path +# system-ghc: true +# +# Require a specific version of stack, using version ranges +# require-stack-version: -any # Default +# require-stack-version: ">=1.1" +# +# Override the architecture used by stack, especially useful on Windows +# arch: i386 +# arch: x86_64 +# +# Extra directories used by stack for building +# extra-include-dirs: [/path/to/dir] +# extra-lib-dirs: [/path/to/dir] +# +# Allow a newer minor version of GHC than the snapshot specifies +# compiler-check: newer-minor diff --git a/toysolver.cabal b/toysolver.cabal index f7ac2cf8..6b7d242c 100644 --- a/toysolver.cabal +++ b/toysolver.cabal @@ -16,7 +16,8 @@ Tested-With: GHC ==8.10.7 GHC ==9.0.2 GHC ==9.2.8 - GHC ==9.4.5 + GHC ==9.4.8 + GHC ==9.6.6 Extra-Source-Files: README.md INSTALL.md From ae65a3c77a334ba99fadb07c5b2c7c2009ffbb74 Mon Sep 17 00:00:00 2001 From: Masahiro Sakai Date: Thu, 5 Sep 2024 00:52:07 +0900 Subject: [PATCH 6/6] use GHC-9.6 for building release for Linux and macOS --- .github/workflows/build.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f63972eb..9389b798 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,6 +24,15 @@ jobs: flags: '--flag toysolver:BuildToyFMF --flag toysolver:BuildSamplePrograms --flag toysolver:BuildMiscPrograms' platform: linux-x86_64 coveralls: false + release: true + - ghc: '9.6.6' + os: macos-13 # Intel Mac + stack_yaml: 'stack-ghc-9.6.yaml' + stack_args: '' + flags: '--flag toysolver:BuildToyFMF --flag toysolver:BuildSamplePrograms --flag toysolver:BuildMiscPrograms' + platform: macos + coveralls: false + release: true - ghc: '9.4.8' os: ubuntu-latest @@ -47,15 +56,7 @@ jobs: stack_args: '--haddock --no-haddock-deps' flags: '--flag toysolver:BuildToyFMF --flag toysolver:BuildSamplePrograms --flag toysolver:BuildMiscPrograms' platform: linux-x86_64 - release: true - - ghc: '9.0.2' - os: macos-13 # Intel Mac - stack_yaml: 'stack-ghc-9.0.yaml' - stack_args: '' - flags: '--flag toysolver:BuildToyFMF --flag toysolver:BuildSamplePrograms --flag toysolver:BuildMiscPrograms' - platform: macos coveralls: false - release: true # Current version of stack (2.7.5) cannot build foreign libraries for windows on GHC >=9.0 # We need a stack built with Cabal-3.8.1 which contains the fix https://github.com/haskell/cabal/pull/7764 .