Changelog for massiv-1.0.4.0
1.0.4
- Improve performance of sorting algorithm and its parallelization. Fix huge slow down on CPUs with at least 16 cores.
1.0.3
- Deprecated
indexWith
in favor ofindexAssert
- Addition of scans:
sscanl
,sscanl1
,sprescanl
,spostscanl
andspostscanlAcc
- Expose
unsafePrefIndex
1.0.2
- Addition of
Iterator
type class and related fucntions:- Addition of
RowMajor
,RowMajorLinear
andRowMajorUnbalanced
iterators. - Switch parallel left fold to new iterator
- Addition of
- Improvements to functions that do the looping:
- Addition of
loopNextA_
andloopNextM
- Deprecate
loopM_
in favor ofloopA_
- Addition of
loopA
andloopF
for applicative iterators - Addition of
iloopA_
andiloopM
- Addition of
nextMaybeF
- Addition of
iterLinearST_
,iterLinearAccST_
anditerLinearAccST
- Addition of an optimized
scheduleMassivWork
for internal use - Addition of a new workhorse:
splitWorkWithFactorST
- Addition of a new workhorse:
splitWorkWithFactorST
- Addition of
- Changes to
Index
class:- Deprecate
iterM_
in favor ofiterA_
- Adititon of sequential iterators:
iterTargetRowMajorA_
,iterTargetRowMajorAccM
needed forRowMajor
iterator - Addition of parallelizable iterators:
iterRowMajorST
,iterTargetRowMajorAccST
,iterTargetRowMajorAccST_
needed forRowMajor
iterator - Addition of
iterF
for using with applicative iterators. - Addition of
stepNextMF
for streaming iteration of multi-dimensional arrays.
- Deprecate
- Addition of
repr
. - Addition of
quicksortAs
,quicksortAsBy
,quicksortAsByM
- Fix backwards compatibility with ghc-8.0
- Get rid of dependency on
genvalidity
: too many compatibility issues for little gain - Introduce
PrefIndex
andunsafePrefIndex
: a preference when indexing into multidimensionalSource
arrays. Adopt it where possible for left and right folds, traversals, but not zipping - Improve multi-dimensional indices for streams. Improve
steps
andisteps
- Get rid of build warnings for ghc-9.4
- Make
Monoid
andMonad
instances forward compatible
- Make
- Compatibility with
vector-0.13
:- Fix
Unbox
instance forIxN
- Fix safety of boxed vector conversion:
toBoxedVector
/fromBoxedVector
- Fix
- Re-export Manifest realetd functions from
Data.Massiv.Array.Manifest
as a migration strategy for the move in the next minor version bump.
1.0.1
- Relax constraint on
computeInto
by removing requirement forSize
- Fix
BL
, which due to a forgottenseq
was not lazy.
1.0.0
- Addition of
sumArrays'
,sumArraysM
andproductArrays'
,productArraysM
. - Remove
Num
/Fractional
/Floating
instances forD
andDI
arrays. This was done to prevent surprises as in: #97 - Remove helper class
Nested
and type familyNestedStuct
- Make
negate
inNum
instance throw error forSz
in order to avoid surprising behavior reported in: #114 - Add of
munsafeResize
- Add
uniformArray
anduniformRangeArray
- Replace
isNonEmpty
withisNotZeroSz
and addedisZeroSz
- Consolidate
Construct
class intoLoad
- Introduce
Shape
, the parent ofSize
- Move
size
fromLoad
into new classSize
- Consolidate
Resize
intoSize
- Removed
maxSize
and replaced it withmaxLinearSize
- Remove specialized
DW
instances that used tuples as indices. - Get rid of
M
representation - Remove
R
type family andSlice
,InnerSlice
andExtract
classes in favor ofD
. - Consolidate
OuterSlice
intoSource
- Add
Strategy
and movesetComp
(fromConstruct
) andgetComp
(fromLoad
) in there. - Remove
ix
fromMutable
,Manifest
,Source
- Remove
liftArray2
. Instead addliftArray2'
andliftArray2M
that don't behave like amap
for singleton argument. - Expose
liftNumArray2M
- Prevent
showsArrayPrec
from changing index type - Change function argument to monadic action for
unstablePartitionM
andunsafeUnstablePartitionM
- Replace
snull
with a more genericisNull
- Switch
DL
loading function to run inST
monad, rather than in anyMonad m
. - Rename
msize
->sizeOfMArray
- Add
unsafeResizeMArray
andunsafeLinearSliceMArray
- Rename:
loadArrayM
->iterArrayLinearM_
loadArrayWithSetM
->iterArrayLinearWithSetM_
.loadArrayWithStrideM
->iterArrayLinearWithStrideM_
.
- Add
iterArrayLinearST_
anditerArrayLinearWithSetST_
toLoad
class instead ofloadArrayM
andloadArrayWithSetM
. - Add
iterArrayLinearWithStrideST_
toLoadStride
class instead ofloadArrayWithStrideM
. - Add new mutable functions:
resizeMArrayM
andflattenMArray
,outerSliceMArrayM
andouterSlicesMArray
,for2PrimM_
andifor2PrimM_
,zipSwapM_
- Switch effectful mapping functions to use the representation specific
iteration. This means that they are now restricted to
Load
instead ofSource
. Functions affected:mapIO_
,imapIO_
,forIO_
andiforIO_
mapIO
,imapIO
,forIO
andiforIO
- Add
Uniform
,UniformRange
andRandom
instances forIx2
,IxN
,Dim
,Sz
andStride
- Consolidate
Mutable
intoManifest
type class and move theMArray
data family outside of the class. - Make sure empty arrays are always equal, regardless of their size.
- Remove
LN
representation in favor of a standaloneList
newtype wrapper around lists.
0.6.1
- Addition of
withLoadMArray_
,withLoadMArrayS
,withLoadMArrayS_
,withLoadMArrayST
,withLoadMArrayST_
- Addition of
replaceSlice
andreplaceOuterSlice
- Addition of
quicksortBy
,quicksortByM
andquicksortByM_
- Fix performance regression for
quicksort
andquicksortM_
introduced in previous release.
0.6.0
- Fix semantics of
Applicative
,Num
andFractional
instance forD
arrays: mismatched sizes will throw an error. - 20% speed improvement of matrix multiplication:
multiplyMatrices
,.><.
and!><!
. Type signature has changed toMutable
for both arguments, thus it's a breaking change. - Switch
><.
and><!
from returning a delayed array to mutable, since that's whatmultiplyVectorByMatrix
returns. - Addition of synonym
HighIxN
and removing redundant1 <= n
constraint. - Deprecating
makeStencilDef
,unsafeMapStencil
and fix dangers of invalid stencils reading out of bounds. Get rid ofValue
. Fix for #109. - Addition of
appComp
- Addition of
mkSzM
- Addition of
SizeOverflowException
andSizeNegativeException
- Fix setting computation for boxed vector when converted with
fromVectorM
andfromVector'
- Add computation strategy argument to
fromUnboxedVector
, just so it matches other vector conversion functions. - Removed
defaultElement
- Removed deprecated functions:
#>
,|*|
,multiplyTransposed
,fromIntegerA
,fromRationalA
,piA
- Addition of
BL
representation and related functionality, fix for #111.- Addition of functions:
wrapLazyArray
,unwrapLazyArray
,toLazyArray
,evalLazyArray
,forceLazyArray
,unwrapMutableLazyArray
,fromBoxedVector
,fromBoxedMVector
. - Rename:
unsafeNormalBoxedArray
->coerceNormalBoxedArray
unsafeBoxedArray
->coerceBoxedArray
- Remove
unsafeFromBoxedVector
- Conversion from vector with
castFromVector
will returnBL
representation for boxed vector - Change type
B
->BL
for functions:toBoxedVector
andtoBoxedMVector
- Addition of functions:
- Rename
N
->BN
and add backwards compatibility shim. - Make
replicate
a function inConstruct
class - Add
newMArray
,newMArray'
and deprecatenew
- Add custom implementation for
<$
inFunctor
instances forBL
andB
.
0.5.9
- Add
mallocCompute
,mallocCopy
andunsafeMallocMArray
- Fix
.><.
,><.
and.><
on empty matrices. Result is now guaranteed to be empty too. - Add
unwrapByteArrayOffset
andunwrapMutableByteArrayOffset
- Add
fromByteArrayOffsetM
andfromMutableByteArrayOffsetM
0.5.8
- Improve loading of push arrays by adding
loadArrayWithSetM
and deprecatingdefaultElement
.
0.5.9
- Add
mallocCompute
,mallocCopy
andunsafeMallocMArray
0.5.8
- Improve loading of push arrays by adding
loadArrayWithSetM
and deprecatingdefaultElement
.
0.5.7
- Improve performance of
><.
and><!
while making their constraints a bit more relaxed. - Expose
unsafeLoadIntoM
andunsafeLoadIntoS
- Expose
eqArrays
andcompareArrays
- Add
multiplyMatrixByVector
andmultiplyVectorByMatrix
0.5.6
- Fix
(-.)
(it was incorrectly implemented as a flip of(.-)
- Addition of numeric functions:
- Partial:
!+!
,!-!
,!*!
,!/!
- Reciprocal division
/.
- More efficient matrix-matrix multiplication:
.><.
and!><!
(also helpersmultiplyMatrices
andmultiplyMatricesTransposed
) - More efficient matrix-vector multiplication:
.><
and!><
- New vector-matrix multiplication:
><.
and><!
- Dot product
dotM
and!.!
- Norm
normL2
- Partial:
- Deprecated
|*|
and#>
0.5.5
- Add
takeWhile
,dropWhile
andfindIndex
- Improve performance of
any
,and
,or
,all
- Add
elem
0.5.4
- Addition of
unsafeTransformStencil
- Add
zip4
,unzip4
,zipWith4
andizipWith4
- Make
Resize
a superclass ofSource
- Addition of
outerSlices
,innerSlices
,withinSlices
andwithinSlicesM
- Addition of
stackSlicesM
,stackOuterSlicesM
andstackInnerSlicesM
- Addition of
computeP
- Fix perfomrmance issue of folding functions applied to arrays with
Seq
computation strategy.
0.5.3
- Fix
tanA
andtanhA
. #96 - Relax argument of
snoc
andcons
constraint toLoad
vectors - Improve
unsnocM
andunconsM
by switching tounsafeLinearSlice
, instead of delaying the array. - Fix parallelization for windowed array when computed with stride
- Fix massiv doctests not being able to find massiv.h under NixOS
0.5.2
- Addition of
lowerTriangular
andupperTriangular
- Relax
identityMatrix
type to return an array of anyNum
type, not justInt
. - Addition of
unsafeMakeLoadArrayAdjusted
- Add matrix-vector product (
(#>)
) - Addition of
siterate
0.5.1
- Fix
sfromListN
accepting a plainInt
instead ofSz1
, as well as switch to upper bound. - Fix order of argumetns in
iforM
- Restrict
szip*
,szipWith*
andsizipWith*
functions to flat vectors. - Addition of
unsafeSUnfoldrN
,unsafeSUnfoldrNM
andunsafeSFromListN
- Fix
sunfoldrN
,sunfoldrNM
andsfromListN
to not trust the supplied size. - Move
isEmpty
intoLoad
class - Add
isNotEmpty
0.5.0
- Remove
Show
instance fromValue
. - Addition of
unsafeCreateArray
,unsafeCreateArray_
andunsafeCreateArrayS
- Remove
Comp
argument from functions that ignore it and set it toSeq
:createArrayS_
,createArrayS
,createArrayST_
,createArrayST
unfoldrPrimM_
,iunfoldrPrimM_
,unfoldrPrimM
,iunfoldrPrimM
unfoldlPrimM_
,iunfoldlPrimM_
,unfoldlPrimM
,iunfoldlPrimM
- Addition of
fromStorableVector
andfromStorableMVector
- Modify
toMutableByteArray
to produce a copy if dealing with slice. - Addition of
toByteArrayM
,toMutableByteArrayM
- Change
replicate
to produce delayed load arrayDL
- Export unsafe stencil functions from
Data.Array.Massiv.Unsafe
, rather than fromData.Massiv.Array.Stencil.Unsafe
. - Implement
unsafeMapStencil
and deprecatemapStencilUnsafe
andforStencilUnsafe
- Addition of
castToBuilder
- Addition of conversion functions:
unwrapNormalForm
andevalNormalForm
toBoxedVector
,toBoxedMVector
,evalBoxedVector
andevalBoxedMVector
unwrapByteArray
andunwrapMutableByteArray
toPrimitiveVector
,toPrimitiveMVector
,fromPrimitiveVector
andfromPrimitiveMVector
toStorableVector
,toStorableMVector
,fromStorableVector
andfromStorableMVector
fromUnboxedVector
andfromUnboxedMVector
unsafeBoxedArray
,unsafeNormalBoxedArray
,unsafeFromBoxedVector
- Removed deprecated
traverseAR
,itraverseAR
,traversePrimR
anditraversePrimR
- Removed:
imapMR
,imapMR
,iforMR
, andiforMR
- Renamed:
withMArray
towithMArray_
,withMArrayS
towithMArrayS_
andwithMArrayST
towithMArrayST_
- Added versions that keep the artifact of mutable action:
withMArray
,withMArrayS
,withMArrayST
.
0.4.5
- Addition of
computeIO
andcomputePrimM
- Addition of
makeArrayLinearA
- Addition of
traverseS
- Fix regression in performance introduced in
massiv-0.4.0
0.4.4
- Addition of
appendOuterM
andconcatOuterM
- Addition of
zoom
- Addition of
write_
,modify_
andswap_
0.4.3
- Addition of
catMaybesS
andtally
0.4.3
- Addition of
applyStencil
andPadding
with helper functionsnoPadding
andsamePadding
. - Addition of
foldlStencil
,foldrStencil
and monoidalfoldStencil
. - Addition of common generic stencils:
sumStencil
,productStencil
,avgStencil
,maxStencil
,minStencil
andidStencil
. - Addition of
mapStencilUnsafe
for the brave. - Improve compile time error reporting for invalid dimensions.
- Fix incorrect loading of
DW
arrays of dimension higher than 3 - Addition of
foldOuterSlice
,ifoldOuterSlice
,foldInnerSlice
andifoldInnerSlice
. Fix for #56
0.4.2
- Fix loading empty
DS
stream arrays of unknown size. Fix for #83.
0.4.1
- Introduction of
Stream
andDS
representation:filterS
,filterM
,ifilterS
,ifilterM
mapMaybeS
,mapMaybeM
,imapMaybeS
,imapMaybeM
unfoldr
,unfoldrN
takeS
anddropS
- Deprecated
traverseAR
,itraverseAR
,traversePrimR
,itraversePrimR
(not feasible to keep duplicate functions just for representation,TypeApplications
orScopedVariables
should be used instead.) - Fix performance issue with copying of unboxed arrays and initialization of storable array.
- Addition of
unsafeLoadIntoS
,unsafeLoadInto
andmaxSize
- Addition of
reverse
,reverse'
andreverseM
- Addition of
modifyDimension
,modifyDimM
, andmodifyDim'
0.4.0
- Made
Construct
a super class ofMutable
- Reimplement a safe version of
makeLoadArray
, that is parallelizable. - Switch from
EltRepr r ix
to much simplerR r
- Remove
Construct
instance forM
representation. unsafeLinearSet
- length argument now acceptsSz1
instead of anInt
- Renamed:
forPrimM_
->forPrimM
iforPrimM_
->iforPrimM
iforLinearPrimM_
->iforLinearPrimM
- Introduced new functions that do not mutate the original array:
forPrimM_
,iforPrimM_
andiforLinearPrimM_
- Addition of
readM
,writeM
,modifyM
,swapM
,modifyM_
,swapM_
- Add an orphan instance of
MonadThrow
forST
monad for older versions ofexceptions
. See ekmett/exceptions#72 - Deprecation of
read'
,write'
modify'
andswap'
- Make
modify
accept a monadic action, rather than a pure function. Also now it returns the old element. - Make
swap
return the swapped elements. - Addition of
unsafeLinearSwap
andunsafeSwap
- Expose
unsafeLinearModify
andunsafeModify
- Expose
Data.Massiv.Core.List
- Expose
indexWith
, so macroINDEX_CHECK
frommassiv.h
could be used outside massiv. - Addition of
liftSz
- Fixed
expand*
functions by making them acceptSz1
instead of anInt
- Addition of
expandWithinM
- Bunch of minor fixes to
Show
instances - Extracted test-suite into it's own package.
- Stop accepting computation strategy for all functions that can be performed sequentially only:
iterateN
iiterateN
unfoldrS_
iunfoldrS_
unfoldlS_
iunfoldlS_
makeArrayA
makeArrayAR
generateArrayLinearS
generateArrayS
- Redefined most of the numeric operators with
Numeric
andNumericFloat
. Will be required for SIMD operations. Num
,Fractional
andApplicative
forD
andDI
changed behavior: instead of treating singleton as a special array of any size it is treated as singleton.
0.3.6
- Addition of
unsafeArrayLinearCopy
,unsafeLinearCopy
,unsafeLinearShrink
,unsafeLinearGrow
- Implementation of
iterateUntil
anditerateUntilM
identityMatrix
- generation of identity matrix
0.3.5
- Fix and export
guardNumberOfElements
Eq
instances forIndexException
andSizeException
- Fix
upsample
implementation and improve its performance. - Addition of
deleteRegionM
,deleteRowsM
anddeleteColumnsM
0.3.4
- Use the the new stateful workers feature of
scheduler-1.4.0
- Addition of:
randomArrayS
randomArrayWS
generateArrayWS
generateArrayLinearWS
mapWS
,forWS
,imapWS
andiforWS
- and
splitLinearlyWithStatefulM_
0.3.3
- Fix type signature for
createArray
. - Support for new version of
scheduler
- Addition of
randomArray
0.3.2.1
- Fix
sqrtA
function: #76
0.3.2
- Exported
withMArrayS
- Switch to pure exception throwing for
read'
,write'
,modify'
andswap'
.MonadThrow
constraint prevented those functions to be used inST
monad. - Addition of
quicksort
,quicksortM_
,unstablePartitionRegionM
andunsafeUnstablePartitionRegionM
0.3.1
- Addition of
rangeStepInclusive'
- Addition of
flatten
makeLoadArray
has been deprecated intounsafeMakeLoadArray
.- A new safe
makeLoadArrayS
has been added. - Fix
infix 4
for(...)
and(..:)
range functions, so they can be easily composed with numeric operations - Addition of
imapSchedulerM_
andiforSchedulerM_
0.3.0
- Class hierarchy an associated methods:
getComp
moved fromConstruct
toLoad
Size
class lost array value parametere
.unsafeResize
andunsafeExtract
became their own classes
- New classes:
Resize
withunsafeResize
from oldSize
, except witharray
type parameter for applicability to mutableMArray
sExtract
withunsafeExtract
from oldSize
StrideLoad
, child ofLoad
ifoldlIO
and related no longer take list of capabilities, but instead respect the inner computation strategy. For that reason these folds have been removed:foldlOnP
,ifoldlOnP
,foldrOnP
,ifoldrOnP
fold
now is just like the one fromData.Foldable
takes no arguments and requires elements to be a monoidsingleton
does not accept computation strategy any more and createsSeq
array by default- New function
empty
. Ragged
functions are no longer exported, until the interface stabilizes and proper implementation of ragged arrays is in place.- Partial functions
read'
,write'
andswap'
now live in IO and throw proper exceptions. loadArray
is renamed toloadArrayM
and there is a new separate function (not part ofLoad
class) with the nameloadArray
that actually usesloadArrayM
- Moved
unsafeWithPtr
intoData.Massiv.Array.Unsafe
- Addition of:
unsafeArrayToForeignPtr
,unsafeMArrayToForeignPtr
,unsafeArrayFromForeignPtr
,unsafeArrayFromForeignPtr0
,unsafeMArrayFromForeignPtr
,unsafeMArrayFromForeignPtr0
- Addition of
castToByteString
,castFromByteString
- Addition of
makeUnsafeStencil
Window
now has anwindowUnrollIx2
field.- Addition of
insertWindow
anddropWindow
0.2.8.1
- Fix
sqrtA
function. Backport of #76
0.2.8
- Fixed a problem where convolution stencil size was not inverted, causing out of bounds memory read: #72
- Fixed an issue with windowed array where a stencil size is smaller than the array it is applied to
- Fixed incorrect cross-correlation stencil construction
0.2.7
- Fixed a serious performance regression in
Stencil
'sFunctor
instance, which was introduced in version0.2.3
- Added type and pattern synonyms
Sz
for future compatibility with version0.3
. Could be useful for migration.
0.2.6
- Add
expand*
family of functions. - Long awaited
makeArrayM
/makeArrayA
andmapM
/forM
/imapM
/iforM
/traverseA
/itraverseA
alnog with corresponding functions allowing for supplying representation. - Deprecate
mapP
andmapP_
in favor ofmapIO
andmapIO_
, while making latter respect theComp
. - Addition of a whole collection of mutable operators:
mapIO
/mapIO_
/imapIO
/imapIO_
/forIO
/forIO_
/iforIO
/iforIO_
createArray
/createArrayST
/createArrayST_
generateArray
/generateArrayIO
unfoldlPrim
/unfoldlPrim_
makeArrayA
,makeArrayAR
- Addition of cute synonyms:
(...)
and(..:)
0.2.5
- Fix for
insertDimension
#62
0.2.4.1
- Fix a bug in
zip
functions, where resulting array size would not take into account the size of one of the input arrays.
0.2.4
- Addition of inner folds:
ifoldlInner
,foldlInner
,ifoldrInner
andfoldrInner
- Addition of functions that can fold over any dimension (
foldlWithin
,foldlWithin'
, etc.) - Addition of
ifoldMono
andifoldSemi
, thus fixing: #54 - Improvement over manipulating index dimensions with addition of type level
Dimension n
data type and functions likegetDimension
,dropDimension
. - Addition of
insertDim
and type levelinsertDimension
as well aspullOutDim
andpullOutDimension
- Add partial
extractFromTo'
0.2.3
- Addition of
Profunctor
functions forStencil
:lmapStencil
,rmapStencil
andbimapStencil
- Addition of integration approximation:
Data.Massiv.Array.Numeric.Integral
- Removed overlapping instances for
DW
in favor of concrete instances. - Relaxed contraint restrictions on matrix multiplication
(|*|)
and slightly improved performance with rewrite rules to avoid double transform.
0.2.2
- Addition of
withMArray
,withMArrayST
. - Improved preformance of matrix multiplication
0.2.1
-
Addition of
Stride
and related functionscomputeWithStride
andcomputeWithStrideAs
. -
Addition of
Window
-
Addition of
loadArray
adnloadArrayWithStride
with default implementations that will become new loading functions in a subsequent release.loadArray
will replaceloadS
andloadP
, which will be deprecated in the next release and removed in the next major release. Some of this is discussed in #41 -
Addition of various conversion functions:
fromByteString
,toByteString
andtoBuilder
unwrapArray
,evalArray
,unwrapMutableArray
,evalMutableArray
unwrapNormalFormArray
,evalNormalFormArray
,unwrapNormalFormMutableArray
,evalNormalFormMutableArray
-
Fix:
Eq
instance forArray M ix e
0.2.0
- Fixed type signatures for
convertAs
andconvertProxy
- Added type constructors for
DW
andDI
Show
instance forDW
arrays.- Addition of
unsafeBackpermuteDW
. - Breaking changes:
- Create new
Data.Massiv.Array.Stencil.Unsafe
module and moveforStencilUnsafe
into it. - Rename of rank -> dimensions #25
- Removal
Eq
andOrd
instances forValue
#19 - Move border resolution to
mapStencil
frommakeStencil
.
- Removal
- Updated iterators
iterM
,iterM_
, etc. to have a separate step per dimension.
- Create new
0.1.6
Semigroup
andMonoid
instance forValue
.- Addition of
forStencilUnsafe
. - Fix
minimum
behaving asmaximum
. - Addition of
foldSemi
.
0.1.5
- Fix inverted stencil index calculation #12
- Add support for cross-correlation.
0.1.4
- Addition of Monoidal folding
foldMono
. - Expose
liftArray2
.
0.1.3
- Addition of
withPtr
andunsafeWithPtr
for Storable arrays - Addition of
computeInto
. - Exposed
makeWindowedArray
.
0.1.2
- Support for GHC-8.4 - instance of
Comp
forSemigroup
- Brought back support for GHC-7.10
0.1.1
- Addition of experimental
mapM
,imapM
,forM
,iforM
,generateM
andgenerateLinearM
functions. Fixes #5 - Addition of
Ord
instances for some array representations.
0.1.0
- Initial Release