Oleg Grenrus pushed to branch wip/labelThread-export at Glasgow Haskell Compiler / GHC

Commits:

5 changed files:

Changes:

  • libraries/base/changelog.md
    ... ... @@ -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
    

  • libraries/base/src/Control/Concurrent.hs
    ... ... @@ -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
    

  • libraries/base/src/System/Timeout.hs
    ... ... @@ -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
    

  • testsuite/tests/interface-stability/base-exports.stdout
    ... ... @@ -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
    

  • testsuite/tests/interface-stability/base-exports.stdout-mingw32
    ... ... @@ -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