-
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 Array
failed 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 array.
-
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
System.Posix.Types
.
-
Reexport Data.Primitive.SmallArray
and Data.Primitive.UnliftedArray
from Data.Primitive
.
-
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
.
-
Add Data.Primitive.MVar
, a replacement for Control.Concurrent.MVar
that can run in any PrimMonad
instead of just IO
. It is not a full
replacement. Notably, it’s missing masking functions and support for
adding finalizers.