All Versions
Latest Version
Avg Release Cycle
72 days
Latest Release
268 days ago

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 and Functor instances of the Fold data type.

    ๐Ÿ— Build Issues

    • ๐Ÿ›  Fix a bug that occasionally caused a build failure on windows when used with stack or stack ghci.
    • ๐Ÿ— Now builds on 32-bit machines.
    • ๐Ÿ— Now builds with primitive package version >= 0.5.4 && <=
    • ๐Ÿ— Now builds with newer QuickCheck package version >= 2.14 && < 2.15.
    • ๐Ÿ— Now builds with GHC 8.10.
  • 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, and ahead) 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 >= && <

    Behavior change

    • Combinators in Streamly.Network.Inet.TCP no longer use TCP NoDelay and ReuseAddr 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.
  • 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 additional Monad m constraint.

    Behavior change

    • Earlier ParallelT was unaffected by maxBuffer directive, now maxBuffer can limit the buffer of a ParallelT 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 by drain
      • runN has been replaced by drainN
      • runWhile has been replaced by drainWhile
      • fromHandle has been deprecated. Please use, Streamly.Data.Unicode.Stream.decodeUtf8 and splitOnSuffix with Streamly.Data.Fold.toList to split the stream to a stream of String separated by a newline.
      • toHandle has been deprecated. Please use intersperse and concatUnfold to add newlines to a stream, Streamly.Data.Unicode.Stream.encodeUtf8 for encoding and Streamly.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 use Streamly.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 using parallel.

    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 like before, 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 in Streamly.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.
    • โž• Add the following to Streamly.Prelude:

      • unfold, fold, scan and postscan
      • concatUnfold to concat a stream after unfolding each element
      • intervalsOf and chunksOf
      • splitOn, splitOnSuffix, splitWithSuffix, and wordsBy
      • groups, groupsBy and groupsByRolling
      • postscanl' and postscanlM'
      • intersperse intersperse an element in between consecutive elements in stream
      • trace combinator maps a monadic function on a stream just for side effects
      • tap redirects a copy of the stream to a Fold
  • 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
  • v0.6.0 Changes

    December 01, 2018

    ๐Ÿ’ฅ Breaking changes

    • Monad constraint may be needed on some of the existing APIs (findIndices and elemIndices).

    โœจ 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
    • Following instances were added for SerialT m, WSerialT m and ZipSerialM m:
      • When m ~ Identity: IsList, Eq, Ord, Show, Read, IsString, NFData, NFData1, Traversable
      • When m is Foldable: Foldable
    • ๐ŸŽ 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 affect ReaderT.
  • 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 and maxBuffer won't work across these combinators.

    โœจ Enhancements

    • โž• Added rate limiting combinators rate, avgRate, minRate, maxRate and constRate 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.