BSD-3-Clause licensed 
This version can be pinned in stack with:stm-2.5.3.1@sha256:b93121e5fb0939cb7120322763079b425bab097e049abb35580ecb6ab6abccbe,2356
Module documentation for 2.5.3.1
- Control
- Control.Concurrent
 
- Control.Monad
 
 
Used by 181 packages in 
nightly-2025-11-04(full list with versions):
acid-state, 
advent-of-code-api, 
Agda, 
alarmclock, 
alternators, 
amqp, 
async, 
async-pool, 
async-refresh, 
auto-update, 
blank-canvas, 
box, 
brick, 
cabal-install, 
cache, 
chan, 
classy-prelude, 
co-log-concurrent, 
concurrency, 
concurrent-extra, 
concurrent-output, 
conduit-algorithms, 
conduit-extra, 
consumers, 
core-program, 
core-telemetry, 
data-ref, 
di-core, 
di-df1, 
di-monad, 
distributed-process, 
distributed-process-async, 
distributed-process-client-server, 
distributed-process-execution, 
distributed-process-extras, 
distributed-process-systest, 
distributed-process-tests, 
effectful, 
every, 
exceptions, 
and many more 
2.5.3.1 November 2023
- Drop unused testcase inadvertently introduced in previous reversion
 
2.5.3.0 November 2023
- Revert array-based reimplementation of 
TBQueue due to #76 
2.5.2.1 September 2023
- Eliminate reliance on undefined CPP behavior (#75)
 
2.5.2.0 September 2023
- Fix strictness of 
stateTVar (#30) 
- Rewrite 
TBQueue to use a more-efficient array-based representation (#65) 
newTBQueue 0 now fails as one would expect (#28) 
- Add 
capacityTBQueue (#61) 
- Add 
MArray TArray e IO instance 
- Use unlifted 
Array# for TArray (#66) 
2.5.1.0 Aug 2022
- Teach 
flushTBQueue to only flush queue when necessary 
- Introduce 
Control.Concurrent.STM.TMVar.writeTMVar 
- Add 
Semigroup and Monoid instances for STM 
2.5.0.2 Dec 2021
2.5.0.1 May 2020
- Optimise implementation of 
peekTQueue and peekTBQueue to reduce
probability of transaction conflicts. 
2.5.0.0 Sep 2018
- 
Removed alwaysSucceeds and always, GHC’s invariant checking primitives. (GHC #14324)
 
- 
Add lengthTBQueue to Control.Concurrent.STM.TBQueue (gh-9)
 
- 
Add stateTVar :: TVar s -> (s -> (a, s)) -> STM a combinator (gh-14)
 
- 
Switched newTBQueue and newTBQueueIO to accept Natural as size (gh-17)
 
- 
Switched signalTSemN and newTSem to accept Natural and Integer respectively (gh-17)
 
2.4.5.1 Sep 2018
2.4.5.0 Feb 2018
- 
Fix space leak in TBQueue (gh-2, GHC#14494)
 
- 
Make signalTSem resilient against Int overflows (gh-4)
 
- 
Make definition of readTQueue consistent with readTBQueue (gh-3, GHC#9539)
 
- 
Add flushTQueue to Control.Concurrent.STM.TQueue (gh-1)
 
- 
Add flushTBQueue to Control.Concurrent.STM.TBQueue (gh-1)
 
- 
Add signalTSemN operation (gh-5)
 
2.4.4.1  Dec 2015
2.4.4  Dec 2014
- 
Add support for base-4.8.0.0
 
- 
Tighten Safe Haskell bounds
 
- 
Add mkWeakTMVar to Control.Concurrent.STM.TMVar
 
- 
Add @since-annotations
 
2.4.3  Mar 2014
- 
Update behaviour of newBroadcastTChanIO to match
newBroadcastTChan in causing an error on a read from the
broadcast channel
 
- 
Add mkWeakTVar
 
- 
Add isFullTBQueue
 
- 
Fix TChan created via newBroadcastTChanIO to throw same
exception on a readTChan as when created via newBroadcastTChan
 
- 
Update to Cabal 1.10 format
 
2.4.2  Nov 2012
- 
Add Control.Concurrent.STM.TSem (transactional semaphore)
 
- 
Add Applicative/Alternative instances of STM for GHC <7.0
 
- 
Throw proper exception when readTChan called on a broadcast TChan
 
2.4  Jul 2012
- 
Add Control.Concurrent.STM.TQueue (a faster TChan)
 
- 
Add Control.Concurrent.STM.TBQueue (a bounded channel based on TQueue)
 
- 
Add Eq instance for TChan
 
- 
Add newBroadcastTChan and newBroadcastTChanIO
 
- 
Some performance improvements for TChan
 
- 
Add cloneTChan