packages feed

hw-prim 0.6.2.19 → 0.6.2.20

raw patch · 3 files changed

+27/−4 lines, 3 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ HaskellWorks.Data.ByteString: mmap :: FilePath -> IO ByteString
+ HaskellWorks.Data.Vector.Storable: mmap :: Storable a => FilePath -> IO (Vector a)

Files

hw-prim.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           hw-prim-version:        0.6.2.19+version:        0.6.2.20 synopsis:       Primitive functions and data types description:    Primitive functions and data types. category:       Data
src/HaskellWorks/Data/ByteString.hs view
@@ -1,10 +1,13 @@-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiWayIf        #-}+{-# LANGUAGE BangPatterns        #-}+{-# LANGUAGE FlexibleInstances   #-}+{-# LANGUAGE MultiWayIf          #-}+{-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.ByteString   ( chunkedBy   , ToByteString(..)   , ToByteStrings(..)+  , mmap   , rechunk   , rechunkPadded   , resegment@@ -13,8 +16,9 @@   ) where  import Control.Monad.ST-import Data.Semigroup   ((<>))+import Data.Semigroup     ((<>)) import Data.Word+import Foreign.ForeignPtr  import qualified Control.Monad.ST.Unsafe       as ST import qualified Data.ByteString               as BS@@ -24,6 +28,7 @@ import qualified Data.Vector.Storable          as DVS import qualified Data.Vector.Storable.Mutable  as DVSM import qualified System.IO                     as IO+import qualified System.IO.MMap                as IO import qualified System.IO.Unsafe              as IO  class ToByteString a where@@ -208,3 +213,9 @@           if BS.null c             then IO.hClose h >> return []             else (c:) <$> lazyRead++mmap :: FilePath -> IO BS.ByteString+mmap filepath = do+  (fptr :: ForeignPtr Word8, offset, size) <- IO.mmapFileForeignPtr filepath IO.ReadOnly Nothing+  let !bs = BSI.fromForeignPtr (castForeignPtr fptr) offset size+  return bs
src/HaskellWorks/Data/Vector/Storable.hs view
@@ -1,19 +1,23 @@+{-# LANGUAGE BangPatterns        #-} {-# LANGUAGE ScopedTypeVariables #-}  module HaskellWorks.Data.Vector.Storable   ( padded   , foldMap   , mapAccumL+  , mmap   ) where  import Control.Monad.ST     (ST) import Data.Monoid          (Monoid (..), (<>)) import Data.Vector.Storable (Storable) import Data.Word+import Foreign.ForeignPtr import Prelude              hiding (foldMap)  import qualified Data.Vector.Storable         as DVS import qualified Data.Vector.Storable.Mutable as DVSM+import qualified System.IO.MMap               as IO  {-# ANN module ("HLint: ignore Redundant do"        :: String) #-} @@ -42,3 +46,11 @@             go (i + 1) a1 vc           else return a0 {-# INLINE mapAccumL #-}++-- | MMap the file as a storable vector.  If the size of the file is not a multiple of the element size+-- in bytes, then the last few bytes of the file will not be included in the vector.+mmap :: Storable a => FilePath -> IO (DVS.Vector a)+mmap filepath = do+  (fptr :: ForeignPtr Word8, offset, size) <- IO.mmapFileForeignPtr filepath IO.ReadOnly Nothing+  let !v = DVS.unsafeFromForeignPtr fptr offset size+  return (DVS.unsafeCast v)