Skip to content

Release io-classes-1.8 #213

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
May 21, 2025
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
4 changes: 2 additions & 2 deletions .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
ghc: ["8.10", "9.2", "9.4", "9.6", "9.8", "9.10", "9.12"]
ghc: ["9.6.6", "9.8", "9.10", "9.12"]
os: [ubuntu-latest, macos-latest, windows-latest]

defaults:
Expand All @@ -27,7 +27,7 @@ jobs:
id: setup-haskell
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: "3.12.1.0"
cabal-version: "3.14.2.0"

- name: Install LLVM (macOS)
if: runner.os == 'macOS' && matrix.ghc == '8.10'
Expand Down
2 changes: 1 addition & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ package io-classes
package strict-stm
flags: +asserts

if impl (ghc >= 9.12)
if impl (ghc >= 9.10.2)
allow-newer:
-- Stuck on `cabal-3.14` issues and recalcitrant maintainers
-- https://github.com/haskell/aeson/issues/1124
Expand Down
9 changes: 4 additions & 5 deletions io-classes/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# Revsion history of io-classes

### next version

* Support ghc-9.12
### 1.8.0.0

### Breaking changes

- Provided `MonadTraceMVar`
- Renamed `InspectMonad` to `InspectMonadSTM`
* Provided `MonadTraceMVar`
* Renamed `InspectMonad` to `InspectMonadSTM`
* Added `threadLabel` to `MonadThread`
* Added `MonadLabelledMVar` class.
* Added `labelMVar` to `Control.Concurrent.Class.MonadMVar.Strict`
Expand All @@ -21,6 +19,7 @@

* Added monad transformer instances for `MonadInspectSTM` & `MonadTraceSTM`
type classes.
* Support ghc-9.12

### 1.7.0.0

Expand Down
111 changes: 29 additions & 82 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.7.0.0
version: 1.8.0.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 == { 8.10, 9.2, 9.4, 9.6, 9.8, 9.10 }
tested-with: GHC == { 9.6, 9.8, 9.10, 9.12 }

source-repository head
type: git
Expand Down Expand Up @@ -87,38 +87,15 @@ library
Control.Monad.Class.MonadTime
Control.Monad.Class.MonadTimer
Control.Monad.Class.MonadTest
default-language: Haskell2010
default-extensions: ImportQualifiedPost
other-extensions: CPP
DataKinds
DefaultSignatures
DeriveFunctor
DeriveGeneric
DerivingStrategies
ExistentialQuantification
ExplicitNamespaces
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
GeneralisedNewtypeDeriving
MultiParamTypeClasses
NamedFieldPuns
QuantifiedConstraints
RankNTypes
ScopedTypeVariables
StandaloneDeriving
TypeFamilies
TypeFamilyDependencies
TypeOperators
UndecidableInstances
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base >=4.9 && <4.22,
array,
async >=2.1,
async >=2.1 && <2.3,
bytestring,
mtl >=2.2 && <2.4,
primitive >= 0.7 && <0.11,
stm >=2.5 && <2.5.2 || >=2.5.3 && <2.6,
stm >=2.5 && <2.5.2 || ^>=2.5.3,
time >=1.9.1 && <1.13
if impl(ghc >= 9.10)
build-depends: ghc-internal
Expand All @@ -127,6 +104,7 @@ library
ghc-options: -fno-ignore-asserts

library strict-stm
import: warnings
visibility: public
hs-source-dirs: strict-stm

Expand All @@ -138,40 +116,26 @@ library strict-stm
Control.Concurrent.Class.MonadSTM.Strict.TQueue
Control.Concurrent.Class.MonadSTM.Strict.TVar
reexported-modules: Control.Concurrent.Class.MonadSTM.TSem as Control.Concurrent.Class.MonadSTM.Strict.TSem
default-language: Haskell2010
default-extensions: ImportQualifiedPost
build-depends: base >= 4.9 && <4.22,
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,
array,
stm >= 2.5 && <2.6,

io-classes:io-classes,
ghc-options: -Wall
-Wno-unticked-promoted-constructors
-Wcompat
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-Widentities

if flag(asserts)
ghc-options: -fno-ignore-asserts

library strict-mvar
import: warnings
visibility: public
hs-source-dirs: strict-mvar/src

exposed-modules: Control.Concurrent.Class.MonadMVar.Strict
default-language: Haskell2010
default-extensions: ImportQualifiedPost
build-depends: base >= 4.9 && <4.22,
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,
io-classes:io-classes,
ghc-options: -Wall
-Wno-unticked-promoted-constructors
-Wcompat
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-Widentities

library si-timers
import: warnings
Expand All @@ -180,22 +144,14 @@ library si-timers
exposed-modules: Control.Monad.Class.MonadTime.SI
Control.Monad.Class.MonadTimer.SI
other-modules: Control.Monad.Class.MonadTimer.NonStandard
default-language: Haskell2010
default-extensions: ImportQualifiedPost
other-extensions: BangPatterns,
CPP,
ConstraintKinds,
DefaultSignatures,
DeriveGeneric,
NumericUnderscores,
ScopedTypeVariables,
TypeFamilies
build-depends: base >=4.9 && <4.22,
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,
deepseq,
mtl,
nothunks,
stm,
time >=1.9.1 && <1.13,
time,

io-classes:io-classes
if flag(asserts)
Expand All @@ -214,52 +170,43 @@ library mtl
, Control.Monad.Class.MonadTime.SI.Trans
, Control.Monad.Class.MonadTimer.Trans
, Control.Monad.Class.MonadTimer.SI.Trans
build-depends: base >=4.9 && <4.22,
build-depends: base,
array,
mtl,

io-classes:{io-classes,si-timers}

hs-source-dirs: mtl
default-language: Haskell2010
default-extensions: ImportQualifiedPost
default-language: GHC2021
default-extensions: LambdaCase

library testlib
import: warnings
visibility: public
hs-source-dirs: test
exposed-modules: Test.Control.Concurrent.Class.MonadMVar.Strict.WHNF
default-language: Haskell2010
default-extensions: ImportQualifiedPost
build-depends: base >=4.9 && <4.22,
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,
nothunks,
QuickCheck,
io-classes:strict-mvar
if flag(asserts)
ghc-options: -fno-ignore-asserts

test-suite test-strict-mvar
import: warnings
type: exitcode-stdio-1.0
hs-source-dirs: strict-mvar/test
main-is: Main.hs

default-language: Haskell2010
default-extensions: ImportQualifiedPost
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,
QuickCheck,
tasty,
tasty-quickcheck,
io-classes:testlib

ghc-options: -Wall
-Wno-unticked-promoted-constructors
-Wcompat
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wpartial-fields
-Widentities
-fno-ignore-asserts

-- Since `io-sim` depends on `si-times` (`io-sim` depends on `Time`) some tests of
-- are in `io-sim:test`: this is a good enough reason to pull `io-sim:test`
-- into a seprate package.
Expand All @@ -269,8 +216,8 @@ test-suite test-si-timers
hs-source-dirs: si-timers/test
main-is: Main.hs
other-modules: Test.MonadTimer
default-language: Haskell2010
default-extensions: ImportQualifiedPost
default-language: GHC2021
default-extensions: LambdaCase
build-depends: base,

QuickCheck,
Expand Down
16 changes: 4 additions & 12 deletions io-classes/mtl/Control/Monad/Class/MonadSTM/Trans.hs
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}

-- undecidable instances needed for 'ContTSTM' instances of
-- 'MonadThrow' and 'MonadCatch' type classes.
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Control.Monad.Class.MonadSTM.Trans (ContTSTM (..)) where
Expand Down
3 changes: 1 addition & 2 deletions io-classes/mtl/Control/Monad/Class/MonadThrow/Trans.hs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Control.Monad.Class.MonadThrow.Trans () where

Expand Down
9 changes: 3 additions & 6 deletions io-classes/si-timers/src/Control/Monad/Class/MonadTime/SI.hs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}

module Control.Monad.Class.MonadTime.SI
( MonadTime (..)
Expand Down
6 changes: 0 additions & 6 deletions io-classes/si-timers/src/Control/Monad/Class/MonadTimer/SI.hs
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Control.Monad.Class.MonadTimer.SI
( -- * Type classes
MonadDelay (..)
Expand Down
2 changes: 0 additions & 2 deletions io-classes/src/Control/Concurrent/Class/MonadMVar.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE TypeFamilyDependencies #-}

module Control.Concurrent.Class.MonadMVar
Expand Down
5 changes: 0 additions & 5 deletions io-classes/src/Control/Monad/Class/MonadAsync.hs
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilyDependencies #-}
-- MonadAsync's ReaderT instance is undecidable.
{-# LANGUAGE UndecidableInstances #-}
Expand Down
7 changes: 2 additions & 5 deletions io-classes/src/Control/Monad/Class/MonadFork.hs
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TypeFamilies #-}

-- | A generalisation of
-- <https://hackage.haskell.org/package/base/docs/Control-Concurrent.html Control.Concurrent>
Expand Down
3 changes: 0 additions & 3 deletions io-classes/src/Control/Monad/Class/MonadST.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Control.Monad.Class.MonadST (MonadST (..)) where

import Control.Monad.Reader
Expand Down
16 changes: 6 additions & 10 deletions io-classes/src/Control/Monad/Class/MonadSTM.hs
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
-- | This module corresponds to "Control.Monad.STM" in "stm" package
--
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
-- undecidable instances needed for 'WrappedSTM' instances of 'MonadThrow' and
-- 'MonadCatch' type classes.
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableInstances #-}

-- | This module corresponds to "Control.Monad.STM" in "stm" package
--
module Control.Monad.Class.MonadSTM
( MonadSTM (STM, atomically, retry, orElse, check)
, throwSTM
Expand Down
Loading