ANN: primitive

Carter Schonwald carter.schonwald at
Wed May 30 18:54:52 UTC 2018

This is a pretty exciting (albeit minor version)

I'd like to especially thank David Feuer (treeowl ) and Andrew Martin
(andrewthad) for their contributions

the change log has a huge number of bug fixes relative to 0.6.2-3

also we added some new modules of features

PrimArray --- unboxed nonsliceable vectors
MVar -- Mvars that run in any PrimMonad

augmented the Data.Primitive exports for increased consistency
(the new .Ptr and .Mvar modules aren't exported in this minor version so
users can easily migrate)

Changes in version


   Introduce Data.Primitive.PrimArray, which offers types and function for
   dealing with a ByteArray tagged with a phantom type variable for
   tracking the element type.

   Implement isByteArrayPinned and isMutableByteArrayPinned.

   Add Eq1, Ord1, Show1, and Read1 instances for Array and SmallArray.

   Improve the test suite. This includes having property tests for
   typeclasses from base such as Eq, Ord, Functor, Applicative, Monad,
   IsList, Monoid, Foldable, and Traversable.

   Fix the broken IsList instance for ByteArray. The old definition would
   allocate a byte array of the correct size and then leave the memory
   unitialized instead of writing the list elements to it.

   Fix the broken Functor instance for Array. The old definition would
   allocate an array of the correct size with thunks for erroring installed at
   every index. It failed to replace these thunks with the result of the
   function applied to the elements of the argument array.

   Fix the broken Applicative instances of Array and SmallArray. The old
   implementation of <*> for Arrayfailed to initialize some elements but
   correctly initialized others in the resulting Array. It is unclear what
   the old behavior of <*> was for SmallArray, but it was incorrect.

   Fix the broken Monad instances for Array and SmallArray.

   Fix the implementation of foldl1 in the Foldable instances for Array and
   SmallArray. In both cases, the old implementation simply returned the
   first element of the array and made no use of the other elements in the

   Fix the implementation of mconcat in the Monoid instance for SmallArray.

   Implement Data.Primitive.Ptr, implementations of Ptr functions that
   require a Prim constraint instead of a Storable constraint.

   Add PrimUnlifted instances for TVar and MVar.

   Use compareByteArrays# for the Eq and Ord instances of ByteArray when
   building with GHC 8.4 and newer.

   Add Prim instances for lots of types in Foreign.C.Types and

   Reexport Data.Primitive.SmallArray and Data.Primitive.UnliftedArray from

   Add fold functions and map function to Data.Primitive.UnliftedArray. Add
   typeclass instances for IsList, Ord, and Show.

   Add defaultSetByteArray# and defaultSetOffAddr# to Data.Primitive.Types.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list