Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
ghc: ["9.6.6", "9.8", "9.10", "9.12"]
ghc: ["9.6.6", "9.8", "9.10", "9.12", "9.14"]
os: [ubuntu-latest, macos-latest, windows-latest]

defaults:
Expand Down
16 changes: 16 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,19 @@ package io-classes

package strict-stm
flags: +asserts

if impl(ghc >= 9.14)
allow-newer: microstache:base
, microstache:containers
, binary-orphans:base
, aeson:template-haskell
, aeson:bytestring
, aeson:containers
, indexed-traversable:base
, indexed-traversable:containers
, indexed-traversable-instances:base
, uuid-types:template-haskell
, these:base
, semialign:base
, semialign:containers
, criterion:aeson
4 changes: 4 additions & 0 deletions io-classes/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@

### Non-breaking changes

## 1.10.1.0

### Non-breaking changes

* Support `ghc-9.14`

## 1.10.0.0
Expand Down
4 changes: 2 additions & 2 deletions io-classes/io-classes.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 3.4
name: io-classes
version: 1.10.0.0
version: 1.10.1.0
synopsis: Type classes for concurrency with STM, ST and timing
description:
IO Monad class hierarchy compatible with:
Expand Down Expand Up @@ -38,7 +38,7 @@ category: Control
build-type: Simple
extra-doc-files: CHANGELOG.md README.md strict-stm/README.md strict-mvar/README.md
bug-reports: https://github.com/input-output-hk/io-sim/issues
tested-with: GHC == { 9.6, 9.8, 9.10, 9.12 }
tested-with: GHC == { 9.6, 9.8, 9.10, 9.12, 9.14 }

source-repository head
type: git
Expand Down
13 changes: 12 additions & 1 deletion io-sim/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Revision history of io-sim

## 1.10.1.0

### Non-breaking changes

* Added `IOSimPOR` `QuickCheck` combinators:
* `monadicIOSimPOR_`
* `monadicIOSimPOR`
* `runIOSimPORGen`
* Support ghc-9.14
* Support QuickCheck-2.18.0.0

## 1.10.0.0

### Breaking changes
Expand All @@ -23,7 +34,7 @@
`EventLogEvaluationError`.
* Added `Data.List.Trace.last`
* Although `IOSim` and `IOSimPOR` are pure we use `evaluate` in a few places,
non of them now catch asynchrounous exceptions.
none of them now catch asynchronous exceptions.
* Added `IOSimPOR` QuickCheck monadic combinators:
`monadicIOSimPOR`, `monadicIOSimPOR_` and `runIOSimPORGen`.

Expand Down
6 changes: 4 additions & 2 deletions io-sim/io-sim.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 3.4
name: io-sim
version: 1.10.0.0
version: 1.10.1.0
synopsis: A pure simulator for monadic concurrency with STM.
description:
A pure simulator monad with support of concurrency (base & async style), stm,
Expand All @@ -19,7 +19,7 @@ category: Testing
build-type: Simple
extra-doc-files: CHANGELOG.md README.md
bug-reports: https://github.com/input-output-hk/io-sim/issues
tested-with: GHC == { 9.6, 9.8, 9.10, 9.12 }
tested-with: GHC == { 9.6, 9.8, 9.10, 9.12, 9.14 }

flag asserts
description: Enable assertions
Expand Down Expand Up @@ -112,6 +112,8 @@ test-suite test
-rtsopts
if impl(ghc >= 9.8)
ghc-options: -Wno-x-partial
if impl(ghc >= 9.14)
ghc-options: -Wno-incomplete-record-selectors

benchmark bench
import: warnings
Expand Down
8 changes: 4 additions & 4 deletions io-sim/test/Test/Control/Monad/IOSim.hs
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ tests :: TestTree
tests =
testGroup "IOSim"
[ testProperty "read/write graph (IO)" prop_stm_graph_io
, testProperty "read/write graph (IOSim)" (withMaxSuccess 1000 prop_stm_graph_sim)
, testProperty "read/write graph (IOSim)" (withNumTests 1000 prop_stm_graph_sim)
, testGroup "timeouts"
[ testProperty "IOSim" (withMaxSuccess 1000 prop_timers_ST)
[ testProperty "IOSim" (withNumTests 1000 prop_timers_ST)
-- fails since we just use `threadDelay` to schedule timers in `IO`.
, testProperty "IO" (expectFailure prop_timers_IO)
, testProperty "IOSim: no deadlock" prop_timeout_no_deadlock_Sim
Expand All @@ -83,8 +83,8 @@ tests =
[ testProperty "timeout: discardAfter" unit_discardAfter
, testProperty "timeout: within" unit_within
]
, testProperty "threadId order (IOSim)" (withMaxSuccess 1000 prop_threadId_order_order_Sim)
, testProperty "forkIO order (IOSim)" (withMaxSuccess 1000 prop_fork_order_ST)
, testProperty "threadId order (IOSim)" (withNumTests 1000 prop_threadId_order_order_Sim)
, testProperty "forkIO order (IOSim)" (withNumTests 1000 prop_fork_order_ST)
, testProperty "order (IO)" (expectFailure prop_fork_order_IO)
, testProperty "STM wakeup order" prop_wakeup_order_ST
, testGroup "throw/catch unit tests"
Expand Down
8 changes: 4 additions & 4 deletions io-sim/test/Test/Control/Monad/IOSimPOR.hs
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ tests =
-- , testProperty "propPermutations" propPermutations
]
, testGroup "IO simulator properties"
[ testProperty "read/write graph (IOSim)" (withMaxSuccess 1000 prop_stm_graph_sim)
[ testProperty "read/write graph (IOSim)" (withNumTests 1000 prop_stm_graph_sim)
, testGroup "timeouts"
[ testProperty "IOSim" (withMaxSuccess 1000 prop_timers_ST)
[ testProperty "IOSim" (withNumTests 1000 prop_timers_ST)
, testProperty "IOSim: no deadlock" prop_timeout_no_deadlock_Sim
, testProperty "timeout" prop_timeout
, testProperty "timeouts" prop_timeouts
Expand All @@ -86,8 +86,8 @@ tests =
]
]
, testProperty "infinite simulation" prop_explore_endless_simulation
, testProperty "threadId order (IOSim)" (withMaxSuccess 1000 prop_threadId_order_order_Sim)
, testProperty "forkIO order (IOSim)" (withMaxSuccess 1000 prop_fork_order_ST)
, testProperty "threadId order (IOSim)" (withNumTests 1000 prop_threadId_order_order_Sim)
, testProperty "forkIO order (IOSim)" (withNumTests 1000 prop_fork_order_ST)
, testGroup "throw/catch unit tests"
[ testProperty "0" unit_catch_0
, testProperty "1" unit_catch_1
Expand Down
8 changes: 7 additions & 1 deletion io-sim/test/Test/Control/Monad/Utils.hs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{-# LANGUAGE CPP #-}
module Test.Control.Monad.Utils where

import Data.Array
Expand All @@ -18,6 +19,11 @@ import Test.Control.Monad.STM

import Test.QuickCheck

#if !MIN_VERSION_QuickCheck(2,18,0)
withNumTests :: Testable prop => Int -> prop -> Property
withNumTests = withMaxSuccess
#endif

--
-- Read/Write graph
--
Expand Down Expand Up @@ -489,7 +495,7 @@ forall_masking_states :: (MaskingState -> Property)
-> Property
forall_masking_states prop =
-- make sure that the property is executed once!
withMaxSuccess 1 $
withNumTests 1 $
foldr (\ms p -> counterexample (show ms) (prop ms) .&&. p)
(property True)
[Unmasked, MaskedInterruptible, MaskedUninterruptible]
Expand Down
Loading