Changelog of @hackage/base-compat 0.14.0

Changes in 0.14.0 [2024.04.30]

  • Sync with base-4.20/GHC 9.10
  • Backport foldl' to Prelude.Compat
  • Backport List to Data.List.Compat (when building with GHC 9.6 or later)
  • Backport append, appendList, prependList, permutations, permutations1, and sortOn to Data.List.NonEmpty.Compat (when building with GHC 8.0 or later)

Changes in 0.13.1 [2023.10.11]

  • Sync with base-4.19/GHC 9.8
  • Backport unzip to Data.Functor.Compat
  • Backport (!?) and unsnoc to Data.List.Compat
  • Backport getSolo to Data.Tuple.Compat when building against ghc-prim-0.8.0 (GHC 9.2) or later. To backport getSolo to older versions of GHC, import Data.Tuple.Compat from base-compat-batteries instead.
  • Backport decT and hdecT to Data.Typeable.Compat
  • Backport decTypeRep to Type.Reflection.Compat

Changes in 0.13.0 [2023.03.10]

  • Sync with base-4.18/GHC 9.6
  • Backport liftA2 being re-exported from Prelude.Compat.
  • Data.Tuple.Compat's Solo API now matches what is present in Data.Tuple in base-4.18. In particular, we now re-export both the MkSolo and Solo data constructors when building with ghc-prim-0.10.0 or later, with MkSolo being preferred over Solo. If you want to backport MkSolo to earlier versions of GHC, import Data.Tuple.Compat from base-compat-batteries instead.
  • Backport traceWith, traceShowWith, and traceEventWith to Debug.Trace. Note that traceEventWith is only provided when building with base-4.5 or later, as that is the first version of base to provide the traceEvent primitive on which traceEventWith is defined.
  • Backport inits1 and tails1 to Data.List.NonEmpty.Compat.
  • Backport minusNaturalMaybe to Numeric.Natural.Compat.
  • Backport applyWhen to Data.Function.Compat.
  • Backport mapAccumM and forAccumM to Data.Traversable.Compat.
  • Backport heqT to Data.Typeable.Compat. Note that heqT is only defined when building with base-4.10 or later, as that is the first version of base to provide the primitives needed to define heqT.
  • Introduce Data.Foldable1.Compat and Data.Bifoldable1.Compat modules, which correspond to changes made in base-4.18.0.0. You may consider using base-compat-batteries instead if you want increase the range of base versions that are supported.

Changes in 0.12.3 [2023.07.12]

Changes in 0.12.2 [2022.08.11]

  • Sync with base-4.17/GHC 9.4
  • Backport (.^.), (.>>.), (.<<.), (!>>.), (!<<.), oneBits to Data.Bits.Compat
  • Backport pattern TypeRep to Type.Reflection.Compat

Changes in 0.12.1 [2021.10.30]

  • Backport Solo to Data.Tuple.Compat when building with ghc-prim-0.7.0 or later

Changes in 0.12.0 [2021.08.29]

  • Sync with base-4.16/GHC 9.2
  • Data.Semigroup.Compat{.Repl} no longer re-exports the Option data type or the option function, as both have been removed in base-4.16.
  • Backport readBin and showBin to Numeric.Compat
  • Backport readBinP to Text.Read.Lex.Compat

Changes in 0.11.2 [2020.09.30]

  • Sync with base-4.15/GHC 9.0
  • Backport singleton to Data.List.Compat and Data.List.NonEmpty.Compat
  • Backport hGetContents', getContents', and readFile' added to System.IO.Compat

Changes in 0.11.1 [2020.01.27]

  • Sync with base-4.14/GHC 8.10
  • Backport isResourceVanishedError, resourceVanishedErrorType, and isResourceVanishedErrorType to System.IO.Error.Compat.

Changes in 0.11.0 [2019.09.06]

  • Sync with base-4.13/GHC 8.8

  • Backport MonadFail(fail) to Prelude.Compat and Control.Monad.Compat.

    Because Prelude.Compat.fail now corresponds to the fail from MonadFail instead of Monad, some care is required to implement Monad.fail on pre-8.8 versions of GHC. The following template is recommended:

    import Prelude.Compat
    import qualified Control.Monad      as Monad
    import qualified Control.Monad.Fail as Fail
    
    data Blah a = ...
    
    instance Functor Blah where ...
    instance Applicative Blah where ...
    
    instance Monad.Monad Blah where
      (>>=) = ...
    #if !(MIN_VERSION_base(4,13,0))
      fail = Fail.fail
    #endif
    
    instance Fail.MonadFail Blah where
      fail = ...
    

    This approach is also backwards-compatible with previous releases of base-compat.

    Note that the MonadFail class has only been in base since base-4.9/GHC 8.0, so accordingly, this can only be backported back to GHC 8.0. If you wish to have a version of Prelude.Compat/Control.Monad.Compat that backports MonadFail to older GHCs (by conditionally depending on the fail library), use the Prelude.Compat/Control.Monad.Compat modules from the base-compat-batteries package.

  • Introduce the Data.Type.Equality.Compat module, which re-exports Data.Type.Equality if using base-4.7/GHC-7.8 or later. If using an older version of base, this module is empty.

    If you wish to have a version of Data.Type.Equality.Compat with older GHCs (by conditionally depending on the type-equality library), use the Data.Type.Equality.Compat module from the base-compat-batteries package.

Changes in 0.10.5 [2018.10.18]

  • Enable BangPatterns in Prelude.Compat.

Changes in 0.10.4 [2018.07.03]

  • Make more modules Trustworthy. In particular, fix a regression in which Prelude.Compat was inferred as Unsafe by explicitly marking it as Trustwothy.

Changes in 0.10.3 [2018.07.02]

  • Backport the proper fixity for ($!), which was accidentally omitted in base-compat-0.10.2.

Changes in 0.10.2 [2018.07.02]

  • Sync with base-4.12/GHC 8.6

  • Backport RuntimeRep-polymorphic versions of ($!) and throw to Prelude.Compat and Control.Exception.Compat, respectively (if using base-4.10/GHC 8.2 or later).

  • Introduce the Data.Functor.Contravariant.Compat module, which reexports Data.Functor.Contravariant if using base-4.12/GHC 8.6 or later.

    See Data.Functor.Contravariant.Compat in the corresponding base-compat-batteries release for a version with a wider support window.

Changes in 0.10.1 [2018.04.10]

  • Add Data.List.NonEmpty.Compat.
  • Reexport (Data.Semigroup.<>) from Data.Monoid.Compat back to base-4.9.

Changes in 0.10.0 [2018.04.05]

  • Sync with base-4.11/GHC 8.4

  • Backport Semigroup((<>)) to Prelude.Compat.

    Note that the Semigroup class has only been in base since base-4.9/GHC 8.0, so accordingly, this can only be backported back to GHC 8.0. If you wish to have a version of Prelude.Compat that backports Semigroup to older GHCs (by conditionally depending on the semigroups library), use the Prelude.Compat module from the base-compat-batteries package.

  • Backport (<&>) to Data.Functor.Compat

  • Backport iterate' to Data.List.Compat

  • Backport showHFloat to Numeric.Compat

  • Backport a RuntimeRep-polymorphic withTypeable function to Type.Reflection.Compat. (This is only exported on base-4.10/GHC 8.2.)

  • Introduce the following modules, back until the oldest version of base that can support backporting them. If you wish to use them in conjunction with older versions of base, use the base-compat-batteries package.

    • Control.Monad.Fail.Compat (back until base-4.9/GHC 8.0)
    • Control.Monad.IO.Class.Compat (back until base-4.9/GHC 8.0)
    • Data.Bifunctor (back until base-4.8/GHC 7.10)
    • Data.Bifoldable and Data.Bitraversable (back until base-4.10/GHC 8.2)
    • Data.Functor.Compose.Compat, Data.Functor.Product.Compat, and Data.Functor.Sum.Compat (back until base-4.9/GHC 8.0)
    • Data.Functor.Identity.Compat (back until base-4.8/GHC 7.10)
    • Data.Semigroup.Compat (back until base-4.9/GHC 8.0)
    • Data.Void.Compat (back until base-4.8/GHC 7.10)
    • Numeric.Natural.Compat (back until base-4.8/GHC 7.10)
  • Introduce versions of modules with the suffix .Repl. These simply reexport the contents of their counterparts without the .Repl suffix to provide a globally unique namespace to import from in the event one wants to import base-compat modules into GHCi. (In base-compat-batteries, the corresponding suffix is .Repl.Batteries.)

Changes in 0.9.3 [2017.04.10]

  • Sync with base-4.10/GHC 8.2
  • Backport fromLeft/fromRight to Data.Either.Compat
  • Backport implementations of maximumBy/minimumBy which use constant stack space to Data.Foldable.Compat
  • Backport asProxyTypeOf with a generalized type signature to Data.Proxy.Compat
  • Backport gcoerceWith to Data.Type.Coercion.Compat
  • Backport plusForeignPtr to Foreign.ForeignPtr.Compat

Changes in 0.9.2

  • Allow building on the HaLVM

Changes in 0.9.1

  • Use the more efficient version of replicateM and replicateM_ introduced in base-4.9

Changes in 0.9.0

  • Sync with base-4.9/GHC 8.0
  • Weakened RealFloat constraints on realPart, imagPart, conjugate, mkPolar, and cis in Data.Complex.Compat
  • Backport Foreign.ForeignPtr.Safe and Foreign.Marshal.Safe
  • Generalize filterM, forever, mapAndUnzipM, zipWithM, zipWithM_, replicateM, and replicateM_ in Control.Monad from Monad to Applicative
  • Backport .Unsafe.Compat modules (for Control.Monad.ST, Control.Monad.ST.Lazy, Foreign.ForeignPtr, and Foreign.Marshal)
  • Backport forkFinally and forkOSWithUnmask to Control.Concurrent.Compat
  • Backport Data.Functor.Const
  • Backport modifyIORef', atomicModifyIORef' and atomicWriteIORef to Data.IORef.Compat
  • Data.Ratio.{denominator,numerator} have no Integral constraint anymore
  • Backport modifySTRef' to Data.STRef.Compat
  • Export String, lines, words, unlines, and unwords to Data.String.Compat
  • Generalize Debug.Trace.{traceM, traceShowM} from Monad to Applicative
  • Backport errorWithoutStackTrace to Prelude.Compat
  • Backport unsafeFixIO and unsafeDupablePerformIO to System.IO.Unsafe.Compat

Changes in 0.8.2

  • Backport bitDefault, testBitDefault, and popCountDefault in Data.Bits.Compat to all versions of base
    • Backport toIntegralSized to base-4.7
  • Backport nub and nubBy (as well as union and unionBy, which are implemented in terms of them) to fix logic error in Data.List.Compat
  • Backport byteSwap16, byteSwap32, and byteSwap64 to Data.Word.Compat
  • Backport fillBytes in Foreign.Marshal.Utils.Compat
  • Backport showFFloatAlt and showGFloatAlt to Numeric.Compat

Changes in 0.8.1.1

  • Fixed Windows build

Changes in 0.8.1

  • Implement setEnv and unsetEnv in System.Environment.Compat (which were ported from the setenv package). As a result, base-compat now depends on unix on POSIX-like operating systems.
  • Drop GHC 6.12 (and base-4.2.0.0) compatibility

Changes in 0.8.0.1

  • Retrospective version bump updating the changelog to reflect the changes made in 0.8.0

Changes 0.8.0

  • All orphan instances were split off into a separate package, base-orphans
  • base-compat no longer redefines the data types Down and Alt. See here for the discussion that led to this change.
  • Update Control.Monad.Compat for base-4.8.0.0
  • Update Data.List.Compat for base-4.8.0.0
  • Update Data.Foldable.Compat for base-4.8.0.0

Changes in 0.7.1

  • Backported Alt to Data.Monoid.Compat
  • Backported Down to Data.Ord.Compat

Changes in 0.7.0

  • Add functions and orphan instances introduced by changes to base-4.7.0.0 and base-4.8.0.0

Changes in 0.6.0

  • Update Prelude.Compat for base-4.8.0.0 and AMP

Changes in 0.5.0

  • Remove Control.Exception.Base.Compat and GHC.Exception.Compat
  • Add System.Exit.Compat.die
  • Compatibility with base-4.7.1

Changes in 0.4.1

  • Add setEnv and unsetEnv to System.Environment.Compat

Changes in 0.4.0

  • Major refactoring: base-compat no longer aims to replace all base, only new code is included in module .Compat
  • Removed stubbed modules
  • Removed generation scripts

Changes in 0.3

  • Added functions from Base 4.7 (bool, isLeft, isRight)
  • Added instances from Base 4.7 (Either Foldable, Traversable,...)

Changes in 0.2.1

  • Fix build on windows

Changes in 0.2.0

  • Re-export everything from base
  • provides access to VERSION_base and MIN_VERSION_base CPP macros (with #include "base-compat.h")
  • Do not re-export System.IO.Error.catch from Prelude for base < 4.6.0
  • Add Eq/Ord instance for ErrorCall
  • Remove GHC.IOBase, GHC.Handle, Control.Concurrent.QSem, Control.Concurrent.QSemN, Control.Concurrent.SampleVar, Data.HashTable

Changes in 0.1.0

  • Remove getExecutablePath, it did not work with GHC < 7.2 (patches welcome!)
  • Add <>