Oleg Grenrus pushed to branch wip/labelThread-export at Glasgow Haskell Compiler / GHC
Commits:
-
e74b942d
by Oleg Grenrus at 2026-01-08T18:18:41+02:00
5 changed files:
- libraries/base/changelog.md
- libraries/base/src/Control/Concurrent.hs
- libraries/base/src/System/Timeout.hs
- testsuite/tests/interface-stability/base-exports.stdout
- testsuite/tests/interface-stability/base-exports.stdout-mingw32
Changes:
| ... | ... | @@ -17,6 +17,7 @@ |
| 17 | 17 | * Adjust the strictness of `Data.List.iterate'` to be more reasonable: every element of the output list is forced to WHNF when the `(:)` containing it is forced. ([CLC proposal #335)](https://github.com/haskell/core-libraries-committee/issues/335)
|
| 18 | 18 | * Add `nubOrd` / `nubOrdBy` to `Data.List` and `Data.List.NonEmpty`. ([CLC proposal #336](https://github.com/haskell/core-libraries-committee/issues/336))
|
| 19 | 19 | * Add `Semigroup` and `Monoid` instances for `Control.Monad.ST.Lazy`. ([CLC proposal #374](https://github.com/haskell/core-libraries-committee/issues/374))
|
| 20 | + * Export `labelThread` from `Control.Concurrent`.([CLC proposal #376](https://github.com/haskell/core-libraries-committee/issues/376))
|
|
| 20 | 21 | |
| 21 | 22 | ## 4.22.0.0 *TBA*
|
| 22 | 23 | * Shipped with GHC 9.14.1
|
| ... | ... | @@ -82,6 +82,9 @@ module Control.Concurrent ( |
| 82 | 82 | -- * Weak references to ThreadIds
|
| 83 | 83 | mkWeakThreadId,
|
| 84 | 84 | |
| 85 | + -- * Thread debugging
|
|
| 86 | + labelThread,
|
|
| 87 | + |
|
| 85 | 88 | -- * GHC's implementation of concurrency
|
| 86 | 89 | |
| 87 | 90 | -- |This section describes features specific to GHC's
|
| ... | ... | @@ -29,7 +29,6 @@ import GHC.Internal.Control.Exception (Exception(..), handleJust, bracket, |
| 29 | 29 | asyncExceptionToException,
|
| 30 | 30 | asyncExceptionFromException)
|
| 31 | 31 | import GHC.Internal.Data.Unique (Unique, newUnique)
|
| 32 | -import GHC.Conc (labelThread)
|
|
| 33 | 32 | import Prelude
|
| 34 | 33 | |
| 35 | 34 | -- $setup
|
| ... | ... | @@ -120,6 +120,7 @@ module Control.Concurrent where |
| 120 | 120 | isCurrentThreadBound :: GHC.Internal.Types.IO GHC.Internal.Types.Bool
|
| 121 | 121 | isEmptyMVar :: forall a. MVar a -> GHC.Internal.Types.IO GHC.Internal.Types.Bool
|
| 122 | 122 | killThread :: ThreadId -> GHC.Internal.Types.IO ()
|
| 123 | + labelThread :: ThreadId -> GHC.Internal.Base.String -> GHC.Internal.Types.IO ()
|
|
| 123 | 124 | mkWeakMVar :: forall a. MVar a -> GHC.Internal.Types.IO () -> GHC.Internal.Types.IO (GHC.Internal.Weak.Weak (MVar a))
|
| 124 | 125 | mkWeakThreadId :: ThreadId -> GHC.Internal.Types.IO (GHC.Internal.Weak.Weak ThreadId)
|
| 125 | 126 | modifyMVar :: forall a b. MVar a -> (a -> GHC.Internal.Types.IO (a, b)) -> GHC.Internal.Types.IO b
|
| ... | ... | @@ -120,6 +120,7 @@ module Control.Concurrent where |
| 120 | 120 | isCurrentThreadBound :: GHC.Internal.Types.IO GHC.Internal.Types.Bool
|
| 121 | 121 | isEmptyMVar :: forall a. MVar a -> GHC.Internal.Types.IO GHC.Internal.Types.Bool
|
| 122 | 122 | killThread :: ThreadId -> GHC.Internal.Types.IO ()
|
| 123 | + labelThread :: ThreadId -> GHC.Internal.Base.String -> GHC.Internal.Types.IO ()
|
|
| 123 | 124 | mkWeakMVar :: forall a. MVar a -> GHC.Internal.Types.IO () -> GHC.Internal.Types.IO (GHC.Internal.Weak.Weak (MVar a))
|
| 124 | 125 | mkWeakThreadId :: ThreadId -> GHC.Internal.Types.IO (GHC.Internal.Weak.Weak ThreadId)
|
| 125 | 126 | modifyMVar :: forall a b. MVar a -> (a -> GHC.Internal.Types.IO (a, b)) -> GHC.Internal.Types.IO b
|