packages feed

base 4.21.2.0 → 4.22.0.0

raw patch · 28 files changed

+886/−215 lines, 28 filesdep ~ghc-internalPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: ghc-internal

API changes (from Hackage documentation)

- Control.Concurrent.Chan: instance GHC.Classes.Eq (Control.Concurrent.Chan.Chan a)
- Control.Exception.Backtrace: Backtraces :: Maybe (Ptr CostCentreStack) -> Maybe CallStack -> Maybe StackTrace -> Maybe StackSnapshot -> Backtraces
- Control.Exception.Backtrace: [btrCostCentre] :: Backtraces -> Maybe (Ptr CostCentreStack)
- Control.Exception.Backtrace: [btrExecutionStack] :: Backtraces -> Maybe StackTrace
- Control.Exception.Backtrace: [btrHasCallStack] :: Backtraces -> Maybe CallStack
- Control.Exception.Backtrace: [btrIpe] :: Backtraces -> Maybe StackSnapshot
- Data.Array.Byte: instance GHC.Classes.Eq (Data.Array.Byte.MutableByteArray s)
- Data.Array.Byte: instance GHC.Classes.Eq Data.Array.Byte.ByteArray
- Data.Array.Byte: instance GHC.Classes.Ord Data.Array.Byte.ByteArray
- Data.Complex: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Complex.Complex a)
- Data.Fixed: instance forall k (a :: k). GHC.Classes.Eq (Data.Fixed.Fixed a)
- Data.Fixed: instance forall k (a :: k). GHC.Classes.Ord (Data.Fixed.Fixed a)
- Data.Foldable1: instance Data.Foldable1.Foldable1 GHC.Tuple.Solo
- Data.Functor.Classes: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => Data.Functor.Classes.Eq1 ((,,) a b)
- Data.Functor.Classes: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => Data.Functor.Classes.Eq2 ((,,,) a b)
- Data.Functor.Classes: instance (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c) => Data.Functor.Classes.Eq1 ((,,,) a b c)
- Data.Functor.Classes: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => Data.Functor.Classes.Ord1 ((,,) a b)
- Data.Functor.Classes: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => Data.Functor.Classes.Ord2 ((,,,) a b)
- Data.Functor.Classes: instance (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c) => Data.Functor.Classes.Ord1 ((,,,) a b c)
- Data.Functor.Classes: instance Data.Functor.Classes.Eq1 GHC.Tuple.Solo
- Data.Functor.Classes: instance Data.Functor.Classes.Ord1 GHC.Tuple.Solo
- Data.Functor.Classes: instance Data.Functor.Classes.Read1 GHC.Tuple.Solo
- Data.Functor.Classes: instance Data.Functor.Classes.Show1 GHC.Tuple.Solo
- Data.Functor.Classes: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 ((,) a)
- Data.Functor.Classes: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (GHC.Internal.Data.Either.Either a)
- Data.Functor.Classes: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (GHC.Internal.Data.Functor.Const.Const a)
- Data.Functor.Classes: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq2 ((,,) a)
- Data.Functor.Classes: instance GHC.Classes.Eq c => Data.Functor.Classes.Eq1 (GHC.Internal.Generics.K1 i c)
- Data.Functor.Classes: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 ((,) a)
- Data.Functor.Classes: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (GHC.Internal.Data.Either.Either a)
- Data.Functor.Classes: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (GHC.Internal.Data.Functor.Const.Const a)
- Data.Functor.Classes: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord2 ((,,) a)
- Data.Functor.Classes: instance GHC.Classes.Ord c => Data.Functor.Classes.Ord1 (GHC.Internal.Generics.K1 i c)
- Data.Functor.Compose: instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Classes.Eq (f (g a)) => GHC.Classes.Eq (Data.Functor.Compose.Compose f g a)
- Data.Functor.Compose: instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Classes.Ord (f (g a)) => GHC.Classes.Ord (Data.Functor.Compose.Compose f g a)
- Data.Functor.Product: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Classes.Eq (f a), GHC.Classes.Eq (g a)) => GHC.Classes.Eq (Data.Functor.Product.Product f g a)
- Data.Functor.Product: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Classes.Ord (f a), GHC.Classes.Ord (g a)) => GHC.Classes.Ord (Data.Functor.Product.Product f g a)
- Data.Functor.Sum: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Classes.Eq (f a), GHC.Classes.Eq (g a)) => GHC.Classes.Eq (Data.Functor.Sum.Sum f g a)
- Data.Functor.Sum: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Classes.Ord (f a), GHC.Classes.Ord (g a)) => GHC.Classes.Ord (Data.Functor.Sum.Sum f g a)
- Data.Semigroup: instance (GHC.Classes.Ord a, GHC.Internal.Enum.Bounded a) => GHC.Internal.Base.Monoid (Data.Semigroup.Max a)
- Data.Semigroup: instance (GHC.Classes.Ord a, GHC.Internal.Enum.Bounded a) => GHC.Internal.Base.Monoid (Data.Semigroup.Min a)
- Data.Semigroup: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semigroup.Arg a b)
- Data.Semigroup: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semigroup.First a)
- Data.Semigroup: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semigroup.Last a)
- Data.Semigroup: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semigroup.Max a)
- Data.Semigroup: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Semigroup.Min a)
- Data.Semigroup: instance GHC.Classes.Eq m => GHC.Classes.Eq (Data.Semigroup.WrappedMonoid m)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semigroup.Arg a b)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semigroup.First a)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semigroup.Last a)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semigroup.Max a)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Semigroup.Min a)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Internal.Base.Semigroup (Data.Semigroup.Max a)
- Data.Semigroup: instance GHC.Classes.Ord a => GHC.Internal.Base.Semigroup (Data.Semigroup.Min a)
- Data.Semigroup: instance GHC.Classes.Ord m => GHC.Classes.Ord (Data.Semigroup.WrappedMonoid m)
- GHC.Base: data IOPort# a (b :: TYPE 'BoxedRep l) :: UnliftedType
- GHC.Base: newIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). State# d -> (# State# d, IOPort# d a #)
- GHC.Base: readIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). IOPort# d a -> State# d -> (# State# d, a #)
- GHC.Base: writeIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). IOPort# d a -> a -> State# d -> (# State# d, Int# #)
- GHC.ExecutionStack.Internal: Location :: String -> String -> Maybe SrcLoc -> Location
- GHC.ExecutionStack.Internal: SrcLoc :: String -> Int -> Int -> SrcLoc
- GHC.ExecutionStack.Internal: [functionName] :: Location -> String
- GHC.ExecutionStack.Internal: [objectName] :: Location -> String
- GHC.ExecutionStack.Internal: [sourceColumn] :: SrcLoc -> Int
- GHC.ExecutionStack.Internal: [sourceFile] :: SrcLoc -> String
- GHC.ExecutionStack.Internal: [sourceLine] :: SrcLoc -> Int
- GHC.ExecutionStack.Internal: [srcLoc] :: Location -> Maybe SrcLoc
- GHC.ExecutionStack.Internal: collectStackTrace :: IO (Maybe StackTrace)
- GHC.ExecutionStack.Internal: data Location
- GHC.ExecutionStack.Internal: data SrcLoc
- GHC.ExecutionStack.Internal: data StackTrace
- GHC.ExecutionStack.Internal: invalidateDebugCache :: IO ()
- GHC.ExecutionStack.Internal: showStackFrames :: [Location] -> ShowS
- GHC.ExecutionStack.Internal: stackDepth :: StackTrace -> Int
- GHC.ExecutionStack.Internal: stackFrames :: StackTrace -> Maybe [Location]
- GHC.Exts: data IOPort# a (b :: TYPE 'BoxedRep l) :: UnliftedType
- GHC.Exts: newIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). State# d -> (# State# d, IOPort# d a #)
- GHC.Exts: pattern KindRepVar :: () => !KindBndr -> KindRep
- GHC.Exts: pattern KindRepTYPE :: () => !RuntimeRep -> KindRep
- GHC.Exts: readIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). IOPort# d a -> State# d -> (# State# d, a #)
- GHC.Exts: sameIOPort# :: forall {l :: Levity} s (a :: TYPE ('BoxedRep l)). IOPort# s a -> IOPort# s a -> Int#
- GHC.Exts: writeIOPort# :: forall {l :: Levity} d (a :: TYPE ('BoxedRep l)). IOPort# d a -> a -> State# d -> (# State# d, Int# #)
- GHC.IOPort: IOPort :: IOPort# RealWorld a -> IOPort a
- GHC.IOPort: data IOPort a
- GHC.IOPort: doubleReadException :: SomeException
- GHC.IOPort: newEmptyIOPort :: IO (IOPort a)
- GHC.IOPort: newIOPort :: a -> IO (IOPort a)
- GHC.IOPort: readIOPort :: IOPort a -> IO a
- GHC.IOPort: writeIOPort :: IOPort a -> a -> IO Bool
- GHC.Num: IN :: ByteArray# -> Integer
- GHC.Num: IP :: ByteArray# -> Integer
- GHC.Num: IS :: Int# -> Integer
- GHC.Num: NB :: ByteArray# -> Natural
- GHC.Num: NS :: Word# -> Natural
- GHC.Num: data Integer
- GHC.Num: data Natural
- GHC.Num: integerAbs :: Integer -> Integer
- GHC.Num: integerAdd :: Integer -> Integer -> Integer
- GHC.Num: integerAnd :: Integer -> Integer -> Integer
- GHC.Num: integerBit :: Word -> Integer
- GHC.Num: integerBit# :: Word# -> Integer
- GHC.Num: integerCheck :: Integer -> Bool
- GHC.Num: integerCheck# :: Integer -> Bool#
- GHC.Num: integerCompare :: Integer -> Integer -> Ordering
- GHC.Num: integerComplement :: Integer -> Integer
- GHC.Num: integerDecodeDouble# :: Double# -> (# Integer, Int# #)
- GHC.Num: integerDiv :: Integer -> Integer -> Integer
- GHC.Num: integerDivMod :: Integer -> Integer -> (Integer, Integer)
- GHC.Num: integerDivMod# :: Integer -> Integer -> (# Integer, Integer #)
- GHC.Num: integerEncodeDouble :: Integer -> Int -> Double
- GHC.Num: integerEncodeDouble# :: Integer -> Int# -> Double#
- GHC.Num: integerEncodeFloat# :: Integer -> Int# -> Float#
- GHC.Num: integerEq :: Integer -> Integer -> Bool
- GHC.Num: integerEq# :: Integer -> Integer -> Bool#
- GHC.Num: integerFromAddr :: Word# -> Addr# -> Bool# -> IO Integer
- GHC.Num: integerFromAddr# :: Word# -> Addr# -> Bool# -> State# s -> (# State# s, Integer #)
- GHC.Num: integerFromBigNat# :: BigNat# -> Integer
- GHC.Num: integerFromBigNatNeg# :: BigNat# -> Integer
- GHC.Num: integerFromBigNatSign# :: Int# -> BigNat# -> Integer
- GHC.Num: integerFromByteArray :: Word# -> ByteArray# -> Word# -> Bool# -> Integer
- GHC.Num: integerFromByteArray# :: Word# -> ByteArray# -> Word# -> Bool# -> State# s -> (# State# s, Integer #)
- GHC.Num: integerFromInt :: Int -> Integer
- GHC.Num: integerFromInt# :: Int# -> Integer
- GHC.Num: integerFromInt64# :: Int64# -> Integer
- GHC.Num: integerFromNatural :: Natural -> Integer
- GHC.Num: integerFromWord :: Word -> Integer
- GHC.Num: integerFromWord# :: Word# -> Integer
- GHC.Num: integerFromWord64# :: Word64# -> Integer
- GHC.Num: integerFromWordList :: Bool -> [Word] -> Integer
- GHC.Num: integerFromWordNeg# :: Word# -> Integer
- GHC.Num: integerFromWordSign# :: Int# -> Word# -> Integer
- GHC.Num: integerGcd :: Integer -> Integer -> Integer
- GHC.Num: integerGcde :: Integer -> Integer -> (Integer, Integer, Integer)
- GHC.Num: integerGcde# :: Integer -> Integer -> (# Integer, Integer, Integer #)
- GHC.Num: integerGe :: Integer -> Integer -> Bool
- GHC.Num: integerGe# :: Integer -> Integer -> Bool#
- GHC.Num: integerGt :: Integer -> Integer -> Bool
- GHC.Num: integerGt# :: Integer -> Integer -> Bool#
- GHC.Num: integerIsNegative :: Integer -> Bool
- GHC.Num: integerIsNegative# :: Integer -> Bool#
- GHC.Num: integerIsOne :: Integer -> Bool
- GHC.Num: integerIsPowerOf2# :: Integer -> (# (# #) | Word# #)
- GHC.Num: integerIsZero :: Integer -> Bool
- GHC.Num: integerLcm :: Integer -> Integer -> Integer
- GHC.Num: integerLe :: Integer -> Integer -> Bool
- GHC.Num: integerLe# :: Integer -> Integer -> Bool#
- GHC.Num: integerLog2 :: Integer -> Word
- GHC.Num: integerLog2# :: Integer -> Word#
- GHC.Num: integerLogBase :: Integer -> Integer -> Word
- GHC.Num: integerLogBase# :: Integer -> Integer -> Word#
- GHC.Num: integerLogBaseWord :: Word -> Integer -> Word
- GHC.Num: integerLogBaseWord# :: Word# -> Integer -> Word#
- GHC.Num: integerLt :: Integer -> Integer -> Bool
- GHC.Num: integerLt# :: Integer -> Integer -> Bool#
- GHC.Num: integerMod :: Integer -> Integer -> Integer
- GHC.Num: integerMul :: Integer -> Integer -> Integer
- GHC.Num: integerNe :: Integer -> Integer -> Bool
- GHC.Num: integerNe# :: Integer -> Integer -> Bool#
- GHC.Num: integerNegate :: Integer -> Integer
- GHC.Num: integerOne :: Integer
- GHC.Num: integerOr :: Integer -> Integer -> Integer
- GHC.Num: integerPopCount# :: Integer -> Int#
- GHC.Num: integerPowMod# :: Integer -> Integer -> Natural -> (# Natural | () #)
- GHC.Num: integerQuot :: Integer -> Integer -> Integer
- GHC.Num: integerQuotRem :: Integer -> Integer -> (Integer, Integer)
- GHC.Num: integerQuotRem# :: Integer -> Integer -> (# Integer, Integer #)
- GHC.Num: integerRecipMod# :: Integer -> Natural -> (# Natural | () #)
- GHC.Num: integerRem :: Integer -> Integer -> Integer
- GHC.Num: integerShiftL :: Integer -> Word -> Integer
- GHC.Num: integerShiftL# :: Integer -> Word# -> Integer
- GHC.Num: integerShiftR :: Integer -> Word -> Integer
- GHC.Num: integerShiftR# :: Integer -> Word# -> Integer
- GHC.Num: integerSignum :: Integer -> Integer
- GHC.Num: integerSignum# :: Integer -> Int#
- GHC.Num: integerSizeInBase# :: Word# -> Integer -> Word#
- GHC.Num: integerSqr :: Integer -> Integer
- GHC.Num: integerSub :: Integer -> Integer -> Integer
- GHC.Num: integerTestBit :: Integer -> Word -> Bool
- GHC.Num: integerTestBit# :: Integer -> Word# -> Bool#
- GHC.Num: integerToAddr :: Integer -> Addr# -> Bool# -> IO Word
- GHC.Num: integerToAddr# :: Integer -> Addr# -> Bool# -> State# s -> (# State# s, Word# #)
- GHC.Num: integerToBigNatClamp# :: Integer -> BigNat#
- GHC.Num: integerToBigNatSign# :: Integer -> (# Int#, BigNat# #)
- GHC.Num: integerToInt :: Integer -> Int
- GHC.Num: integerToInt# :: Integer -> Int#
- GHC.Num: integerToInt64# :: Integer -> Int64#
- GHC.Num: integerToMutableByteArray :: Integer -> MutableByteArray# RealWorld -> Word# -> Bool# -> IO Word
- GHC.Num: integerToMutableByteArray# :: Integer -> MutableByteArray# s -> Word# -> Bool# -> State# s -> (# State# s, Word# #)
- GHC.Num: integerToNatural :: Integer -> Natural
- GHC.Num: integerToNaturalClamp :: Integer -> Natural
- GHC.Num: integerToNaturalThrow :: Integer -> Natural
- GHC.Num: integerToWord :: Integer -> Word
- GHC.Num: integerToWord# :: Integer -> Word#
- GHC.Num: integerToWord64# :: Integer -> Word64#
- GHC.Num: integerXor :: Integer -> Integer -> Integer
- GHC.Num: integerZero :: Integer
- GHC.Num: naturalAdd :: Natural -> Natural -> Natural
- GHC.Num: naturalAnd :: Natural -> Natural -> Natural
- GHC.Num: naturalAndNot :: Natural -> Natural -> Natural
- GHC.Num: naturalBit :: Word -> Natural
- GHC.Num: naturalBit# :: Word# -> Natural
- GHC.Num: naturalCheck :: Natural -> Bool
- GHC.Num: naturalCheck# :: Natural -> Bool#
- GHC.Num: naturalClearBit :: Natural -> Word -> Natural
- GHC.Num: naturalClearBit# :: Natural -> Word# -> Natural
- GHC.Num: naturalCompare :: Natural -> Natural -> Ordering
- GHC.Num: naturalComplementBit :: Natural -> Word -> Natural
- GHC.Num: naturalComplementBit# :: Natural -> Word# -> Natural
- GHC.Num: naturalEncodeDouble# :: Natural -> Int# -> Double#
- GHC.Num: naturalEncodeFloat# :: Natural -> Int# -> Float#
- GHC.Num: naturalEq :: Natural -> Natural -> Bool
- GHC.Num: naturalEq# :: Natural -> Natural -> Bool#
- GHC.Num: naturalFromAddr :: Word# -> Addr# -> Bool# -> IO Natural
- GHC.Num: naturalFromAddr# :: Word# -> Addr# -> Bool# -> State# s -> (# State# s, Natural #)
- GHC.Num: naturalFromBigNat# :: BigNat# -> Natural
- GHC.Num: naturalFromByteArray# :: Word# -> ByteArray# -> Word# -> Bool# -> State# s -> (# State# s, Natural #)
- GHC.Num: naturalFromWord :: Word -> Natural
- GHC.Num: naturalFromWord# :: Word# -> Natural
- GHC.Num: naturalFromWord2# :: Word# -> Word# -> Natural
- GHC.Num: naturalFromWordList :: [Word] -> Natural
- GHC.Num: naturalGcd :: Natural -> Natural -> Natural
- GHC.Num: naturalGe :: Natural -> Natural -> Bool
- GHC.Num: naturalGe# :: Natural -> Natural -> Bool#
- GHC.Num: naturalGt :: Natural -> Natural -> Bool
- GHC.Num: naturalGt# :: Natural -> Natural -> Bool#
- GHC.Num: naturalIsOne :: Natural -> Bool
- GHC.Num: naturalIsPowerOf2# :: Natural -> (# (# #) | Word# #)
- GHC.Num: naturalIsZero :: Natural -> Bool
- GHC.Num: naturalLcm :: Natural -> Natural -> Natural
- GHC.Num: naturalLe :: Natural -> Natural -> Bool
- GHC.Num: naturalLe# :: Natural -> Natural -> Bool#
- GHC.Num: naturalLog2 :: Natural -> Word
- GHC.Num: naturalLog2# :: Natural -> Word#
- GHC.Num: naturalLogBase :: Natural -> Natural -> Word
- GHC.Num: naturalLogBase# :: Natural -> Natural -> Word#
- GHC.Num: naturalLogBaseWord :: Word -> Natural -> Word
- GHC.Num: naturalLogBaseWord# :: Word# -> Natural -> Word#
- GHC.Num: naturalLt :: Natural -> Natural -> Bool
- GHC.Num: naturalLt# :: Natural -> Natural -> Bool#
- GHC.Num: naturalMul :: Natural -> Natural -> Natural
- GHC.Num: naturalNe :: Natural -> Natural -> Bool
- GHC.Num: naturalNe# :: Natural -> Natural -> Bool#
- GHC.Num: naturalNegate :: Natural -> Natural
- GHC.Num: naturalOne :: Natural
- GHC.Num: naturalOr :: Natural -> Natural -> Natural
- GHC.Num: naturalPopCount :: Natural -> Word
- GHC.Num: naturalPopCount# :: Natural -> Word#
- GHC.Num: naturalPowMod :: Natural -> Natural -> Natural -> Natural
- GHC.Num: naturalQuot :: Natural -> Natural -> Natural
- GHC.Num: naturalQuotRem :: Natural -> Natural -> (Natural, Natural)
- GHC.Num: naturalQuotRem# :: Natural -> Natural -> (# Natural, Natural #)
- GHC.Num: naturalRem :: Natural -> Natural -> Natural
- GHC.Num: naturalSetBit :: Natural -> Word -> Natural
- GHC.Num: naturalSetBit# :: Natural -> Word# -> Natural
- GHC.Num: naturalShiftL :: Natural -> Word -> Natural
- GHC.Num: naturalShiftL# :: Natural -> Word# -> Natural
- GHC.Num: naturalShiftR :: Natural -> Word -> Natural
- GHC.Num: naturalShiftR# :: Natural -> Word# -> Natural
- GHC.Num: naturalSignum :: Natural -> Natural
- GHC.Num: naturalSizeInBase# :: Word# -> Natural -> Word#
- GHC.Num: naturalSqr :: Natural -> Natural
- GHC.Num: naturalSub :: Natural -> Natural -> (# (# #) | Natural #)
- GHC.Num: naturalSubThrow :: Natural -> Natural -> Natural
- GHC.Num: naturalSubUnsafe :: Natural -> Natural -> Natural
- GHC.Num: naturalTestBit :: Natural -> Word -> Bool
- GHC.Num: naturalTestBit# :: Natural -> Word# -> Bool#
- GHC.Num: naturalToAddr :: Natural -> Addr# -> Bool# -> IO Word
- GHC.Num: naturalToAddr# :: Natural -> Addr# -> Bool# -> State# s -> (# State# s, Word# #)
- GHC.Num: naturalToBigNat# :: Natural -> BigNat#
- GHC.Num: naturalToMutableByteArray# :: Natural -> MutableByteArray# s -> Word# -> Bool# -> State# s -> (# State# s, Word# #)
- GHC.Num: naturalToWord :: Natural -> Word
- GHC.Num: naturalToWord# :: Natural -> Word#
- GHC.Num: naturalToWordClamp :: Natural -> Word
- GHC.Num: naturalToWordClamp# :: Natural -> Word#
- GHC.Num: naturalToWordMaybe# :: Natural -> (# (# #) | Word# #)
- GHC.Num: naturalXor :: Natural -> Natural -> Natural
- GHC.Num: naturalZero :: Natural
- GHC.TypeLits.Internal: data Symbol
- GHC.TypeLits.Internal: type family CmpChar (a :: Char) (b :: Char) :: Ordering
- GHC.TypeNats.Internal: data Natural
- GHC.TypeNats.Internal: type family CmpNat (a :: Natural) (b :: Natural) :: Ordering
- System.Timeout: instance GHC.Classes.Eq System.Timeout.Timeout
- Text.Printf: instance (a GHC.Types.~ ()) => Text.Printf.HPrintfType (GHC.Types.IO a)
- Text.Printf: instance (a GHC.Types.~ ()) => Text.Printf.PrintfType (GHC.Types.IO a)
- Text.Printf: instance Text.Printf.IsChar GHC.Types.Char
- Text.Printf: instance Text.Printf.PrintfArg GHC.Num.Integer.Integer
- Text.Printf: instance Text.Printf.PrintfArg GHC.Num.Natural.Natural
- Text.Printf: instance Text.Printf.PrintfArg GHC.Types.Char
- Text.Printf: instance Text.Printf.PrintfArg GHC.Types.Double
- Text.Printf: instance Text.Printf.PrintfArg GHC.Types.Float
- Text.Printf: instance Text.Printf.PrintfArg GHC.Types.Int
- Text.Printf: instance Text.Printf.PrintfArg GHC.Types.Word
+ Control.Concurrent.Chan: instance GHC.Internal.Classes.Eq (Control.Concurrent.Chan.Chan a)
+ Control.Exception: displayExceptionWithInfo :: SomeException -> String
+ Data.Array.Byte: instance GHC.Internal.Classes.Eq (Data.Array.Byte.MutableByteArray s)
+ Data.Array.Byte: instance GHC.Internal.Classes.Eq Data.Array.Byte.ByteArray
+ Data.Array.Byte: instance GHC.Internal.Classes.Ord Data.Array.Byte.ByteArray
+ Data.Complex: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Complex.Complex a)
+ Data.Enum: enumerate :: (Enum a, Bounded a) => [a]
+ Data.Fixed: instance forall k (a :: k). GHC.Internal.Classes.Eq (Data.Fixed.Fixed a)
+ Data.Fixed: instance forall k (a :: k). GHC.Internal.Classes.Ord (Data.Fixed.Fixed a)
+ Data.Foldable1: instance Data.Foldable1.Foldable1 GHC.Internal.Tuple.Solo
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Eq a, GHC.Internal.Classes.Eq b) => Data.Functor.Classes.Eq1 ((,,) a b)
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Eq a, GHC.Internal.Classes.Eq b) => Data.Functor.Classes.Eq2 ((,,,) a b)
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Eq a, GHC.Internal.Classes.Eq b, GHC.Internal.Classes.Eq c) => Data.Functor.Classes.Eq1 ((,,,) a b c)
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Ord a, GHC.Internal.Classes.Ord b) => Data.Functor.Classes.Ord1 ((,,) a b)
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Ord a, GHC.Internal.Classes.Ord b) => Data.Functor.Classes.Ord2 ((,,,) a b)
+ Data.Functor.Classes: instance (GHC.Internal.Classes.Ord a, GHC.Internal.Classes.Ord b, GHC.Internal.Classes.Ord c) => Data.Functor.Classes.Ord1 ((,,,) a b c)
+ Data.Functor.Classes: instance Data.Functor.Classes.Eq1 GHC.Internal.Tuple.Solo
+ Data.Functor.Classes: instance Data.Functor.Classes.Ord1 GHC.Internal.Tuple.Solo
+ Data.Functor.Classes: instance Data.Functor.Classes.Read1 GHC.Internal.Tuple.Solo
+ Data.Functor.Classes: instance Data.Functor.Classes.Show1 GHC.Internal.Tuple.Solo
+ Data.Functor.Classes: instance GHC.Internal.Classes.Eq a => Data.Functor.Classes.Eq1 ((,) a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Eq a => Data.Functor.Classes.Eq1 (GHC.Internal.Data.Either.Either a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Eq a => Data.Functor.Classes.Eq1 (GHC.Internal.Data.Functor.Const.Const a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Eq a => Data.Functor.Classes.Eq2 ((,,) a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Eq c => Data.Functor.Classes.Eq1 (GHC.Internal.Generics.K1 i c)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Ord a => Data.Functor.Classes.Ord1 ((,) a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Ord a => Data.Functor.Classes.Ord1 (GHC.Internal.Data.Either.Either a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Ord a => Data.Functor.Classes.Ord1 (GHC.Internal.Data.Functor.Const.Const a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Ord a => Data.Functor.Classes.Ord2 ((,,) a)
+ Data.Functor.Classes: instance GHC.Internal.Classes.Ord c => Data.Functor.Classes.Ord1 (GHC.Internal.Generics.K1 i c)
+ Data.Functor.Compose: instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Classes.Eq (f (g a)) => GHC.Internal.Classes.Eq (Data.Functor.Compose.Compose f g a)
+ Data.Functor.Compose: instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Classes.Ord (f (g a)) => GHC.Internal.Classes.Ord (Data.Functor.Compose.Compose f g a)
+ Data.Functor.Product: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Internal.Classes.Eq (f a), GHC.Internal.Classes.Eq (g a)) => GHC.Internal.Classes.Eq (Data.Functor.Product.Product f g a)
+ Data.Functor.Product: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Internal.Classes.Ord (f a), GHC.Internal.Classes.Ord (g a)) => GHC.Internal.Classes.Ord (Data.Functor.Product.Product f g a)
+ Data.Functor.Sum: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Internal.Classes.Eq (f a), GHC.Internal.Classes.Eq (g a)) => GHC.Internal.Classes.Eq (Data.Functor.Sum.Sum f g a)
+ Data.Functor.Sum: instance forall k (f :: k -> *) (a :: k) (g :: k -> *). (GHC.Internal.Classes.Ord (f a), GHC.Internal.Classes.Ord (g a)) => GHC.Internal.Classes.Ord (Data.Functor.Sum.Sum f g a)
+ Data.Semigroup: instance (GHC.Internal.Classes.Ord a, GHC.Internal.Enum.Bounded a) => GHC.Internal.Base.Monoid (Data.Semigroup.Max a)
+ Data.Semigroup: instance (GHC.Internal.Classes.Ord a, GHC.Internal.Enum.Bounded a) => GHC.Internal.Base.Monoid (Data.Semigroup.Min a)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Semigroup.Arg a b)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Semigroup.First a)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Semigroup.Last a)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Semigroup.Max a)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq a => GHC.Internal.Classes.Eq (Data.Semigroup.Min a)
+ Data.Semigroup: instance GHC.Internal.Classes.Eq m => GHC.Internal.Classes.Eq (Data.Semigroup.WrappedMonoid m)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Base.Semigroup (Data.Semigroup.Max a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Base.Semigroup (Data.Semigroup.Min a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (Data.Semigroup.Arg a b)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (Data.Semigroup.First a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (Data.Semigroup.Last a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (Data.Semigroup.Max a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord a => GHC.Internal.Classes.Ord (Data.Semigroup.Min a)
+ Data.Semigroup: instance GHC.Internal.Classes.Ord m => GHC.Internal.Classes.Ord (Data.Semigroup.WrappedMonoid m)
+ GHC.Base: annotateStack# :: b -> (State# d -> (# State# d, a #)) -> State# d -> (# State# d, a #)
+ GHC.Base: setOtherThreadAllocationCounter# :: Int64# -> ThreadId# -> State# RealWorld -> State# RealWorld
+ GHC.Exts: annotateStack# :: b -> (State# d -> (# State# d, a #)) -> State# d -> (# State# d, a #)
+ GHC.Exts: pattern KindRepVar :: () => KindBndr -> KindRep
+ GHC.Exts: pattern KindRepTYPE :: () => RuntimeRep -> KindRep
+ GHC.Exts: setOtherThreadAllocationCounter# :: Int64# -> ThreadId# -> State# RealWorld -> State# RealWorld
+ GHC.RTS.Flags: instance GHC.Internal.Classes.Eq GHC.RTS.Flags.IoManagerFlag
+ GHC.RTS.Flags: instance GHC.Internal.Enum.Enum GHC.RTS.Flags.IoManagerFlag
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.CCFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.ConcFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.DebugFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.DoCostCentres
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.DoHeapProfile
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.DoTrace
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.GCFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.GiveGCStats
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.HpcFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.MiscFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.ParFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.ProfFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.RTSFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.TickyFlags
+ GHC.RTS.Flags: instance GHC.Internal.Generics.Generic GHC.RTS.Flags.TraceFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.CCFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.ConcFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.DebugFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.DoCostCentres
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.DoHeapProfile
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.DoTrace
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.GCFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.GiveGCStats
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.HpcFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.IoManagerFlag
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.MiscFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.ParFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.ProfFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.RTSFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.TickyFlags
+ GHC.RTS.Flags: instance GHC.Internal.Show.Show GHC.RTS.Flags.TraceFlags
+ GHC.Stats: instance GHC.Internal.Generics.Generic GHC.Stats.GCDetails
+ GHC.Stats: instance GHC.Internal.Generics.Generic GHC.Stats.RTSStats
+ GHC.Stats: instance GHC.Internal.Read.Read GHC.Stats.GCDetails
+ GHC.Stats: instance GHC.Internal.Read.Read GHC.Stats.RTSStats
+ GHC.Stats: instance GHC.Internal.Show.Show GHC.Stats.GCDetails
+ GHC.Stats: instance GHC.Internal.Show.Show GHC.Stats.RTSStats
+ System.Timeout: instance GHC.Internal.Classes.Eq System.Timeout.Timeout
+ Text.Printf: instance (a GHC.Internal.Types.~ ()) => Text.Printf.HPrintfType (GHC.Internal.Types.IO a)
+ Text.Printf: instance (a GHC.Internal.Types.~ ()) => Text.Printf.PrintfType (GHC.Internal.Types.IO a)
+ Text.Printf: instance Text.Printf.IsChar GHC.Internal.Types.Char
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Bignum.Integer.Integer
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Bignum.Natural.Natural
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Types.Char
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Types.Double
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Types.Float
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Types.Int
+ Text.Printf: instance Text.Printf.PrintfArg GHC.Internal.Types.Word
- Control.Monad: fail :: MonadFail m => String -> m a
+ Control.Monad: fail :: (MonadFail m, HasCallStack) => String -> m a
- Control.Monad.Fail: fail :: MonadFail m => String -> m a
+ Control.Monad.Fail: fail :: (MonadFail m, HasCallStack) => String -> m a
- Data.Complex: (:+) :: !a -> !a -> Complex a
+ Data.Complex: (:+) :: a -> a -> Complex a
- Data.List.NonEmpty: unzip :: Functor f => f (a, b) -> (f a, f b)
+ Data.List.NonEmpty: unzip :: NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)
- GHC.Arr: Array :: !i -> !i -> {-# UNPACK #-} !Int -> Array# e -> Array i e
+ GHC.Arr: Array :: i -> i -> Int -> Array# e -> Array i e
- GHC.Arr: STArray :: !i -> !i -> {-# UNPACK #-} !Int -> MutableArray# s e -> STArray s i e
+ GHC.Arr: STArray :: i -> i -> Int -> MutableArray# s e -> STArray s i e
- GHC.Base: KindRepTYPE :: !RuntimeRep -> KindRep
+ GHC.Base: KindRepTYPE :: RuntimeRep -> KindRep
- GHC.Base: KindRepVar :: !KindBndr -> KindRep
+ GHC.Base: KindRepVar :: KindBndr -> KindRep
- GHC.Fingerprint: Fingerprint :: {-# UNPACK #-} !Word64 -> {-# UNPACK #-} !Word64 -> Fingerprint
+ GHC.Fingerprint: Fingerprint :: Word64 -> Word64 -> Fingerprint
- GHC.Fingerprint.Type: Fingerprint :: {-# UNPACK #-} !Word64 -> {-# UNPACK #-} !Word64 -> Fingerprint
+ GHC.Fingerprint.Type: Fingerprint :: Word64 -> Word64 -> Fingerprint
- GHC.ForeignPtr: MallocPtr :: MutableByteArray# RealWorld -> !IORef Finalizers -> ForeignPtrContents
+ GHC.ForeignPtr: MallocPtr :: MutableByteArray# RealWorld -> IORef Finalizers -> ForeignPtrContents
- GHC.ForeignPtr: PlainForeignPtr :: !IORef Finalizers -> ForeignPtrContents
+ GHC.ForeignPtr: PlainForeignPtr :: IORef Finalizers -> ForeignPtrContents
- GHC.IO.Buffer: Buffer :: !RawBuffer e -> BufferState -> !Int -> !Word64 -> !Int -> !Int -> Buffer e
+ GHC.IO.Buffer: Buffer :: RawBuffer e -> BufferState -> Int -> Word64 -> Int -> Int -> Buffer e
- GHC.IO.Buffer: [bufL] :: Buffer e -> !Int
+ GHC.IO.Buffer: [bufL] :: Buffer e -> Int
- GHC.IO.Buffer: [bufOffset] :: Buffer e -> !Word64
+ GHC.IO.Buffer: [bufOffset] :: Buffer e -> Word64
- GHC.IO.Buffer: [bufR] :: Buffer e -> !Int
+ GHC.IO.Buffer: [bufR] :: Buffer e -> Int
- GHC.IO.Buffer: [bufRaw] :: Buffer e -> !RawBuffer e
+ GHC.IO.Buffer: [bufRaw] :: Buffer e -> RawBuffer e
- GHC.IO.Buffer: [bufSize] :: Buffer e -> !Int
+ GHC.IO.Buffer: [bufSize] :: Buffer e -> Int
- GHC.IO.FD: FD :: {-# UNPACK #-} !CInt -> {-# UNPACK #-} !Int -> FD
+ GHC.IO.FD: FD :: CInt -> Int -> FD
- GHC.IO.FD: [fdFD] :: FD -> {-# UNPACK #-} !CInt
+ GHC.IO.FD: [fdFD] :: FD -> CInt
- GHC.IO.FD: [fdIsNonBlocking] :: FD -> {-# UNPACK #-} !Int
+ GHC.IO.FD: [fdIsNonBlocking] :: FD -> Int
- GHC.IO.Handle.Types: DuplexHandle :: FilePath -> !MVar Handle__ -> !MVar Handle__ -> Handle
+ GHC.IO.Handle.Types: DuplexHandle :: FilePath -> MVar Handle__ -> MVar Handle__ -> Handle
- GHC.IO.Handle.Types: FileHandle :: FilePath -> !MVar Handle__ -> Handle
+ GHC.IO.Handle.Types: FileHandle :: FilePath -> MVar Handle__ -> Handle
- GHC.IO.Handle.Types: Handle__ :: !dev -> HandleType -> !IORef (Buffer Word8) -> BufferMode -> !IORef (dec_state, Buffer Word8) -> !IORef (Buffer CharBufElem) -> !IORef (BufferList CharBufElem) -> Maybe (TextEncoder enc_state) -> Maybe (TextDecoder dec_state) -> Maybe TextEncoding -> Newline -> Newline -> Maybe (MVar Handle__) -> Handle__
+ GHC.IO.Handle.Types: Handle__ :: dev -> HandleType -> IORef (Buffer Word8) -> BufferMode -> IORef (dec_state, Buffer Word8) -> IORef (Buffer CharBufElem) -> IORef (BufferList CharBufElem) -> Maybe (TextEncoder enc_state) -> Maybe (TextDecoder dec_state) -> Maybe TextEncoding -> Newline -> Newline -> Maybe (MVar Handle__) -> Handle__
- GHC.IO.Handle.Types: [haBuffers] :: Handle__ -> !IORef (BufferList CharBufElem)
+ GHC.IO.Handle.Types: [haBuffers] :: Handle__ -> IORef (BufferList CharBufElem)
- GHC.IO.Handle.Types: [haByteBuffer] :: Handle__ -> !IORef (Buffer Word8)
+ GHC.IO.Handle.Types: [haByteBuffer] :: Handle__ -> IORef (Buffer Word8)
- GHC.IO.Handle.Types: [haCharBuffer] :: Handle__ -> !IORef (Buffer CharBufElem)
+ GHC.IO.Handle.Types: [haCharBuffer] :: Handle__ -> IORef (Buffer CharBufElem)
- GHC.IO.Handle.Types: [haDevice] :: Handle__ -> !dev
+ GHC.IO.Handle.Types: [haDevice] :: Handle__ -> dev
- GHC.IO.Handle.Types: [haLastDecode] :: Handle__ -> !IORef (dec_state, Buffer Word8)
+ GHC.IO.Handle.Types: [haLastDecode] :: Handle__ -> IORef (dec_state, Buffer Word8)
- GHC.Real: (:%) :: !a -> !a -> Ratio a
+ GHC.Real: (:%) :: a -> a -> Ratio a
- GHC.Stack.CloneStack: StackSnapshot :: !StackSnapshot# -> StackSnapshot
+ GHC.Stack.CloneStack: StackSnapshot :: StackSnapshot# -> StackSnapshot
- Prelude: fail :: MonadFail m => String -> m a
+ Prelude: fail :: (MonadFail m, HasCallStack) => String -> m a
- Type.Reflection: [SomeTypeRep] :: forall k (a :: k). !TypeRep a -> SomeTypeRep
+ Type.Reflection: [SomeTypeRep] :: forall k (a :: k). TypeRep a -> SomeTypeRep
- Type.Reflection.Unsafe: KindRepTYPE :: !RuntimeRep -> KindRep
+ Type.Reflection.Unsafe: KindRepTYPE :: RuntimeRep -> KindRep
- Type.Reflection.Unsafe: KindRepVar :: !KindBndr -> KindRep
+ Type.Reflection.Unsafe: KindRepVar :: KindBndr -> KindRep

Files

base.cabal view
@@ -4,7 +4,7 @@ -- Make sure you are editing ghc-experimental.cabal.in, not ghc-experimental.cabal  name:           base-version:        4.21.2.0+version:        4.22.0.0 -- NOTE: Don't forget to update ./changelog.md  license:        BSD-3-Clause@@ -30,7 +30,7 @@     default-language: Haskell2010     default-extensions: NoImplicitPrelude     build-depends:-        ghc-internal == 9.1204.*,+        ghc-internal == 9.1401.*,         ghc-prim,      exposed-modules:@@ -170,7 +170,6 @@         , GHC.Exception         , GHC.Exception.Type         , GHC.ExecutionStack-        , GHC.ExecutionStack.Internal         , GHC.Exts         , GHC.Fingerprint         , GHC.Fingerprint.Type@@ -220,6 +219,9 @@         , GHC.MVar         , GHC.Natural         , GHC.Num+        , GHC.Num.Integer+        , GHC.Num.Natural+        , GHC.Num.BigNat         , GHC.OldList         , GHC.OverloadedLabels         , GHC.Profiling@@ -244,9 +246,7 @@         , GHC.TopHandler         , GHC.TypeError         , GHC.TypeLits-        , GHC.TypeLits.Internal         , GHC.TypeNats-        , GHC.TypeNats.Internal         , GHC.Unicode         , GHC.Weak         , GHC.Weak.Finalize@@ -271,13 +271,6 @@         , Type.Reflection         , Type.Reflection.Unsafe         , Unsafe.Coerce-          -- TODO: remove-        , GHC.IOPort--    reexported-modules:-          GHC.Num.Integer-        , GHC.Num.Natural-        , GHC.Num.BigNat      if os(windows)         exposed-modules:
changelog.md view
@@ -1,13 +1,34 @@ # Changelog for [`base` package](http://hackage.haskell.org/package/base) -## 4.21.2.0 *March 2026*-  * Expose `Backtraces` constructor and fields ([CLC proposal #199](https://github.com/haskell/core-libraries-committee/issues/199), [#26049](https://gitlab.haskell.org/ghc/ghc/-/issues/26049))-  * Store `StackTrace` and `StackSnapshot` in `Backtraces`, deferring decoding until display-  * Evaluate backtraces for "error" exceptions at the moment they are thrown ([CLC proposal #383](https://github.com/haskell/core-libraries-committee/issues/383), [#26751](https://gitlab.haskell.org/ghc/ghc/-/issues/26751))--## 4.21.1.0 *Sept 2024*+## 4.22.0.0 *December 2025*+  * Shipped with GHC 9.14.1+  * The internal `GHC.Weak.Finalize.runFinalizerBatch` function has been deprecated ([CLC proposal #342](https://github.com/haskell/core-libraries-committee/issues/342))+  * Define `displayException` of `SomeAsyncException` to unwrap the exception.+      ([CLC proposal #309](https://github.com/haskell/core-libraries-committee/issues/309))+  * Restrict `Data.List.NonEmpty.unzip` to `NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)`. ([CLC proposal #86](https://github.com/haskell/core-libraries-committee/issues/86))+  * Modify the implementation of `Control.Exception.throw` to avoid call-sites being inferred as diverging via precise exception.+    ([GHC #25066](https://gitlab.haskell.org/ghc/ghc/-/issues/25066), [CLC proposal #290](https://github.com/haskell/core-libraries-committee/issues/290))+  * `Data.List.NonEmpty.{init,last,tails1}` are now defined using only total functions (rather than partial ones). ([CLC proposal #293](https://github.com/haskell/core-libraries-committee/issues/293))+  * `Data.List.NonEmpty` functions now have the same laziness as their `Data.List` counterparts (i.e. make them more strict than they currently are) ([CLC proposal #107](https://github.com/haskell/core-libraries-committee/issues/107))+  * `instance Functor NonEmpty` is now specified using `map` (rather than duplicating code). ([CLC proposal #300](https://github.com/haskell/core-libraries-committee/issues/300))+  * `fail` from `MonadFail` now carries `HasCallStack` constraint. ([CLC proposal #327](https://github.com/haskell/core-libraries-committee/issues/327))+  * The `Data.Enum.enumerate` function was introduced ([CLC #306](https://github.com/haskell/core-libraries-committee/issues/306))+  * Worker threads used by various `base` facilities are now labelled with descriptive thread labels ([CLC proposal #305](https://github.com/haskell/core-libraries-committee/issues/305), [GHC #25452](https://gitlab.haskell.org/ghc/ghc/-/issues/25452)). Specifically, these include:+    * `Control.Concurrent.threadWaitRead`+    * `Control.Concurrent.threadWaitWrite`+    * `Control.Concurrent.threadWaitReadSTM`+    * `Control.Concurrent.threadWaitWriteSTM`+    * `System.Timeout.timeout`+    * `GHC.Conc.Signal.runHandlers`+  * The following internal modules have been removed from `base`, as per [CLC #217](https://github.com/haskell/core-libraries-committee/issues/217):+      * `GHC.TypeLits.Internal`+      * `GHC.TypeNats.Internal`+      * `GHC.ExecutionStack.Internal`.+  * Deprecate `GHC.JS.Prim.Internal.Build`, as per [CLC #329](https://github.com/haskell/core-libraries-committee/issues/329)   * Fix incorrect results of `integerPowMod` when the base is 0 and the exponent is negative, and `integerRecipMod` when the modulus is zero ([#26017](https://gitlab.haskell.org/ghc/ghc/-/issues/26017)).-  * Fix bug where `naturalAndNot` was incorrectly truncating results ([CLC proposal #350](github.com/haskell/core-libraries-committee/issues/350))+  * Fix the rewrite rule for `scanl'` not being strict in the first element of the output list ([#26143](https://gitlab.haskell.org/ghc/ghc/-/issues/26143)).+  * `GHC.Exts.IOPort#` and its related operations have been removed  ([CLC #213](https://github.com/haskell/core-libraries-committee/issues/213))+  * Remove deprecated, unstable heap representation details from `GHC.Exts` ([CLC proposal #212](https://github.com/haskell/core-libraries-committee/issues/212))  ## 4.21.0.0 *December 2024*   * Shipped with GHC 9.12.1@@ -45,8 +66,6 @@       for libraries that define exception-handling combinators like `catch` and       `onException`, such as `base`, or the `exceptions` package.   * Move `Lift ByteArray` and `Lift Fixed` instances into `base` from `template-haskell`. See [CLC proposal #287](https://github.com/haskell/core-libraries-committee/issues/287).-  * Modify the implementation of `Control.Exception.throw` to avoid call-sites being inferred as diverging via precise exception.-    ([GHC #25066](https://gitlab.haskell.org/ghc/ghc/-/issues/25066), [CLC proposal #290](https://github.com/haskell/core-libraries-committee/issues/290))   * Make `Debug.Trace.{traceEventIO,traceMarkerIO}` faster when tracing is disabled. See [CLC proposal #291](https://github.com/haskell/core-libraries-committee/issues/291).   * The exception messages were improved according to [CLC proposal #285](https://github.com/haskell/core-libraries-committee/issues/285). In particular:       * Improve the message of the uncaught exception handler@@ -297,29 +316,29 @@    * Re-export the `IsList` typeclass from the new `GHC.IsList` module. -  * There's a new special function ``withDict`` in ``GHC.Exts``: ::+  * There's a new special function `withDict` in `GHC.Exts`: ::          withDict :: forall {rr :: RuntimeRep} cls meth (r :: TYPE rr). WithDict cls meth => meth -> (cls => r) -> r -    where ``cls`` must be a class containing exactly one method, whose type-    must be ``meth``.+    where `cls` must be a class containing exactly one method, whose type+    must be `meth`. -    This function converts ``meth`` to a type class dictionary.-    It removes the need for ``unsafeCoerce`` in implementation of reflection+    This function converts `meth` to a type class dictionary.+    It removes the need for `unsafeCoerce` in implementation of reflection     libraries. It should be used with care, because it can introduce     incoherent instances. -    For example, the ``withTypeable`` function from the-    ``Type.Reflection`` module can now be defined as: ::+    For example, the `withTypeable` function from the+    `Type.Reflection` module can now be defined as: ::            withTypeable :: forall k (a :: k) rep (r :: TYPE rep). ()                        => TypeRep a -> (Typeable a => r) -> r           withTypeable rep k = withDict @(Typeable a) rep k      Note that the explicit type application is required, as the call to-    ``withDict`` would be ambiguous otherwise.+    `withDict` would be ambiguous otherwise. -    This replaces the old ``GHC.Exts.magicDict``, which required+    This replaces the old `GHC.Exts.magicDict`, which required     an intermediate data type and was less reliable.    * `Data.Word.Word64` and `Data.Int.Int64` are now always represented by@@ -337,17 +356,17 @@    * Shipped with GHC 9.2.4 -  * winio: make consoleReadNonBlocking not wait for any events at all.+  * winio: make `consoleReadNonBlocking` not wait for any events at all. -  * winio: Add support to console handles to handleToHANDLE+  * winio: Add support to console handles to `handleToHANDLE`  ## 4.16.2.0 *May 2022*    * Shipped with GHC 9.2.2 -  * Export GHC.Event.Internal on Windows (#21245)+  * Export `GHC.Event.Internal` on Windows (#21245) -  # Documentation Fixes+  * Documentation Fixes  ## 4.16.1.0 *Feb 2022* @@ -416,7 +435,7 @@      - Newtypes `And`, `Ior`, `Xor` and `Iff` which wrap their argument,       and whose `Semigroup` instances are defined using `(.&.)`, `(.|.)`, `xor`-      and ```\x y -> complement (x `xor` y)```, respectively.+      and `\x y -> complement (x `xor` y)`, respectively.      - `oneBits :: FiniteBits a => a`, `oneBits = complement zeroBits`. 
src/Control/Concurrent.hs view
@@ -265,7 +265,7 @@   -- fdReady does the right thing, but we have to call it in a   -- separate thread, otherwise threadWaitRead won't be interruptible,   -- and this only works with -threaded.-  | threaded  = withThread (waitFd fd False)+  | threaded  = withThread "threadWaitRead worker" (waitFd fd False)   | otherwise = case fd of                   0 -> do _ <- hWaitForInput stdin (-1)                           return ()@@ -286,7 +286,7 @@ threadWaitWrite :: Fd -> IO () threadWaitWrite fd #if defined(mingw32_HOST_OS)-  | threaded  = withThread (waitFd fd True)+  | threaded  = withThread "threadWaitWrite worker" (waitFd fd True)   | otherwise = errorWithoutStackTrace "threadWaitWrite requires -threaded on Windows" #else   = Conc.threadWaitWrite fd@@ -302,8 +302,11 @@ threadWaitReadSTM fd #if defined(mingw32_HOST_OS)   | threaded = do v <- newTVarIO Nothing-                  mask_ $ void $ forkIO $ do result <- try (waitFd fd False)-                                             atomically (writeTVar v $ Just result)+                  mask_ $ void $ forkIO $ do+                    tid <- myThreadId+                    labelThread tid "threadWaitReadSTM worker"+                    result <- try (waitFd fd False)+                    atomically (writeTVar v $ Just result)                   let waitAction = do result <- readTVar v                                       case result of                                         Nothing         -> retry@@ -326,8 +329,11 @@ threadWaitWriteSTM fd #if defined(mingw32_HOST_OS)   | threaded = do v <- newTVarIO Nothing-                  mask_ $ void $ forkIO $ do result <- try (waitFd fd True)-                                             atomically (writeTVar v $ Just result)+                  mask_ $ void $ forkIO $ do+                    tid <- myThreadId+                    labelThread tid "threadWaitWriteSTM worker"+                    result <- try (waitFd fd True)+                    atomically (writeTVar v $ Just result)                   let waitAction = do result <- readTVar v                                       case result of                                         Nothing         -> retry@@ -343,10 +349,14 @@ #if defined(mingw32_HOST_OS) foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool -withThread :: IO a -> IO a-withThread io = do+withThread :: String -> IO a -> IO a+withThread label io = do   m <- newEmptyMVar-  _ <- mask_ $ forkIO $ try io >>= putMVar m+  _ <- mask_ $ forkIO $ do+    tid <- myThreadId+    labelThread tid label+    result <- try io+    putMVar m result   x <- takeMVar m   case x of     Right a -> return a
src/Control/Exception.hs view
@@ -116,7 +116,9 @@      bracket_,      bracketOnError,      finally,-     onException+     onException,+     -- ** Printing+     displayExceptionWithInfo       ) where 
src/Control/Exception/Backtrace.hs view
@@ -51,7 +51,7 @@     , getBacktraceMechanismState     , setBacktraceMechanismState       -- * Collecting backtraces-    , Backtraces(..)+    , Backtraces     , displayBacktraces     , collectBacktraces     ) where
src/Control/Monad/Fix.hs view
@@ -10,11 +10,108 @@ -- Stability   :  stable -- Portability :  portable ----- Monadic fixpoints.+-- Monadic fixpoints, used for desugaring of @{-# LANGUAGE RecursiveDo #-}@. ----- For a detailed discussion, see Levent Erkok's thesis,--- /Value Recursion in Monadic Computations/, Oregon Graduate Institute, 2002.+-- Consider the generalized version of so-called @repmin@+-- (/replace with minimum/) problem:+-- accumulate elements of a container into a 'Monoid'+-- and modify each element using the final accumulator. --+-- @+-- repmin+--   :: (Functor t, Foldable t, Monoid b)+--   => (a -> b) -> (a -> b -> c) -> t a -> t c+-- repmin f g as = fmap (\`g\` foldMap f as) as+-- @+--+-- The naive implementation as above makes two traversals. Can we do better+-- and achieve the goal in a single pass? It's seemingly impossible, because we would+-- have to know the future,+-- but lazy evaluation comes to the rescue:+--+-- @+-- import Data.Traversable (mapAccumR)+--+-- repmin+--   :: (Traversable t, Monoid b)+--   => (a -> b) -> (a -> b -> c) -> t a -> t c+-- repmin f g as =+--   let (b, cs) = mapAccumR (\\acc a -> (f a <> acc, g a b)) mempty as in cs+-- @+--+-- How can we check that @repmin@ indeed traverses only once?+-- Let's run it on an infinite input:+--+-- >>> import Data.Monoid (All(..))+-- >>> take 3 $ repmin All (const id) ([True, True, False] ++ undefined)+-- [All {getAll = False},All {getAll = False},All {getAll = False}]+--+-- So far so good, but can we generalise @g@ to return a monadic value @a -> b -> m c@?+-- The following does not work, complaining that @b@ is not in scope:+--+-- @+-- import Data.Traversable (mapAccumM)+--+-- repminM+--   :: (Traversable t, Monoid b, Monad m)+--   => (a -> b) -> (a -> b -> m c) -> t a -> m (t c)+-- repminM f g as = do+--   (b, cs) \<- mapAccumM (\\acc a -> (f a <> acc,) \<$\> g a b) mempty as+--   pure cs+-- @+--+-- To solve the riddle, let's rewrite @repmin@ via 'fix':+--+-- @+-- repmin+--   :: (Traversable t, Monoid b)+--   => (a -> b) -> (a -> b -> c) -> t a -> t c+-- repmin f g as = snd $ fix $+--   \\(b, cs) -> mapAccumR (\\acc a -> (f a <> acc, g a b)) mempty as+-- @+--+-- Now we can replace 'fix' with 'mfix' to obtain the solution:+--+-- @+-- repminM+--   :: (Traversable t, Monoid b, MonadFix m)+--   => (a -> b) -> (a -> b -> m c) -> t a -> m (t c)+-- repminM f g as = fmap snd $ mfix $+--   \\(~(b, cs)) -> mapAccumM (\\acc a -> (f a <> acc,) \<$\> g a b) mempty as+-- @+--+-- For example,+--+-- >>> import Data.Monoid (Sum(..))+-- >>> repminM Sum (\a b -> print a >> pure (a + getSum b)) [3, 5, 2]+-- 3+-- 5+-- 2+-- [13,15,12]+--+-- Incredibly, GHC is capable to do this transformation automatically,+-- when @{-# LANGUAGE RecursiveDo #-}@ is enabled. Namely, the following+-- implementation of @repminM@ works (note @mdo@ instead of @do@):+--+-- @+-- {-# LANGUAGE RecursiveDo #-}+--+-- repminM+--   :: (Traversable t, Monoid b, MonadFix m)+--   => (a -> b) -> (a -> b -> m c) -> t a -> m (t c)+-- repminM f g as = mdo+--   (b, cs) \<- mapAccumM (\\acc a -> (f a <> acc,) \<$\> g a b) mempty as+--   pure cs+-- @+--+-- Further reading:+--+-- * GHC User’s Guide, The recursive do-notation.+-- * Haskell Wiki, <https://wiki.haskell.org/MonadFix MonadFix>.+-- * Levent Erkök, <https://leventerkok.github.io/papers/erkok-thesis.pdf Value recursion in monadic computations>, Oregon Graduate Institute, 2002.+-- * Levent Erkök, John Launchbury, <https://leventerkok.github.io/papers/recdo.pdf A recursive do for Haskell>, Haskell '02, 29-37, 2002.+-- * Richard S. Bird, <https://doi.org/10.1007/BF00264249 Using circular programs to eliminate multiple traversals of data>, Acta Informatica 21, 239-250, 1984.+-- * Jasper Van der Jeugt, <https://jaspervdj.be/posts/2023-07-22-lazy-layout.html Lazy layout>, 2023.  module Control.Monad.Fix     (MonadFix(mfix),
src/Data/Bounded.hs view
@@ -13,7 +13,7 @@ -- -- The 'Bounded' class. ----- @since 4.22.0.0+-- @since 4.21.0.0 -- ----------------------------------------------------------------------------- 
src/Data/Enum.hs view
@@ -21,6 +21,34 @@     ( Enum(..)     , {-# DEPRECATED "Bounded should be imported from Data.Bounded" #-}       Bounded(..)+    , enumerate     ) where  import GHC.Internal.Enum++-- | Returns a list of all values of an enum type+--+-- 'enumerate' is often used to list all values of a custom enum data structure, such as a custom Color enum below:+--+-- @+-- data Color = Yellow | Red | Blue+--     deriving (Enum, Bounded, Show)+--+-- allColors :: [Color]+-- allColors = enumerate+-- -- Result: [Yellow, Red, Blue]+-- @+--+-- Note that you need to derive the 'Bounded' type class as well, only 'Enum' is not enough.+-- 'Enum' allows for sequential enumeration, while 'Bounded' provides the 'minBound' and 'maxBound' values.+--+-- 'enumerate' is commonly used together with the TypeApplications syntax. Here is an example of using 'enumerate' to retrieve all values of the 'Ordering' type:+--+-- >> enumerate @Ordering+-- [LT, EQ, GT]+--+-- The '@' symbol here is provided by the TypeApplications language extension.+--+-- @since base-4.22.0.0+enumerate :: (Enum a, Bounded a) => [a]+enumerate = [minBound .. maxBound]
src/Data/List/NonEmpty.hs view
@@ -20,6 +20,13 @@ -- @since 4.9.0.0 ---------------------------------------------------------------------------- +-- Function implementations in this module adhere to the following principle:+--+-- For every NonEmpty function that is different from a corresponding+-- List function only in the presence of NonEmpty in its type, both+-- the List and NonEmpty functions should have the same strictness+-- properties. Same applies to the class instances.+ module Data.List.NonEmpty (    -- * The type of non-empty streams      NonEmpty(..)@@ -116,7 +123,7 @@ import           GHC.Internal.Data.Function       (on) import           GHC.Internal.Data.Ord            (comparing) import           GHC.Internal.Stack.Types     (HasCallStack)-import           GHC.Internal.Data.List.NonEmpty+import           GHC.Internal.Data.List.NonEmpty (NonEmpty (..), map, zip, zipWith)  infixr 5 <| @@ -185,7 +192,7 @@ -- | 'uncons' produces the first element of the stream, and a stream of the -- remaining elements, if any. uncons :: NonEmpty a -> (a, Maybe (NonEmpty a))-uncons ~(a :| as) = (a, nonEmpty as)+uncons (a :| as) = (a, nonEmpty as)  -- | The 'unfoldr' function is analogous to "Data.List"'s -- 'GHC.Internal.Data.List.unfoldr' operation.@@ -206,11 +213,13 @@  -- | Extract the last element of the stream. last :: NonEmpty a -> a-last ~(a :| as) = List.last (a : as)+last (a :| []) = a+last (_ :| (a : as)) = last (a :| as)  -- | Extract everything except the last element of the stream. init :: NonEmpty a -> [a]-init ~(a :| as) = List.init (a : as)+init (_ :| []) = []+init (a1 :| (a2 : as)) = a1 : init (a2 :| as)  -- | Construct a 'NonEmpty' list from a single element. --@@ -220,7 +229,7 @@  -- | Prepend an element to the stream. (<|) :: a -> NonEmpty a -> NonEmpty a-a <| ~(b :| bs) = a :| b : bs+a <| bs = a :| toList bs  -- | Synonym for '<|'. cons :: a -> NonEmpty a -> NonEmpty a@@ -272,7 +281,7 @@  -- | Convert a stream to a normal list efficiently. toList :: NonEmpty a -> [a]-toList ~(a :| as) = a : as+toList (a :| as) = a : as  -- | Lift list operations to work on a 'NonEmpty' stream. --@@ -281,10 +290,6 @@ lift :: Foldable f => ([a] -> [b]) -> f a -> NonEmpty b lift f = fromList . f . Foldable.toList --- | Map a function over a 'NonEmpty' stream.-map :: (a -> b) -> NonEmpty a -> NonEmpty b-map f ~(a :| as) = f a :| fmap f as- -- | The 'inits' function takes a stream @xs@ and returns all the -- finite prefixes of @xs@, starting with the shortest. The result is -- 'NonEmpty' because the result always contains the empty list as the first@@ -324,7 +329,7 @@ -- -- @since 4.18 tails1 :: NonEmpty a -> NonEmpty (NonEmpty a)-tails1 = fromList . List.tails1 . Foldable.toList+tails1 xs = xs :| List.tails1 (tail xs)  -- | @'insert' x xs@ inserts @x@ into the last position in @xs@ where it -- is still less than or equal to the next element. In particular, if the@@ -358,17 +363,17 @@ -- -- > scanl1 f [x1, x2, ...] == x1 :| [x1 `f` x2, x1 `f` (x2 `f` x3), ...] scanl1 :: (a -> a -> a) -> NonEmpty a -> NonEmpty a-scanl1 f ~(a :| as) = fromList (List.scanl f a as)+scanl1 f (a :| as) = fromList (List.scanl f a as)  -- | 'scanr1' is a variant of 'scanr' that has no starting value argument. scanr1 :: (a -> a -> a) -> NonEmpty a -> NonEmpty a-scanr1 f ~(a :| as) = fromList (List.scanr1 f (a:as))+scanr1 f (a :| as) = fromList (List.scanr1 f (a:as))  -- | 'intersperse x xs' alternates elements of the list with copies of @x@. -- -- > intersperse 0 (1 :| [2,3]) == 1 :| [0,2,0,3] intersperse :: a -> NonEmpty a -> NonEmpty a-intersperse a ~(b :| bs) = b :| case bs of+intersperse a (b :| bs) = b :| case bs of     [] -> []     _ -> a : List.intersperse a bs @@ -531,17 +536,17 @@ -- -- /Beware/: a negative or out-of-bounds index will cause an error. (!!) :: HasCallStack => NonEmpty a -> Int -> a-(!!) ~(x :| xs) n+(!!) (x :| xs) n   | n == 0 = x   | n > 0  = xs List.!! (n - 1)   | otherwise = error "NonEmpty.!! negative index" infixl 9 !! - -- | The 'unzip' function is the inverse of the 'zip' function.-unzip :: Functor f => f (a,b) -> (f a, f b)-unzip xs = (fst <$> xs, snd <$> xs)-{-# WARNING in "x-data-list-nonempty-unzip" unzip "This function will be made monomorphic in base-4.22, consider switching to Data.Functor.unzip" #-}+unzip :: NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)+unzip ((a, b) :| asbs) = (a :| as, b :| bs)+  where+    (as, bs) = List.unzip asbs  -- | The 'nub' function removes duplicate elements from a list. In -- particular, it keeps only the first occurrence of each element.
src/Data/Semigroup.hs view
@@ -105,7 +105,7 @@   , ArgMax   ) where -import           GHC.Internal.Base hiding (Any)+import           GHC.Internal.Base hiding (Any, NonEmpty(..)) import           GHC.Internal.Enum import           GHC.Internal.Show import           GHC.Internal.Read@@ -116,6 +116,7 @@ import           Data.Bifunctor import           Data.Bitraversable import           GHC.Internal.Data.Foldable+import           GHC.Internal.Data.NonEmpty (NonEmpty(..)) import           GHC.Internal.Data.Traversable import           GHC.Internal.Data.Semigroup.Internal import           GHC.Internal.Control.Monad.Fix
src/GHC/Base.hs view
@@ -138,7 +138,8 @@     , divModInt#, divModInt8#, divModInt16#, divModInt32#     ) where -import GHC.Internal.Base+import GHC.Internal.Base hiding ( NonEmpty(..) )+import GHC.Internal.Data.NonEmpty ( NonEmpty(..) ) import GHC.Prim hiding   (   -- Hide dataToTag# ops because they are expected to break for
− src/GHC/ExecutionStack/Internal.hs
@@ -1,31 +0,0 @@--- |--- Module      :  GHC.Internal.ExecutionStack.Internal--- Copyright   :  (c) The University of Glasgow 2013-2015--- License     :  see libraries/base/LICENSE------ Maintainer  :  ghc-devs@haskell.org--- Stability   :  internal--- Portability :  non-portable (GHC Extensions)------ Internals of the "GHC.ExecutionStack" module.------ /The API of this module is unstable and not meant to be consumed by the general public./--- If you absolutely must depend on it, make sure to use a tight upper--- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can--- change rapidly without much warning.------ @since 4.9.0.0--module GHC.ExecutionStack.Internal {-# DEPRECATED "This module will be removed from base in the next version (v4.22)" #-} (-  -- * Internal-    Location (..)-  , SrcLoc (..)-  , StackTrace-  , stackFrames-  , stackDepth-  , collectStackTrace-  , showStackFrames-  , invalidateDebugCache-  ) where--import GHC.Internal.ExecutionStack.Internal
src/GHC/Exts.hs view
@@ -26,12 +26,6 @@      -- **  Legacy interface for arrays of arrays      module GHC.Internal.ArrayArray,      -- *  Primitive operations-     {-# DEPRECATED ["The BCO, mkApUpd0#, and newBCO# re-exports from GHC.Exts have been deprecated and will be removed in 9.14", "These symbols should be imported from ghc-internal instead if needed."] #-}-     Prim.BCO,-     {-# DEPRECATED ["The BCO, mkApUpd0#, and newBCO# re-exports from GHC.Exts have been deprecated and will be removed in 9.14", "These symbols should be imported from ghc-internal instead if needed."] #-}-     Prim.mkApUpd0#,-     {-# DEPRECATED ["The BCO, mkApUpd0#, and newBCO# re-exports from GHC.Exts have been deprecated and will be removed in 9.14", "These symbols should be imported from ghc-internal instead if needed."] #-}-     Prim.newBCO#,      module GHC.Prim,      module GHC.Prim.Ext,      -- **  Running 'RealWorld' state thread@@ -55,7 +49,6 @@      sameMVar#,      sameMutVar#,      sameTVar#,-     sameIOPort#,      samePromptTag#,      -- **  Compat wrapper      atomicModifyMutVar#,@@ -131,9 +124,6 @@   , whereFrom#   , isByteArrayWeaklyPinned#, isMutableByteArrayWeaklyPinned# -  -- deprecated-  , BCO, mkApUpd0#, newBCO#-   -- Don't re-export vector FMA instructions   , fmaddFloatX4#   , fmsubFloatX4#@@ -256,8 +246,6 @@   , minWord8X32#   , minWord8X64#   )-import qualified GHC.Prim as Prim-  ( BCO, mkApUpd0#, newBCO# )  import GHC.Prim.Ext 
− src/GHC/IOPort.hs
@@ -1,39 +0,0 @@--- |------ Module      :  GHC.IOPort--- Copyright   :  (c) Tamar Christina 2019--- License     :  see libraries/base/LICENSE------ Maintainer  :  ghc-devs@haskell.org--- Stability   :  internal--- Portability :  non-portable (GHC Extensions)------ The 'IOPort' type. This is a facility used by the Windows IO subsystem.------ /The API of this module is unstable and not meant to be consumed by the general public./--- If you absolutely must depend on it, make sure to use a tight upper--- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can--- change rapidly without much warning.------ We have strict rules with an I/O Port:--- * writing more than once is an error--- * reading more than once is an error------ It gives us the ability to have one thread to block, wait for a result from--- another thread and then being woken up. *Nothing* more.------ This type is very much GHC internal. It might be changed or removed without--- notice in future releases.-----module GHC.IOPort-    (-- *  IOPorts-     IOPort(..),-     newIOPort,-     newEmptyIOPort,-     readIOPort,-     writeIOPort,-     doubleReadException-     ) where--import GHC.Internal.IOPort
src/GHC/JS/Prim/Internal/Build.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE CPP #-} +module GHC.JS.Prim.Internal.Build+  {-# DEPRECATED "Use ghc-internal:GHC.Internal.JS.Prim.Internal.Build instead" #-}+  -- deprecated for now. To be fully removed in GHC 9.16+  -- see https://github.com/haskell/core-libraries-committee/issues/329 and #23432 #if !defined(javascript_HOST_ARCH)--module GHC.JS.Prim.Internal.Build () where-+  () where #else--module GHC.JS.Prim.Internal.Build   ( buildArrayI   , buildArrayM   , buildObjectI
+ src/GHC/Num/BigNat.hs view
@@ -0,0 +1,6 @@+module GHC.Num.BigNat+  ( module GHC.Internal.Bignum.BigNat+  )+where++import GHC.Internal.Bignum.BigNat
+ src/GHC/Num/Integer.hs view
@@ -0,0 +1,6 @@+module GHC.Num.Integer+  ( module GHC.Internal.Bignum.Integer+  )+where++import GHC.Internal.Bignum.Integer
+ src/GHC/Num/Natural.hs view
@@ -0,0 +1,6 @@+module GHC.Num.Natural+  ( module GHC.Internal.Bignum.Natural+  )+where++import GHC.Internal.Bignum.Natural
src/GHC/RTS/Flags.hs view
@@ -1,3 +1,6 @@+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE DeriveGeneric #-}+ -- | -- Module      :  GHC.RTS.Flags -- Copyright   :  (c) The University of Glasgow, 1994-2000@@ -17,6 +20,7 @@ -- -- @since 4.8.0.0 --+-- This module is a compatibility layer. It is meant to be temporary to allow for the eventual deprecation of these declarations as described in [CLC proposal #289](https://github.com/haskell/core-libraries-committee/issues/289). These declarations are now instead available from the @ghc-experimental@ package.  module GHC.RTS.Flags   ( RtsTime@@ -51,5 +55,420 @@   , getHpcFlags   ) where -import GHC.Internal.RTS.Flags+import Prelude (Show,IO,Bool,Maybe,String,Int,Enum,FilePath,Double,Eq,(<$>))++import GHC.Generics (Generic)+import qualified GHC.Internal.RTS.Flags as Internal import GHC.Internal.IO.SubSystem (IoSubSystem(..))++import Data.Word (Word32,Word64,Word)++-- | 'RtsTime' is defined as a @StgWord64@ in @stg/Types.h@+--+-- @since base-4.8.2.0+type RtsTime = Word64++-- | Should we produce a summary of the garbage collector statistics after the+-- program has exited?+--+-- @since base-4.8.2.0+data GiveGCStats+    = NoGCStats+    | CollectGCStats+    | OneLineGCStats+    | SummaryGCStats+    | VerboseGCStats+    deriving ( Show -- ^ @since base-4.8.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-- | Parameters of the garbage collector.+--+-- @since base-4.8.0.0+data GCFlags = GCFlags+    { statsFile             :: Maybe FilePath+    , giveStats             :: GiveGCStats+    , maxStkSize            :: Word32+    , initialStkSize        :: Word32+    , stkChunkSize          :: Word32+    , stkChunkBufferSize    :: Word32+    , maxHeapSize           :: Word32+    , minAllocAreaSize      :: Word32+    , largeAllocLim         :: Word32+    , nurseryChunkSize      :: Word32+    , minOldGenSize         :: Word32+    , heapSizeSuggestion    :: Word32+    , heapSizeSuggestionAuto :: Bool+    , oldGenFactor          :: Double+    , returnDecayFactor     :: Double+    , pcFreeHeap            :: Double+    , generations           :: Word32+    , squeezeUpdFrames      :: Bool+    , compact               :: Bool -- ^ True <=> "compact all the time"+    , compactThreshold      :: Double+    , sweep                 :: Bool+      -- ^ use "mostly mark-sweep" instead of copying for the oldest generation+    , ringBell              :: Bool+    , idleGCDelayTime       :: RtsTime+    , doIdleGC              :: Bool+    , heapBase              :: Word -- ^ address to ask the OS for memory+    , allocLimitGrace       :: Word+    , numa                  :: Bool+    , numaMask              :: Word+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Parameters concerning context switching+--+-- @since base-4.8.0.0+data ConcFlags = ConcFlags+    { ctxtSwitchTime  :: RtsTime+    , ctxtSwitchTicks :: Int+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Miscellaneous parameters+--+-- @since base-4.8.0.0+data MiscFlags = MiscFlags+    { tickInterval          :: RtsTime+    , installSignalHandlers :: Bool+    , installSEHHandlers    :: Bool+    , generateCrashDumpFile :: Bool+    , generateStackTrace    :: Bool+    , machineReadable       :: Bool+    , disableDelayedOsMemoryReturn :: Bool+    , internalCounters      :: Bool+    , linkerAlwaysPic       :: Bool+    , linkerMemBase         :: Word+      -- ^ address to ask the OS for memory for the linker, 0 ==> off+    , ioManager             :: IoManagerFlag+    , numIoWorkerThreads    :: Word32+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- |+--+-- @since base-4.21.0.0+data IoManagerFlag =+       IoManagerFlagAuto+     | IoManagerFlagSelect        -- ^ Unix only, non-threaded RTS only+     | IoManagerFlagMIO           -- ^ cross-platform, threaded RTS only+     | IoManagerFlagWinIO         -- ^ Windows only+     | IoManagerFlagWin32Legacy   -- ^ Windows only, non-threaded RTS only+  deriving (Eq, Enum, Show)++-- | Flags to control debugging output & extra checking in various+-- subsystems.+--+-- @since base-4.8.0.0+data DebugFlags = DebugFlags+    { scheduler      :: Bool -- ^ @s@+    , interpreter    :: Bool -- ^ @i@+    , weak           :: Bool -- ^ @w@+    , gccafs         :: Bool -- ^ @G@+    , gc             :: Bool -- ^ @g@+    , nonmoving_gc   :: Bool -- ^ @n@+    , block_alloc    :: Bool -- ^ @b@+    , sanity         :: Bool -- ^ @S@+    , stable         :: Bool -- ^ @t@+    , prof           :: Bool -- ^ @p@+    , linker         :: Bool -- ^ @l@ the object linker+    , apply          :: Bool -- ^ @a@+    , stm            :: Bool -- ^ @m@+    , squeeze        :: Bool -- ^ @z@ stack squeezing & lazy blackholing+    , hpc            :: Bool -- ^ @c@ coverage+    , sparks         :: Bool -- ^ @r@+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Should the RTS produce a cost-center summary?+--+-- @since base-4.8.2.0+data DoCostCentres+    = CostCentresNone+    | CostCentresSummary+    | CostCentresVerbose+    | CostCentresAll+    | CostCentresJSON+    deriving ( Show -- ^ @since base-4.8.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-- | Parameters pertaining to the cost-center profiler.+--+-- @since base-4.8.0.0+data CCFlags = CCFlags+    { doCostCentres :: DoCostCentres+    , profilerTicks :: Int+    , msecsPerTick  :: Int+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | What sort of heap profile are we collecting?+--+-- @since base-4.8.2.0+data DoHeapProfile+    = NoHeapProfiling+    | HeapByCCS+    | HeapByMod+    | HeapByDescr+    | HeapByType+    | HeapByRetainer+    | HeapByLDV+    | HeapByClosureType+    | HeapByInfoTable+    | HeapByEra -- ^ @since base-4.20.0.0+    deriving ( Show -- ^ @since base-4.8.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-- | Parameters of the cost-center profiler+--+-- @since base-4.8.0.0+data ProfFlags = ProfFlags+    { doHeapProfile            :: DoHeapProfile+    , heapProfileInterval      :: RtsTime -- ^ time between samples+    , heapProfileIntervalTicks :: Word    -- ^ ticks between samples (derived)+    , startHeapProfileAtStartup :: Bool+    , startTimeProfileAtStartup :: Bool   -- ^ @since base-4.20.0.0+    , showCCSOnException       :: Bool+    , automaticEraIncrement    :: Bool   -- ^ @since 4.20.0.0+    , maxRetainerSetSize       :: Word+    , ccsLength                :: Word+    , modSelector              :: Maybe String+    , descrSelector            :: Maybe String+    , typeSelector             :: Maybe String+    , ccSelector               :: Maybe String+    , ccsSelector              :: Maybe String+    , retainerSelector         :: Maybe String+    , bioSelector              :: Maybe String+    , eraSelector              :: Word -- ^ @since base-4.20.0.0+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Is event tracing enabled?+--+-- @since base-4.8.2.0+data DoTrace+    = TraceNone      -- ^ no tracing+    | TraceEventLog  -- ^ send tracing events to the event log+    | TraceStderr    -- ^ send tracing events to @stderr@+    deriving ( Show -- ^ @since base-4.8.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-- | Parameters pertaining to event tracing+--+-- @since base-4.8.0.0+data TraceFlags = TraceFlags+    { tracing        :: DoTrace+    , timestamp      :: Bool -- ^ show timestamp in stderr output+    , traceScheduler :: Bool -- ^ trace scheduler events+    , traceGc        :: Bool -- ^ trace GC events+    , traceNonmovingGc+                     :: Bool -- ^ trace nonmoving GC heap census samples+    , sparksSampled  :: Bool -- ^ trace spark events by a sampled method+    , sparksFull     :: Bool -- ^ trace spark events 100% accurately+    , user           :: Bool -- ^ trace user events (emitted from Haskell code)+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Parameters pertaining to ticky-ticky profiler+--+-- @since base-4.8.0.0+data TickyFlags = TickyFlags+    { showTickyStats :: Bool+    , tickyFile      :: Maybe FilePath+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-- | Parameters pertaining to parallelism+--+-- @since base-4.8.0.0+data ParFlags = ParFlags+    { nCapabilities             :: Word32+    , migrate                   :: Bool+    , maxLocalSparks            :: Word32+    , parGcEnabled              :: Bool+    , parGcGen                  :: Word32+    , parGcLoadBalancingEnabled :: Bool+    , parGcLoadBalancingGen     :: Word32+    , parGcNoSyncWithIdle       :: Word32+    , parGcThreads              :: Word32+    , setAffinity               :: Bool+    }+    deriving ( Show -- ^ @since base-4.8.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-- | Parameters pertaining to Haskell program coverage (HPC)+--+-- @since base-4.20.0.0+data HpcFlags = HpcFlags+    { readTixFile :: Bool+      -- ^ Controls whether a @<program>.tix@ file is read at+      -- the start of execution to initialize the RTS internal+      -- HPC datastructures.+    , writeTixFile :: Bool+      -- ^ Controls whether the @<program>.tix@ file should be+      -- written after the execution of the program.+    }+    deriving (Show -- ^ @since base-4.20.0.0+             , Generic -- ^ @since base-4.20.0.0+             )+-- | Parameters of the runtime system+--+-- @since base-4.8.0.0+data RTSFlags = RTSFlags+    { gcFlags         :: GCFlags+    , concurrentFlags :: ConcFlags+    , miscFlags       :: MiscFlags+    , debugFlags      :: DebugFlags+    , costCentreFlags :: CCFlags+    , profilingFlags  :: ProfFlags+    , traceFlags      :: TraceFlags+    , tickyFlags      :: TickyFlags+    , parFlags        :: ParFlags+    , hpcFlags        :: HpcFlags+    } deriving ( Show -- ^ @since base-4.8.0.0+               , Generic -- ^ @since base-4.15.0.0+               )++-------------------------------- compat ----------------------------------------++internal_to_base_RTSFlags :: Internal.RTSFlags -> RTSFlags+internal_to_base_RTSFlags Internal.RTSFlags{..} =+  RTSFlags{ gcFlags         = internal_to_base_GCFlags    gcFlags+          , concurrentFlags = internal_to_base_ConcFlags  concurrentFlags+          , miscFlags       = internal_to_base_MiscFlags  miscFlags+          , debugFlags      = internal_to_base_DebugFlags debugFlags+          , costCentreFlags = internal_to_base_CCFlags    costCentreFlags+          , profilingFlags  = internal_to_base_ProfFlags  profilingFlags+          , traceFlags      = internal_to_base_TraceFlags traceFlags+          , tickyFlags      = internal_to_base_TickyFlags tickyFlags+          , parFlags        = internal_to_base_ParFlags   parFlags+          , hpcFlags        = internal_to_base_HpcFlags   hpcFlags+          }++internal_to_base_GCFlags :: Internal.GCFlags -> GCFlags+internal_to_base_GCFlags i@Internal.GCFlags{..} =+  let give_stats = internal_to_base_giveStats (Internal.giveStats i)+  in GCFlags{ giveStats = give_stats, .. }+  where+    internal_to_base_giveStats :: Internal.GiveGCStats -> GiveGCStats+    internal_to_base_giveStats Internal.NoGCStats      = NoGCStats+    internal_to_base_giveStats Internal.CollectGCStats = CollectGCStats+    internal_to_base_giveStats Internal.OneLineGCStats = OneLineGCStats+    internal_to_base_giveStats Internal.SummaryGCStats = SummaryGCStats+    internal_to_base_giveStats Internal.VerboseGCStats = VerboseGCStats++internal_to_base_ParFlags :: Internal.ParFlags -> ParFlags+internal_to_base_ParFlags Internal.ParFlags{..} = ParFlags{..}++internal_to_base_HpcFlags :: Internal.HpcFlags -> HpcFlags+internal_to_base_HpcFlags Internal.HpcFlags{..} = HpcFlags{..}++internal_to_base_ConcFlags :: Internal.ConcFlags -> ConcFlags+internal_to_base_ConcFlags Internal.ConcFlags{..} = ConcFlags{..}++internal_to_base_MiscFlags :: Internal.MiscFlags -> MiscFlags+internal_to_base_MiscFlags i@Internal.MiscFlags{..} =+  let io_manager = internal_to_base_ioManager (Internal.ioManager i)+  in MiscFlags{ ioManager = io_manager, ..}+  where+    internal_to_base_ioManager :: Internal.IoManagerFlag -> IoManagerFlag+    internal_to_base_ioManager Internal.IoManagerFlagAuto        = IoManagerFlagAuto+    internal_to_base_ioManager Internal.IoManagerFlagSelect      = IoManagerFlagSelect+    internal_to_base_ioManager Internal.IoManagerFlagMIO         = IoManagerFlagMIO+    internal_to_base_ioManager Internal.IoManagerFlagWinIO       = IoManagerFlagWinIO+    internal_to_base_ioManager Internal.IoManagerFlagWin32Legacy = IoManagerFlagWin32Legacy++internal_to_base_DebugFlags :: Internal.DebugFlags -> DebugFlags+internal_to_base_DebugFlags Internal.DebugFlags{..} = DebugFlags{..}++internal_to_base_CCFlags :: Internal.CCFlags -> CCFlags+internal_to_base_CCFlags i@Internal.CCFlags{..} =+  let do_cost_centres = internal_to_base_costCentres (Internal.doCostCentres i)+  in CCFlags{ doCostCentres = do_cost_centres, ..}+  where+    internal_to_base_costCentres :: Internal.DoCostCentres -> DoCostCentres+    internal_to_base_costCentres Internal.CostCentresNone    = CostCentresNone+    internal_to_base_costCentres Internal.CostCentresSummary = CostCentresSummary+    internal_to_base_costCentres Internal.CostCentresVerbose = CostCentresVerbose+    internal_to_base_costCentres Internal.CostCentresAll     = CostCentresAll+    internal_to_base_costCentres Internal.CostCentresJSON    = CostCentresJSON++internal_to_base_ProfFlags :: Internal.ProfFlags -> ProfFlags+internal_to_base_ProfFlags i@Internal.ProfFlags{..} =+  let do_heap_profile = internal_to_base_doHeapProfile (Internal.doHeapProfile i)+  in ProfFlags{ doHeapProfile = do_heap_profile,..}+  where+    internal_to_base_doHeapProfile :: Internal.DoHeapProfile -> DoHeapProfile+    internal_to_base_doHeapProfile Internal.NoHeapProfiling   = NoHeapProfiling+    internal_to_base_doHeapProfile Internal.HeapByCCS         = HeapByCCS+    internal_to_base_doHeapProfile Internal.HeapByMod         = HeapByMod+    internal_to_base_doHeapProfile Internal.HeapByDescr       = HeapByDescr+    internal_to_base_doHeapProfile Internal.HeapByType        = HeapByType+    internal_to_base_doHeapProfile Internal.HeapByRetainer    = HeapByRetainer+    internal_to_base_doHeapProfile Internal.HeapByLDV         = HeapByLDV+    internal_to_base_doHeapProfile Internal.HeapByClosureType = HeapByClosureType+    internal_to_base_doHeapProfile Internal.HeapByInfoTable   = HeapByInfoTable+    internal_to_base_doHeapProfile Internal.HeapByEra         = HeapByEra++internal_to_base_TraceFlags :: Internal.TraceFlags -> TraceFlags+internal_to_base_TraceFlags i@Internal.TraceFlags{..} =+  let do_trace = internal_to_base_doTrace (Internal.tracing i)+  in TraceFlags{ tracing = do_trace,..}+  where+    internal_to_base_doTrace :: Internal.DoTrace -> DoTrace+    internal_to_base_doTrace Internal.TraceNone     = TraceNone+    internal_to_base_doTrace Internal.TraceEventLog = TraceEventLog+    internal_to_base_doTrace Internal.TraceStderr   = TraceStderr++internal_to_base_TickyFlags :: Internal.TickyFlags -> TickyFlags+internal_to_base_TickyFlags Internal.TickyFlags{..} = TickyFlags{..}++-------------------------------- shims -----------------------------------------++getRTSFlags :: IO RTSFlags+getRTSFlags = internal_to_base_RTSFlags <$> Internal.getRTSFlags++getGCFlags :: IO GCFlags+getGCFlags = internal_to_base_GCFlags <$> Internal.getGCFlags++getParFlags :: IO ParFlags+getParFlags = internal_to_base_ParFlags <$> Internal.getParFlags++getHpcFlags :: IO HpcFlags+getHpcFlags = internal_to_base_HpcFlags <$> Internal.getHpcFlags++getConcFlags :: IO ConcFlags+getConcFlags =  internal_to_base_ConcFlags <$> Internal.getConcFlags++{-# INLINEABLE getMiscFlags #-}+getMiscFlags :: IO MiscFlags+getMiscFlags = internal_to_base_MiscFlags <$> Internal.getMiscFlags++getDebugFlags :: IO DebugFlags+getDebugFlags = internal_to_base_DebugFlags <$> Internal.getDebugFlags++getCCFlags :: IO CCFlags+getCCFlags = internal_to_base_CCFlags <$> Internal.getCCFlags++getProfFlags :: IO ProfFlags+getProfFlags = internal_to_base_ProfFlags <$> Internal.getProfFlags++getTraceFlags :: IO TraceFlags+getTraceFlags = internal_to_base_TraceFlags <$> Internal.getTraceFlags++getTickyFlags :: IO TickyFlags+getTickyFlags = internal_to_base_TickyFlags <$> Internal.getTickyFlags
src/GHC/Records.hs view
@@ -11,10 +11,11 @@ -- Portability :  non-portable (GHC extensions) -- -- This module defines the 'HasField' class used by the--- @OverloadedRecordFields@ extension.  See the--- <https://gitlab.haskell.org/ghc/ghc/wikis/records/overloaded-record-fields--- wiki page> for more details.+-- @OverloadedRecordDot@ extension.  See the+-- [wiki page](https://gitlab.haskell.org/ghc/ghc/wikis/records/overloaded-record-fields)+-- for more details. --+-- @since 4.10.0.0  module GHC.Records     (HasField(..)
src/GHC/Stack/CloneStack.hs view
@@ -17,3 +17,4 @@   ) where  import GHC.Internal.Stack.CloneStack+import GHC.Internal.Stack.Decode
src/GHC/Stats.hs view
@@ -1,4 +1,6 @@-{-# LANGUAGE Safe #-}+{-# LANGUAGE DeriveGeneric   #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE Safe            #-}  -- | -- Module      :  RTS.Stats@@ -18,6 +20,12 @@ -- than @base < 5@, because the interface can change rapidly without much warning. -- -- @since 4.5.0.0+--+-- This module is a compatibility layer. It is meant to be temporary to allow+-- for the eventual deprecation of these declarations as described in [CLC+-- proposal+-- #289](https://github.com/haskell/core-libraries-committee/issues/289). These+-- declarations are now instead available from the @ghc-experimental@ package.  module GHC.Stats     ( -- * Runtime statistics@@ -26,5 +34,172 @@     , getRTSStatsEnabled     ) where -import GHC.Internal.Stats +import Prelude (Bool,IO,Read,Show,(<$>))++import qualified GHC.Internal.Stats as Internal+import GHC.Generics (Generic)+import Data.Word (Word64,Word32)+import Data.Int (Int64)++-- | Time values from the RTS, using a fixed resolution of nanoseconds.+type RtsTime = Int64++--+-- | Statistics about runtime activity since the start of the+-- program.  This is a mirror of the C @struct RTSStats@ in @RtsAPI.h@+--+-- @since base-4.10.0.0+--+data RTSStats = RTSStats {+  -- -----------------------------------+  -- Cumulative stats about memory use++    -- | Total number of GCs+    gcs :: Word32+    -- | Total number of major (oldest generation) GCs+  , major_gcs :: Word32+    -- | Total bytes allocated+  , allocated_bytes :: Word64+    -- | Maximum live data (including large objects + compact regions) in the+    -- heap. Updated after a major GC.+  , max_live_bytes :: Word64+    -- | Maximum live data in large objects+  , max_large_objects_bytes :: Word64+    -- | Maximum live data in compact regions+  , max_compact_bytes :: Word64+    -- | Maximum slop+  , max_slop_bytes :: Word64+    -- | Maximum memory in use by the RTS+  , max_mem_in_use_bytes :: Word64+    -- | Sum of live bytes across all major GCs.  Divided by major_gcs+    -- gives the average live data over the lifetime of the program.+  , cumulative_live_bytes :: Word64+    -- | Sum of copied_bytes across all GCs+  , copied_bytes :: Word64+    -- | Sum of copied_bytes across all parallel GCs+  , par_copied_bytes :: Word64+    -- | Sum of par_max_copied_bytes across all parallel GCs. Deprecated.+  , cumulative_par_max_copied_bytes :: Word64+    -- | Sum of par_balanced_copied bytes across all parallel GCs+  , cumulative_par_balanced_copied_bytes :: Word64++  -- -----------------------------------+  -- Cumulative stats about time use+  -- (we use signed values here because due to inaccuracies in timers+  -- the values can occasionally go slightly negative)++    -- | Total CPU time used by the init phase+    -- @since base-4.12.0.0+  , init_cpu_ns :: RtsTime+    -- | Total elapsed time used by the init phase+    -- @since base-4.12.0.0+  , init_elapsed_ns :: RtsTime+    -- | Total CPU time used by the mutator+  , mutator_cpu_ns :: RtsTime+    -- | Total elapsed time used by the mutator+  , mutator_elapsed_ns :: RtsTime+    -- | Total CPU time used by the GC+  , gc_cpu_ns :: RtsTime+    -- | Total elapsed time used by the GC+  , gc_elapsed_ns :: RtsTime+    -- | Total CPU time (at the previous GC)+  , cpu_ns :: RtsTime+    -- | Total elapsed time (at the previous GC)+  , elapsed_ns :: RtsTime++    -- | The total CPU time used during the post-mark pause phase of the+    -- concurrent nonmoving GC.+  , nonmoving_gc_sync_cpu_ns :: RtsTime+    -- | The total time elapsed during the post-mark pause phase of the+    -- concurrent nonmoving GC.+  , nonmoving_gc_sync_elapsed_ns :: RtsTime+    -- | The maximum elapsed length of any post-mark pause phase of the+    -- concurrent nonmoving GC.+  , nonmoving_gc_sync_max_elapsed_ns :: RtsTime+    -- | The total CPU time used by the nonmoving GC.+  , nonmoving_gc_cpu_ns :: RtsTime+    -- | The total time elapsed during which there is a nonmoving GC active.+  , nonmoving_gc_elapsed_ns :: RtsTime+    -- | The maximum time elapsed during any nonmoving GC cycle.+  , nonmoving_gc_max_elapsed_ns :: RtsTime++    -- | Details about the most recent GC+  , gc :: GCDetails+  } deriving ( Read -- ^ @since base-4.10.0.0+             , Show -- ^ @since base-4.10.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++--+-- | Statistics about a single GC.  This is a mirror of the C @struct+--   GCDetails@ in @RtsAPI.h@, with the field prefixed with @gc_@ to+--   avoid collisions with 'RTSStats'.+--+data GCDetails = GCDetails {+    -- | The generation number of this GC+    gcdetails_gen :: Word32+    -- | Number of threads used in this GC+  , gcdetails_threads :: Word32+    -- | Number of bytes allocated since the previous GC+  , gcdetails_allocated_bytes :: Word64+    -- | Total amount of live data in the heap (includes large + compact data).+    -- Updated after every GC. Data in uncollected generations (in minor GCs)+    -- are considered live.+  , gcdetails_live_bytes :: Word64+    -- | Total amount of live data in large objects+  , gcdetails_large_objects_bytes :: Word64+    -- | Total amount of live data in compact regions+  , gcdetails_compact_bytes :: Word64+    -- | Total amount of slop (wasted memory)+  , gcdetails_slop_bytes :: Word64+    -- | Total amount of memory in use by the RTS+  , gcdetails_mem_in_use_bytes :: Word64+    -- | Total amount of data copied during this GC+  , gcdetails_copied_bytes :: Word64+    -- | In parallel GC, the max amount of data copied by any one thread.+    -- Deprecated.+  , gcdetails_par_max_copied_bytes :: Word64+    -- | In parallel GC, the amount of balanced data copied by all threads+  , gcdetails_par_balanced_copied_bytes :: Word64+    -- | The amount of memory lost due to block fragmentation in bytes.+    -- Block fragmentation is the difference between the amount of blocks retained by the RTS and the blocks that are in use.+    -- This occurs when megablocks are only sparsely used, eg, when data that cannot be moved retains a megablock.+    --+    -- @since base-4.18.0.0+  , gcdetails_block_fragmentation_bytes :: Word64+    -- | The time elapsed during synchronisation before GC+  , gcdetails_sync_elapsed_ns :: RtsTime+    -- | The CPU time used during GC itself+  , gcdetails_cpu_ns :: RtsTime+    -- | The time elapsed during GC itself+  , gcdetails_elapsed_ns :: RtsTime++    -- | The CPU time used during the post-mark pause phase of the concurrent+    -- nonmoving GC.+  , gcdetails_nonmoving_gc_sync_cpu_ns :: RtsTime+    -- | The time elapsed during the post-mark pause phase of the concurrent+    -- nonmoving GC.+  , gcdetails_nonmoving_gc_sync_elapsed_ns :: RtsTime+  } deriving ( Read -- ^ @since base-4.10.0.0+             , Show -- ^ @since base-4.10.0.0+             , Generic -- ^ @since base-4.15.0.0+             )++-------------------------------- compat ----------------------------------------++internal_to_base_RTSStats :: Internal.RTSStats -> RTSStats+internal_to_base_RTSStats i@Internal.RTSStats{..} =+  let gc_details = internal_to_base_GCDetails (Internal.gc i)+  in RTSStats{gc = gc_details,..}++internal_to_base_GCDetails :: Internal.GCDetails -> GCDetails+internal_to_base_GCDetails Internal.GCDetails{..} = GCDetails{..}++-------------------------------- shims -----------------------------------------++getRTSStats :: IO RTSStats+getRTSStats = internal_to_base_RTSStats <$> Internal.getRTSStats++getRTSStatsEnabled :: IO Bool+getRTSStatsEnabled = Internal.getRTSStatsEnabled
− src/GHC/TypeLits/Internal.hs
@@ -1,35 +0,0 @@-{-# LANGUAGE Safe #-}-{-# OPTIONS_HADDOCK not-home #-}---- |------ Module      :  GHC.TypeLits.Internal--- Copyright   :  (c) The University of Glasgow, 1994-2000--- License     :  see libraries/base/LICENSE------ Maintainer  :  ghc-devs@haskell.org--- Stability   :  internal--- Portability :  non-portable (GHC extensions)------ __Do not use this module.__  Use "GHC.TypeLits" instead.------ This module is internal-only and was exposed by accident.  It may be--- removed without warning in a future version.------ /The API of this module is unstable and is tightly coupled to GHC's internals./--- If depend on it, make sure to use a tight upper bound, e.g., @base < 4.X@ rather--- than @base < 5@, because the interface can change rapidly without much warning.------ The technical reason for this module's existence is that it is needed--- to prevent module cycles while still allowing these identifiers to be--- imported in "Data.Type.Ord".------ @since 4.16.0.0--module GHC.TypeLits.Internal {-# DEPRECATED "This module will be removed from base in the next version (v4.22)" #-}-    (Symbol,-     CmpSymbol,-     CmpChar-     ) where--import GHC.Internal.TypeLits.Internal
− src/GHC/TypeNats/Internal.hs
@@ -1,9 +0,0 @@-{-# LANGUAGE Safe #-}-{-# OPTIONS_HADDOCK not-home #-}--module GHC.TypeNats.Internal {-# DEPRECATED "This module will be removed from base in the next version (v4.22)" #-}-    (Natural,-     CmpNat-     ) where--import GHC.Internal.TypeNats.Internal
src/GHC/Weak/Finalize.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE MagicHash #-} module GHC.Weak.Finalize     ( -- * Handling exceptions       -- | When an exception is thrown by a finalizer called by the@@ -8,7 +9,30 @@     , getFinalizerExceptionHandler     , printToHandleFinalizerExceptionHandler       -- * Internal-    , runFinalizerBatch+    , GHC.Weak.Finalize.runFinalizerBatch     ) where  import GHC.Internal.Weak.Finalize++-- These imports can be removed once runFinalizerBatch is removed,+-- as can MagicHash above.+import GHC.Internal.Base (Int, Array#, IO, State#, RealWorld)+++{-# DEPRECATED runFinalizerBatch+    "This function is internal to GHC. It will not be exported in future." #-}+-- | Run a batch of finalizers from the garbage collector. Given an+-- array of finalizers and the length of the array, just call each one+-- in turn.+--+-- This is an internal detail of the GHC RTS weak pointer finaliser+-- mechanism. It should no longer be exported from base. There is no+-- good reason to use it. It will be removed in the next major version+-- of base (4.23.*).+--+-- See <https://github.com/haskell/core-libraries-committee/issues/342>+--+runFinalizerBatch :: Int+                  -> Array# (State# RealWorld -> State# RealWorld)+                  -> IO ()+runFinalizerBatch = GHC.Internal.Weak.Finalize.runFinalizerBatch
src/System/CPUTime/Windows.hsc view
@@ -60,7 +60,7 @@ #if defined(i386_HOST_ARCH) foreign import stdcall unsafe "GetCurrentProcess" getCurrentProcess :: IO (Ptr HANDLE) foreign import stdcall unsafe "GetProcessTimes" getProcessTimes :: Ptr HANDLE -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> IO CInt-#elif defined(x86_64_HOST_ARCH)+#elif defined(x86_64_HOST_ARCH) || defined(aarch64_HOST_ARCH) foreign import ccall unsafe "GetCurrentProcess" getCurrentProcess :: IO (Ptr HANDLE) foreign import ccall unsafe "GetProcessTimes" getProcessTimes :: Ptr HANDLE -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> IO CInt #else
src/System/Info.hs view
@@ -42,8 +42,6 @@ -- | The full version of 'compilerName' with which the program was compiled -- or is being interpreted. It includes the major, minor, revision and an additional -- identifier, generally in the form "<year><month><day>".------ @since 4.15.0.0 fullCompilerVersion :: Version fullCompilerVersion = Version version []   where
src/System/Timeout.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE Safe #-}+{-# LANGUAGE Trustworthy #-}  ------------------------------------------------------------------------------- -- |@@ -29,6 +29,7 @@                             asyncExceptionToException,                             asyncExceptionFromException) import GHC.Internal.Data.Unique         (Unique, newUnique)+import GHC.Conc (labelThread) import Prelude  -- $setup@@ -119,7 +120,9 @@         let handleTimeout = do                 v <- isEmptyMVar lock                 when v $ void $ forkIOWithUnmask $ \unmask -> unmask $ do-                    v2 <- tryPutMVar lock =<< myThreadId+                    tid <- myThreadId+                    labelThread tid "timeout worker"+                    v2 <- tryPutMVar lock tid                     when v2 $ throwTo pid ex             cleanupTimeout key = uninterruptibleMask_ $ do                 v <- tryPutMVar lock undefined@@ -136,7 +139,9 @@         ex  <- fmap Timeout newUnique         handleJust (\e -> if e == ex then Just () else Nothing)                    (\_ -> return Nothing)-                   (bracket (forkIOWithUnmask $ \unmask ->+                   (bracket (forkIOWithUnmask $ \unmask -> do+                                 tid <- myThreadId+                                 labelThread tid "timeout worker"                                  unmask $ threadDelay n >> throwTo pid ex)                             (uninterruptibleMask_ . killThread)                             (\_ -> fmap Just f))