-
Bundled with GHC 8.0
-
error
and undefined
now print a partial stack-trace alongside the error message.
-
New errorWithoutStackTrace
function throws an error without printing the stack trace.
-
The restore operation provided by mask
and uninterruptibleMask
now
restores the previous masking state whatever the current masking state is.
-
New GHC.Generics.packageName
operation
-
Redesigned GHC.Stack.CallStack
data type. As a result, CallStack
’s
Show
instance produces different output, and CallStack
no longer has an
Eq
instance.
-
New GHC.Generics.packageName
operation
-
New GHC.Stack.Types
module now contains the definition of
CallStack
and SrcLoc
-
New GHC.Stack.Types.emptyCallStack
function builds an empty CallStack
-
New GHC.Stack.Types.freezeCallStack
function freezes a CallStack
preventing future pushCallStack
operations from having any effect
-
New GHC.Stack.Types.pushCallStack
function pushes a call-site onto a CallStack
-
New GHC.Stack.Types.fromCallSiteList
function creates a CallStack
from
a list of call-sites (i.e., [(String, SrcLoc)]
)
-
GHC.SrcLoc
has been removed
-
GHC.Stack.showCallStack
and GHC.SrcLoc.showSrcLoc
are now called
GHC.Stack.prettyCallStack
and GHC.Stack.prettySrcLoc
respectively
-
add Data.List.NonEmpty
and Data.Semigroup
(to become
super-class of Monoid
in the future). These modules were
provided by the semigroups
package previously. (#10365)
-
Add selSourceUnpackedness
, selSourceStrictness
, and
selDecidedStrictness
, three functions which look up strictness
information of a field in a data constructor, to the Selector
type class
in GHC.Generics
(#10716)
-
Add URec
, UAddr
, UChar
, UDouble
, UFloat
, UInt
, and UWord
to
GHC.Generics
as part of making GHC generics capable of handling
unlifted types (#10868)
-
The Eq
, Ord
, Read
, and Show
instances for U1
now use lazier
pattern-matching
-
Keep shift{L,R}
on Integer
with negative shift-arguments from
segfaulting (#10571)
-
Add forkOSWithUnmask
to Control.Concurrent
, which is like
forkIOWithUnmask
, but the child is run in a bound thread.
-
The MINIMAL
definition of Arrow
is now arr AND (first OR (***))
.
-
The MINIMAL
definition of ArrowChoice
is now left OR (+++)
.
-
Exported GiveGCStats
, DoCostCentres
, DoHeapProfile
, DoTrace
,
RtsTime
, and RtsNat
from GHC.RTS.Flags
-
New function GHC.IO.interruptible
used to correctly implement
Control.Exception.allowInterrupt
(#9516)
-
Made PatternMatchFail
, RecSelError
, RecConError
, RecUpdError
,
NoMethodError
, and AssertionFailed
newtypes (#10738)
-
New module Control.Monad.IO.Class
(previously provided by transformers
package). (#10773)
-
New modules Data.Functor.Classes
, Data.Functor.Compose
,
Data.Functor.Product
, and Data.Functor.Sum
(previously provided by
transformers
package). (#11135)
-
New instances for Proxy
: Eq1
, Ord1
, Show1
, Read1
. All
of the classes are from Data.Functor.Classes
(#11756).
-
New module Control.Monad.Fail
providing new MonadFail(fail)
class (#10751)
-
Add GHC.TypeLits.TypeError
and ErrorMessage
to allow users
to define custom compile-time error messages.
-
Redesign GHC.Generics
to use type-level literals to represent the
metadata of generic representation types (#9766)
-
The IsString
instance for [Char]
has been modified to eliminate
ambiguity arising from overloaded strings and functions like (++)
.
-
Move Const
from Control.Applicative
to its own module in
Data.Functor.Const
. (#11135)
-
Re-export Const
from Control.Applicative
for backwards compatibility.
-
Expand Floating
class to include operations that allow for better
precision: log1p
, expm1
, log1pexp
and log1mexp
. These are not
available from Prelude
, but the full class is exported from Numeric
.
-
New Control.Exception.TypeError
datatype, which is thrown when an
expression fails to typecheck when run using -fdefer-type-errors
(#10284)
-
Alt
, Dual
, First
, Last
, Product
, and Sum
now have Data
,
MonadZip
, and MonadFix
instances
-
The datatypes in GHC.Generics
now have Enum
, Bounded
, Ix
,
Functor
, Applicative
, Monad
, MonadFix
, MonadPlus
, MonadZip
,
Foldable
, Foldable
, Traversable
, Generic1
, and Data
instances
as appropriate.
-
Maybe
now has a MonadZip
instance
-
All
and Any
now have Data
instances
-
Dual
, First
, Last
, Product
, and Sum
now have Foldable
and
Traversable
instances
-
Dual
, Product
, and Sum
now have Functor
, Applicative
, and
Monad
instances
-
(,) a
now has a Monad
instance
-
ZipList
now has Foldable
and Traversable
instances
-
Identity
now has Semigroup
and Monoid
instances
-
Identity
and Const
now have Bits
, Bounded
, Enum
, FiniteBits
,
Floating
, Fractional
, Integral
, IsString
, Ix
, Num
, Real
,
RealFloat
, RealFrac
and Storable
instances. (#11210, #11790)
-
()
now has a Storable
instance
-
Complex
now has Generic
, Generic1
, Functor
, Foldable
, Traversable
,
Applicative
, and Monad
instances
-
System.Exit.ExitCode
now has a Generic
instance
-
Data.Version.Version
now has a Generic
instance
-
IO
now has a Monoid
instance
-
Add MonadPlus IO
and Alternative IO
instances
(previously orphans in transformers
) (#10755)
-
CallStack
now has an IsList
instance
-
Bundled with GHC 7.10.1
-
Make Applicative
a superclass of Monad
-
Add reverse application operator Data.Function.(&)
-
Add Data.List.sortOn
sorting function
-
Add System.Exit.die
-
Deprecate versionTags
field of Data.Version.Version
.
Add makeVersion :: [Int] -> Version
constructor function to aid
migration to a future versionTags
-less Version
.
-
Add IsList Version
instance
-
Weaken RealFloat constraints on some Data.Complex
functions
-
Add Control.Monad.(<$!>)
as a strict version of (<$>)
-
The Data.Monoid
module now has the PolyKinds
extension
enabled, so that the Monoid
instance for Proxy
are polykinded
like Proxy
itself is.
-
Make abs
and signum
handle (-0.0) correctly per IEEE-754.
-
Re-export Data.Word.Word
from Prelude
-
Add countLeadingZeros
and countTrailingZeros
methods to
Data.Bits.FiniteBits
class
-
Add Data.List.uncons
list destructor (#9550)
-
Export Monoid(..)
from Prelude
-
Export Foldable(..)
from Prelude
(hiding fold
, foldl'
, foldr'
, and toList
)
-
Export Traversable(..)
from Prelude
-
Set fixity for Data.Foldable.{elem,notElem}
to match the
conventional one set for Data.List.{elem,notElem}
(#9610)
-
Turn toList
, elem
, sum
, product
, maximum
, and minimum
into Foldable
methods (#9621)
-
Replace the Data.List
-exported functions
all, and, any, concat, concatMap, elem, find, product, sum,
mapAccumL, mapAccumR
by re-exports of their generalised Data.Foldable
/Data.Traversable
counterparts. In other words, unqualified imports of Data.List
and Data.Foldable
/Data.Traversable
no longer lead to conflicting
definitions. (#9586)
-
New (unofficial) module GHC.OldList
containing only list-specialised
versions of the functions from Data.List
(in other words, GHC.OldList
corresponds to base-4.7.0.2
’s Data.List
)
-
Replace the Control.Monad
-exported functions
sequence_, msum, mapM_, forM_,
forM, mapM, sequence
by re-exports of their generalised Data.Foldable
/Data.Traversable
counterparts. In other words, unqualified imports of Control.Monad
and Data.Foldable
/Data.Traversable
no longer lead to conflicting
definitions. (#9586)
-
Generalise Control.Monad.{when,unless,guard}
from Monad
to
Applicative
and from MonadPlus
to Alternative
respectively.
-
Generalise Control.Monad.{foldM,foldM_}
to Foldable
-
scanr
, mapAccumL
and filterM
now take part in list fusion (#9355,
#9502, #9546)
-
Remove deprecated Data.OldTypeable
(#9639)
-
New module Data.Bifunctor
providing the Bifunctor(bimap,first,second)
class (previously defined in bifunctors
package) (#9682)
-
New module Data.Void
providing the canonical uninhabited type Void
(previously defined in void
package) (#9814)
-
Update Unicode class definitions to Unicode version 7.0
-
Add Alt
, an Alternative
wrapper, to Data.Monoid
. (#9759)
-
Add isSubsequenceOf
to Data.List
(#9767)
-
The arguments to ==
and eq
in Data.List.nub
and Data.List.nubBy
are swapped, such that Data.List.nubBy (<) [1,2]
now returns [1]
instead of [1,2]
(#2528, #3280, #7913)
-
New module Data.Functor.Identity
(previously provided by transformers
package). (#9664)
-
Add scanl'
, a strictly accumulating version of scanl
, to Data.List
and Data.OldList
. (#9368)
-
Add fillBytes
to Foreign.Marshal.Utils
.
-
Add new displayException
method to Exception
typeclass. (#9822)
-
Add Data.Bits.toIntegralSized
, a size-checked version of
fromIntegral
. (#9816)
-
New module Numeric.Natural
providing new Natural
type
representing non-negative arbitrary-precision integers. The GHC.Natural
module exposes additional GHC-specific primitives. (#9818)
-
Add (Storable a, Integeral a) => Storable (Ratio a)
instance (#9826)
-
Add Storable a => Storable (Complex a)
instance (#9826)
-
New module GHC.RTS.Flags
that provides accessors to runtime flags.
-
Expose functions for per-thread allocation counters and limits in GHC.Conc
disableAllocationLimit :: IO ()
enableAllocationLimit :: IO ()
getAllocationCounter :: IO Int64
setAllocationCounter :: Int64 -> IO ()
together with a new exception AllocationLimitExceeded
.
-
Make read . show = id
for Data.Fixed
(#9240)
-
Add calloc
and callocBytes
to Foreign.Marshal.Alloc
. (#9859)
-
Add callocArray
and callocArray0
to Foreign.Marshal.Array
. (#9859)
-
Restore invariant in Data (Ratio a)
instance (#10011)
-
Add/expose rnfTypeRep
, rnfTyCon
, typeRepFingerprint
, and
tyConFingerprint
helpers to Data.Typeable
.
-
Define proper MINIMAL
pragma for class Ix
. (#10142)
-
Bundled with GHC 7.8.1
-
Add /Since: 4.[4567].0.0/
Haddock annotations to entities
denoting the package version, when the given entity was introduced
(or its type signature changed in a non-compatible way)
-
The Control.Category
module now has the PolyKinds
extension
enabled, meaning that instances of Category
no longer need be of
kind * -> * -> *
.
-
There are now Foldable
and Traversable
instances for Either a
,
Const r
, and (,) a
.
-
There are now Show
, Read
, Eq
, Ord
, Monoid
, Generic
, and
Generic1
instances for Const
.
-
There is now a Data
instance for Data.Version
.
-
A new Data.Bits.FiniteBits
class has been added to represent
types with fixed bit-count. The existing Bits
class is extended
with a bitSizeMaybe
method to replace the now obsolete
bitsize
method.
-
Data.Bits.Bits
gained a new zeroBits
method which completes the
Bits
API with a direct way to introduce a value with all bits cleared.
-
There are now Bits
and FiniteBits
instances for Bool
.
-
There are now Eq
, Ord
, Show
, Read
, Generic
. and Generic1
instances for ZipList
.
-
There are now Eq
, Ord
, Show
and Read
instances for Down
.
-
There are now Eq
, Ord
, Show
, Read
and Generic
instances
for types in GHC.Generics (U1
, Par1
, Rec1
, K1
, M1
,
(:+:)
, (:*:)
, (:.:)
).
-
Data.Monoid
: There are now Generic
instances for Dual
, Endo
,
All
, Any
, Sum
, Product
, First
, and Last
; as well as
Generic1
instances for Dual
, Sum
, Product
, First
, and Last
.
-
The Data.Monoid.{Product,Sum}
newtype wrappers now have Num
instances.
-
There are now Functor
instances for System.Console.GetOpt
’s
ArgOrder
, OptDescr
, and ArgDescr
.
-
A zero-width unboxed poly-kinded Proxy#
was added to
GHC.Prim
. It can be used to make it so that there is no the
operational overhead for passing around proxy arguments to model
type application.
-
New Data.Proxy
module providing a concrete, poly-kinded proxy type.
-
New Data.Coerce
module which exports the new Coercible
class
together with the coerce
primitive which provide safe coercion
(wrt role checking) between types with same representation.
-
Control.Concurrent.MVar
has a new implementation of readMVar
,
which fixes a long-standing bug where readMVar
is only atomic if
there are no other threads running putMVar
. readMVar
now is
atomic, and is guaranteed to return the value from the first
putMVar
. There is also a new tryReadMVar
which is a
non-blocking version.
-
New Control.Concurrent.MVar.withMVarMasked
which executes
IO
action with asynchronous exceptions masked in the same style
as the existing modifyMVarMasked
and modifyMVarMasked_
.
-
New threadWait{Read,Write}STM :: Fd -> IO (STM (), IO ())
functions added to Control.Concurrent
for waiting on FD
readiness with STM actions.
-
Expose Data.Fixed.Fixed
’s constructor.
-
There are now byte endian-swapping primitives
byteSwap{16,32,64}
available in Data.Word
, which use
optimized machine instructions when available.
-
Data.Bool
now exports bool :: a -> a -> Bool -> a
, analogously
to maybe
and either
in their respective modules.
-
Data.Either
now exports isLeft, isRight :: Either a b -> Bool
.
-
Debug.Trace
now exports traceId
, traceShowId
, traceM
,
and traceShowM
.
-
Data.Functor
now exports ($>)
and void
.
-
Rewrote portions of Text.Printf
, and made changes to Numeric
(added Numeric.showFFloatAlt
and Numeric.showGFloatAlt
) and
GHC.Float
(added formatRealFloatAlt
) to support it. The
rewritten version is extensible to user types, adds a “generic”
format specifier “%v
”, extends the printf
spec to support much
of C’s printf(3)
functionality, and fixes the spurious warnings
about using Text.Printf.printf
at (IO a)
while ignoring the
return value. These changes were contributed by Bart Massey.
-
The minimal complete definitions for all type-classes with cyclic
default implementations have been explicitly annotated with the
new {-# MINIMAL #-}
pragma.
-
Control.Applicative.WrappedMonad
, which can be used to convert a
Monad
to an Applicative
, has now a
Monad m => Monad (WrappedMonad m)
instance.
-
There is now a Generic
and a Generic1
instance for WrappedMonad
and WrappedArrow
.
-
Handle ExitFailure (-sig)
on Unix by killing process with signal sig
.
-
New module Data.Type.Bool
providing operations on type-level booleans.
-
Expose System.Mem.performMinorGC
for triggering minor GCs.
-
New System.Environment.{set,unset}Env
for manipulating
environment variables.
-
Add Typeable
instance for (->)
and RealWorld
.
-
Declare CPP header <Typeable.h>
officially obsolete as GHC 7.8+
does not support hand-written Typeable
instances anymore.
-
Remove (unmaintained) Hugs98 and NHC98 specific code.
-
Optimize System.Timeout.timeout
for the threaded RTS.
-
Remove deprecated functions unsafeInterleaveST
, unsafeIOToST
,
and unsafeSTToIO
from Control.Monad.ST
.
-
Add a new superclass SomeAsyncException
for all asynchronous exceptions
and makes the existing AsyncException
and Timeout
exception children
of SomeAsyncException
in the hierarchy.
-
Remove deprecated functions blocked
, unblock
, and block
from
Control.Exception
.
-
Remove deprecated function forkIOUnmasked
from Control.Concurrent
.
-
Remove deprecated function unsafePerformIO
export from Foreign
(still available via System.IO.Unsafe.unsafePerformIO
).
-
Various fixes and other improvements (see Git history for full details).