Changelog History
Page 1
-
v0.7.3 Changes
February 01, 2021๐ Build Issues
- ๐ Fix build issues with primitive package version >= 0.7.1.
- ๐ Fix build issues on armv7.
-
v0.7.2 Changes
April 01, 2020๐ Bug Fixes
- ๐ Fix a bug in the
Applicative
andFunctor
instances of theFold
data type.
๐ Build Issues
- ๐ Fix a bug that occasionally caused a build failure on windows when
used with
stack
orstack ghci
. - ๐ Now builds on 32-bit machines.
- ๐ Now builds with
primitive
package version >= 0.5.4 && <= 0.6.4.0 - ๐ Now builds with newer
QuickCheck
package version >= 2.14 && < 2.15. - ๐ Now builds with GHC 8.10.
- ๐ Fix a bug in the
-
v0.7.1 Changes
February 01, 2020๐ Bug Fixes
- ๐ Fix a bug that caused
findIndices
to return wrong indices in some cases. - ๐ Fix a bug in
tap
,chunksOf
that caused memory consumption to increase in some cases. - ๐ Fix a space leak in concurrent streams (
async
,wAsync
, andahead
) that caused memory consumption to increase with the number of elements in the stream, especially when built with-threaded
and used with-N
RTS option. The issue occurs only in cases when a worker thread happens to be used continuously for a long time. - ๐ Fix scheduling of WAsyncT stream style to be in round-robin fashion.
- ๐ Now builds with
containers
package version < 0.5.8. - ๐ Now builds with
network
package version >= 3.0.0.0 && < 3.1.0.0.
Behavior change
- Combinators in
Streamly.Network.Inet.TCP
no longer use TCPNoDelay
andReuseAddr
socket options by default. These options can now be specified using appropriate combinators.
๐ Performance
- ๐ฆ Now uses
fusion-plugin
package for predictable stream fusion optimizations - ๐ Significant improvement in performance of concurrent stream operations.
- ๐ Improved space and time performance of
Foldable
instance.
- ๐ Fix a bug that caused
-
v0.7.0 Changes
November 01, 2019๐ฅ Breaking changes
- ๐ Change the signature of
foldrM
to ensure that it is lazy - ๐ Change the signature of
iterateM
to ensure that it is lazy. scanx
would now require an additionalMonad m
constraint.
Behavior change
- Earlier
ParallelT
was unaffected bymaxBuffer
directive, nowmaxBuffer
can limit the buffer of aParallelT
stream as well. When the buffer becomes full, the producer threads block. - 0๏ธโฃ
ParallelT
streams no longer have an unlimited buffer by default. Now the buffer for parallel streams is limited to 1500 by default, the same as other concurrent stream types.
๐ Deprecations
In
Streamly.Prelude
:runStream
has been replaced bydrain
runN
has been replaced bydrainN
runWhile
has been replaced bydrainWhile
fromHandle
has been deprecated. Please useStreamly.FileSystem.Handle.read
,Streamly.Data.Unicode.Stream.decodeUtf8
andsplitOnSuffix
withStreamly.Data.Fold.toList
to split the stream to a stream ofString
separated by a newline.toHandle
has been deprecated. Please useintersperse
andconcatUnfold
to add newlines to a stream,Streamly.Data.Unicode.Stream.encodeUtf8
for encoding andStreamly.FileSystem.Handle.write
for writing to a file handle.- Deprecate
scanx
,foldx
,foldxM
,foldr1
- Remove deprecated APIs
foldl
,foldlM
- Replace deprecated API
scan
with a new signature, to scan using Fold.
In
Streamly
module:runStream
has been deprecated, please useStreamly.Prelude.drain
โ Remove deprecated module
Streamly.Time
(moved to Streamly.Internal.Data.Time)โ Remove module
Streamly.Internal
(functionality moved to the Internal hierarchy)
๐ Bug Fixes
- ๐ Fix a bug that caused
uniq
function to yield the same element twice. - ๐ Fix a bug that caused "thread blocked indefinitely in an MVar operation" exception in a parallel stream.
- ๐ Fix unbounded memory usage (leak) in
parallel
combinator. The bug manifests when large streams are combined usingparallel
.
Major Enhancements
๐ This release contains a lot of new features and major enhancements. For more ๐ details on the new features described below please see the haddock docs of the modules on hackage.
๐ป Exception Handling
๐ See
Streamly.Prelude
for new exception handling combinators likebefore
,after
,bracket
,onException
,finally
,handle
etc.Composable Folds
Streamly.Data.Fold
module provides composable folds (stream consumers). Folds ๐ allow splitting, grouping, partitioning, unzipping and nesting a stream onto multiple folds without breaking the stream. Combinators are provided for ๐ temporal and spatial window based fold operations, for example, to support โฑ folding and aggregating data for timeout or inactivity based sessions.Composable Unfolds
Streamly.Data.Unfold
module provides composable stream generators. Unfolds allow ๐ high performance merging/flattening/combining of stream generators.Streaming File IO
Streamly.FileSystem.Handle
provides handle based streaming file IO operations.Streaming Network IO
Streamly.Network.Socket
provides socket based streaming network IO operations.๐
Streamly.Network.Inet.TCP
provides combinators to build Inet/TCP clients and servers.
Concurrent concatMap
The new
concatMapWith
inStreamly.Prelude
combinator performs a ๐concatMap
using a supplied merge/concat strategy. This is a very powerful combinator as you can, for example, concat streams concurrently using this.Other Enhancements
โ Add the following new features/modules:
- Unicode Strings:
Streamly.Data.Unicode.Stream
module provides encoding/decoding of character streams and other character stream operations. - Arrays:
Streamly.Memory.Array
module provides arrays for efficient in-memory buffering and efficient interfacing with IO.
- Unicode Strings:
โ Add the following to
Streamly.Prelude
:unfold
,fold
,scan
andpostscan
concatUnfold
to concat a stream after unfolding each elementintervalsOf
andchunksOf
splitOn
,splitOnSuffix
,splitWithSuffix
, andwordsBy
groups
,groupsBy
andgroupsByRolling
postscanl'
andpostscanlM'
intersperse
intersperse an element in between consecutive elements in streamtrace
combinator maps a monadic function on a stream just for side effectstap
redirects a copy of the stream to aFold
- ๐ Change the signature of
-
v0.6.1 Changes
March 01, 2019๐ Bug Fixes
- ๐ Fix a bug that caused
maxThreads
directive to be ignored when rate control was not used.
โจ Enhancements
- โ Add GHCJS support
- โ Remove dependency on "clock" package
- ๐ Fix a bug that caused
-
v0.6.0 Changes
December 01, 2018๐ฅ Breaking changes
Monad
constraint may be needed on some of the existing APIs (findIndices
andelemIndices
).
โจ Enhancements
- โ Add the following functions to Streamly.Prelude:
- Generation:
replicate
,fromIndices
,fromIndicesM
- Enumeration:
Enumerable
type class,enumerateFrom
,enumerateFromTo
,enumerateFromThen
,enumerateFromThenTo
,enumerate
,enumerateTo
- Running:
runN
,runWhile
- Folds:
(!!)
,maximumBy
,minimumBy
,the
- Scans:
scanl1'
, `scanl1M' - Filters:
uniq
,insertBy
,deleteBy
,findM
- Multi-stream:
eqBy
,cmpBy
,mergeBy
,mergeByM
,mergeAsyncBy
,mergeAsyncByM
,isPrefixOf
,isSubsequenceOf
,stripPrefix
,concatMap
,concatMapM
,indexed
,indexedR
- Generation:
- Following instances were added for
SerialT m
,WSerialT m
andZipSerialM m
:- When
m
~Identity
: IsList, Eq, Ord, Show, Read, IsString, NFData, NFData1, Traversable - When
m
isFoldable
: Foldable
- When
- ๐ Performance improvements
- โ Add benchmarks to measure composed and iterated operations
-
v0.5.2 Changes
October 01, 2018๐ Bug Fixes
- ๐ป Cleanup any pending threads when an exception occurs.
- ๐ Fixed a livelock in ahead style streams. The problem manifests sometimes when multiple streams are merged together in ahead style and one of them is a nil stream.
- As per expected concurrency semantics each forked concurrent task must run
with the monadic state captured at the fork point. This release fixes a bug,
which, in some cases caused an incorrect monadic state to be used for a
concurrent action, leading to unexpected behavior when concurrent streams are
used in a stateful monad e.g.
StateT
. Particularly, this bug cannot affectReaderT
.
-
v0.5.1 Changes
September 01, 2018- ๐ Performance improvements, especially space consumption, for concurrent streams
-
v0.5.0 Changes
September 01, 2018๐ Bug Fixes
- Leftover threads are now cleaned up as soon as the consumer is garbage collected.
- ๐ Fix a bug in concurrent function application that in certain cases would unnecessarily share the concurrency state resulting in incorrect output stream.
- ๐ Fix passing of state across
parallel
,async
,wAsync
,ahead
,serial
,wSerial
combinators. Without this fix combinators that rely on state passing e.g.maxThreads
andmaxBuffer
won't work across these combinators.
โจ Enhancements
- โ Added rate limiting combinators
rate
,avgRate
,minRate
,maxRate
andconstRate
to control the yield rate of a stream. - โ Add
foldl1'
,foldr1
,intersperseM
,find
,lookup
,and
,or
,findIndices
,findIndex
,elemIndices
,elemIndex
,init
to Prelude
๐ Deprecations
- ๐ The
Streamly.Time
module is now deprecated, its functionality is subsumed by the new rate limiting combinators.
-
v0.4.1 Changes
July 01, 2018๐ Bug Fixes
- ๐ foldxM was not fully strict, fixed.