massiv 1.0.4.0 → 1.0.4.1
raw patch · 7 files changed
+33/−13 lines, 7 filesdep ~basedep ~randomPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, random
API changes (from Hackage documentation)
- Data.Massiv.Core.List: instance GHC.Types.Coercible (Data.Massiv.Core.List.Elt ix e) (Data.Massiv.Core.List.ListItem ix e) => GHC.Exts.IsList (Data.Massiv.Core.Common.Array Data.Massiv.Core.List.L ix e)
- Data.Massiv.Core.List: instance GHC.Types.Coercible (Data.Massiv.Core.List.Elt ix e) (Data.Massiv.Core.List.ListItem ix e) => GHC.Exts.IsList (Data.Massiv.Core.List.List ix e)
+ Data.Massiv.Core.List: instance GHC.Types.Coercible (Data.Massiv.Core.List.Elt ix e) (Data.Massiv.Core.List.ListItem ix e) => GHC.IsList.IsList (Data.Massiv.Core.Common.Array Data.Massiv.Core.List.L ix e)
+ Data.Massiv.Core.List: instance GHC.Types.Coercible (Data.Massiv.Core.List.Elt ix e) (Data.Massiv.Core.List.ListItem ix e) => GHC.IsList.IsList (Data.Massiv.Core.List.List ix e)
- Data.Massiv.Array.Manifest: class Prim a
+ Data.Massiv.Array.Manifest: class () => Prim a
- Data.Massiv.Array.Manifest: class Storable a
+ Data.Massiv.Array.Manifest: class () => Storable a
- Data.Massiv.Core: data Comp
+ Data.Massiv.Core: data () => Comp
- Data.Massiv.Core: data Scheduler s a
+ Data.Massiv.Core: data () => Scheduler s a
- Data.Massiv.Core: data SchedulerWS ws a
+ Data.Massiv.Core: data () => SchedulerWS ws a
- Data.Massiv.Core: data SomeException
+ Data.Massiv.Core: data () => SomeException
- Data.Massiv.Core: data WorkerStates ws
+ Data.Massiv.Core: data () => WorkerStates ws
- Data.Massiv.Core: throwM :: (MonadThrow m, Exception e) => e -> m a
+ Data.Massiv.Core: throwM :: (MonadThrow m, HasCallStack, Exception e) => e -> m a
Files
- README.md +3/−3
- massiv.cabal +8/−5
- src/Data/Massiv/Array/Ops/Construct.hs +2/−2
- src/Data/Massiv/Array/Ops/Sort.hs +1/−1
- src/Data/Massiv/Core/Index/Internal.hs +8/−2
- src/Data/Massiv/Core/Index/Ix.hs +8/−0
- src/Data/Massiv/Core/Index/Stride.hs +3/−0
README.md view
@@ -12,12 +12,12 @@ | ![GitHub top language][GHL] | [![GA-CI][GA-B]][GA-L] | [![Coveralls][Co-B]][Co-L] | [![Gitter][Gi-B]][Gi-L] [GHL]: https://img.shields.io/github/languages/top/lehins/massiv.svg-[GA-B]: https://github.com/lehins/massiv/workflows/massiv-CI/badge.svg?branch=master-[GA-L]: https://github.com/lehins/massiv/actions+[GA-B]: https://github.com/lehins/massiv/actions/workflows/haskell.yml/badge.svg?branch=master+[GA-L]: https://github.com/lehins/massiv/actions/workflows/haskell.yml [Co-B]: https://coveralls.io/repos/github/lehins/massiv/badge.svg?branch=master [Co-L]: https://coveralls.io/github/lehins/massiv?branch=master [Gi-B]: https://badges.gitter.im/haskell-massiv/Lobby.svg-[Gi-L]: https://gitter.im/haskell-massiv/Lobby+[Gi-L]: https://app.gitter.im/#/room/#haskell-massiv_Lobby:gitter.im | Package | Hackage | Nightly | LTS | |:-------------------|:-------:|:-------:|:---:|
massiv.cabal view
@@ -1,5 +1,5 @@ name: massiv-version: 1.0.4.0+version: 1.0.4.1 synopsis: Massiv (Массив) is an Array Library. description: Multi-dimensional Arrays with fusion, stencils and parallel computation. homepage: https://github.com/lehins/massiv@@ -20,9 +20,12 @@ , GHC == 8.8.4 , GHC == 8.10.7 , GHC == 9.0.2- , GHC == 9.2.7- , GHC == 9.4.4- , GHC == 9.6.1+ , GHC == 9.2.8+ , GHC == 9.4.8+ , GHC == 9.6.6+ , GHC == 9.8.4+ , GHC == 9.10.1+ , GHC == 9.12.1 flag unsafe-checks description: Enable all the bounds checks for unsafe functions at the cost of@@ -116,7 +119,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: doctests.hs- build-depends: base+ build-depends: base >= 4.9 && < 5 , doctest >=0.15 if impl(ghc >= 8.2) && impl(ghc < 8.10) build-depends: QuickCheck
src/Data/Massiv/Array/Ops/Construct.hs view
@@ -317,7 +317,7 @@ -> Sz ix -- ^ Resulting size of the array. -> Array DL ix e-randomArray gen splitGen nextRandom comp sz = unsafeMakeLoadArray comp sz Nothing load+randomArray gen splitGen' nextRandom comp sz = unsafeMakeLoadArray comp sz Nothing load where !totalLength = totalElem sz load :: forall s. Scheduler s () -> Ix1 -> (Ix1 -> e -> ST s ()) -> ST s ()@@ -332,7 +332,7 @@ let (genI0, genI1) = if numWorkers scheduler == 1 then (genI, genI)- else splitGen genI+ else splitGen' genI scheduleWork_ scheduler $ void $ loopM start (< start + chunkLength) (+ 1) genI0 writeRandom
src/Data/Massiv/Array/Ops/Sort.hs view
@@ -199,7 +199,7 @@ | otherwise = qsortPar depthPar 0 (k - 1) where -- How deep into the search tree should we continue scheduling jobs. Constants below- -- were discovered imperically:+ -- were discovered empirically: depthPar = min (logNumWorkers + 4) (logSize - 10) k = unSz (sizeOfMArray marr) -- We must use log becuase decinding into a tree creates an exponential number of jobs
src/Data/Massiv/Core/Index/Internal.hs view
@@ -143,6 +143,9 @@ instance UniformRange ix => UniformRange (Sz ix) where uniformRM (SafeSz l, SafeSz u) g = SafeSz <$> uniformRM (l, u) g {-# INLINE uniformRM #-}+#if MIN_VERSION_random(1,3,0)+ isInRange (SafeSz l, SafeSz u) (SafeSz k) = isInRange (l, u) k+#endif instance (UniformRange ix, Index ix) => Random (Sz ix) @@ -365,6 +368,9 @@ instance UniformRange Dim where uniformRM r g = Dim <$> uniformRM (coerce r) g+#if MIN_VERSION_random(1,3,0)+ isInRange = isInRangeOrd+#endif instance Random Dim @@ -736,7 +742,7 @@ -- @since 1.0.2 iterF :: ix -> ix -> ix -> (Int -> Int -> Bool) -> f a -> (ix -> f a -> f a) -> f a default iterF- :: (Index (Lower ix))+ :: Index (Lower ix) => ix -> ix -> ix@@ -758,7 +764,7 @@ -- @since 0.1.0 stepNextMF :: ix -> ix -> ix -> (Int -> Int -> Bool) -> (Maybe ix -> f a) -> f a default stepNextMF- :: (Index (Lower ix))+ :: Index (Lower ix) => ix -> ix -> ix
src/Data/Massiv/Core/Index/Ix.hs view
@@ -172,6 +172,10 @@ instance UniformRange Ix2 where uniformRM (l1 :. l2, u1 :. u2) g = (:.) <$> uniformRM (l1, u1) g <*> uniformRM (l2, u2) g {-# INLINE uniformRM #-}+#if MIN_VERSION_random(1,3,0)+ isInRange (l1 :. l2, u1 :. u2) (i1 :. i2) =+ isInRangeOrd (l1, u1) i1 && isInRangeOrd (l2, u2) i2+#endif instance Random Ix2 @@ -182,6 +186,10 @@ instance UniformRange (Ix (n - 1)) => UniformRange (IxN n) where uniformRM (l1 :> l2, u1 :> u2) g = (:>) <$> uniformRM (l1, u1) g <*> uniformRM (l2, u2) g {-# INLINE uniformRM #-}+#if MIN_VERSION_random(1,3,0)+ isInRange (l1 :> l2, u1 :> u2) (i1 :> i2) =+ isInRangeOrd (l1, u1) i1 && isInRange (l2, u2) i2+#endif instance Random (Ix (n - 1)) => Random (IxN n) where random g =
src/Data/Massiv/Core/Index/Stride.hs view
@@ -72,6 +72,9 @@ instance UniformRange ix => UniformRange (Stride ix) where uniformRM (SafeStride l, SafeStride u) g = SafeStride <$> uniformRM (l, u) g {-# INLINE uniformRM #-}+#if MIN_VERSION_random(1,3,0)+ isInRange (SafeStride l, SafeStride u) (SafeStride k) = isInRange (l, u) k+#endif instance (UniformRange ix, Index ix) => Random (Stride ix)