From d3b5f4a11fe295958ff35820e866bef4e3b65350 Mon Sep 17 00:00:00 2001 From: Harendra Kumar Date: Sat, 17 May 2025 19:49:37 +0530 Subject: [PATCH 1/2] Fix windows build break due to unsafeExtend change --- core/src/Streamly/Internal/FileSystem/Windows/ReadDir.hsc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/Streamly/Internal/FileSystem/Windows/ReadDir.hsc b/core/src/Streamly/Internal/FileSystem/Windows/ReadDir.hsc index 0f478b59bf..d6583132f4 100644 --- a/core/src/Streamly/Internal/FileSystem/Windows/ReadDir.hsc +++ b/core/src/Streamly/Internal/FileSystem/Windows/ReadDir.hsc @@ -156,7 +156,7 @@ newtype DirStream = openDirStream :: WindowsPath -> IO DirStream openDirStream p = do - let path = Path.unsafeAppend p $ Path.unsafeFromString "*" + let path = Path.unsafeExtend p $ Path.unsafeFromString "*" fp_finddata <- mallocForeignPtrBytes (# const sizeof(WIN32_FIND_DATAW) ) withForeignPtr fp_finddata $ \dataPtr -> do handle <- From f568c765e5f026187e0f2c224c2fe315b73e5387 Mon Sep 17 00:00:00 2001 From: Harendra Kumar Date: Sat, 17 May 2025 17:56:24 +0530 Subject: [PATCH 2/2] Rename foldBreakChunksK to foldBreak in Array module --- benchmark/Streamly/Benchmark/Data/Array/Stream.hs | 4 ++-- core/src/Streamly/Internal/Data/Array.hs | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/benchmark/Streamly/Benchmark/Data/Array/Stream.hs b/benchmark/Streamly/Benchmark/Data/Array/Stream.hs index 50eca9608e..d05f60d81a 100644 --- a/benchmark/Streamly/Benchmark/Data/Array/Stream.hs +++ b/benchmark/Streamly/Benchmark/Data/Array/Stream.hs @@ -234,7 +234,7 @@ drainWhile p = Parser.takeWhile p Fold.drain {-# INLINE fold #-} fold :: Stream IO (Array.Array Int) -> IO () -fold s = void $ Array.foldBreakChunksK Fold.drain $ StreamK.fromStream s +fold s = void $ Array.foldBreak Fold.drain $ StreamK.fromStream s {-# INLINE parse #-} parse :: Int -> Stream IO (Array.Array Int) -> IO () @@ -244,7 +244,7 @@ parse value s = {-# INLINE foldBreak #-} foldBreak :: StreamK IO (Array.Array Int) -> IO () foldBreak s = do - (r, s1) <- Array.foldBreakChunksK Fold.one s + (r, s1) <- Array.foldBreak Fold.one s when (isJust r) $ foldBreak s1 {-# INLINE parseBreak #-} diff --git a/core/src/Streamly/Internal/Data/Array.hs b/core/src/Streamly/Internal/Data/Array.hs index 6402a079df..3ee5986611 100644 --- a/core/src/Streamly/Internal/Data/Array.hs +++ b/core/src/Streamly/Internal/Data/Array.hs @@ -73,7 +73,7 @@ module Streamly.Internal.Data.Array -- * Parsing Stream of Arrays , foldBreakChunks -- Uses Stream, bad perf on break , foldChunks - , foldBreakChunksK -- XXX rename to foldBreak + , foldBreak , parseBreakChunksK -- XXX uses Parser. parseBreak is better? , parserK , parseBreak @@ -105,6 +105,7 @@ module Streamly.Internal.Data.Array , compactOnByteSuffix , splitOn , fold + , foldBreakChunksK ) where @@ -721,14 +722,14 @@ foldChunks f s = fmap fst (foldBreakChunks f s) -- -- We can compare perf and remove this one or define it in terms of that. -- -foldBreakChunksK :: forall m a b. (MonadIO m, Unbox a) => +foldBreak, foldBreakChunksK :: forall m a b. (MonadIO m, Unbox a) => Fold m a b -> StreamK m (Array a) -> m (b, StreamK m (Array a)) {- foldBreakChunksK f s = fmap (first (fromRight undefined)) $ StreamK.parseBreakChunks (ParserK.adaptC (Parser.fromFold f)) s -} -foldBreakChunksK (Fold fstep initial _ final) stream = do +foldBreak (Fold fstep initial _ final) stream = do res <- initial case res of Fold.Partial fs -> go fs stream @@ -758,6 +759,8 @@ foldBreakChunksK (Fold fstep initial _ final) stream = do return $! (b, StreamK.cons arr st) Fold.Partial fs1 -> goArray fs1 st fp next +RENAME(foldBreakChunksK,foldBreak) + {- -- This can be generalized to any type provided it can be unfolded to a stream -- and it can be combined using a semigroup operation.