2018-06-23 04:20:59 +03:00
|
|
|
## Unreleased
|
|
|
|
|
2018-06-26 03:30:47 +03:00
|
|
|
### Breaking changes
|
|
|
|
|
2018-06-27 06:03:06 +03:00
|
|
|
* Signatures of `zipWithM` and `zipAsyncWithM` have changed
|
2018-06-26 03:30:47 +03:00
|
|
|
* Some functions in prelude now require an additional Monad constraint for the
|
|
|
|
underlying type of the stream.
|
|
|
|
|
2018-06-23 04:20:59 +03:00
|
|
|
### Deprecations
|
|
|
|
|
|
|
|
* `once` has been deprecated and renamed to `yieldM`
|
|
|
|
|
2018-06-23 05:05:35 +03:00
|
|
|
### Enhancements
|
|
|
|
|
|
|
|
* Add `yield` to construct a singleton stream from a pure value
|
|
|
|
* Add `repeat` to generate an infinite stream by repeating a pure value
|
2018-06-24 03:49:41 +03:00
|
|
|
* Add `fromList` and `fromListM` to generate streams from lists, faster than
|
|
|
|
`fromFoldable` and `fromFoldableM`
|
2018-06-24 20:13:30 +03:00
|
|
|
* Add `map` as a synonym of fmap
|
2018-06-25 00:45:22 +03:00
|
|
|
* Add `scanlM'`, the monadic version of scanl'
|
2018-06-26 03:30:47 +03:00
|
|
|
* Add `takeWhileM` and `dropWhileM`
|
2018-06-24 03:49:41 +03:00
|
|
|
* Significant performance improvements
|
2018-06-23 05:05:35 +03:00
|
|
|
|
2018-06-14 23:46:34 +03:00
|
|
|
## 0.3.0
|
2018-05-17 11:43:59 +03:00
|
|
|
|
2018-05-24 14:18:48 +03:00
|
|
|
### Breaking changes
|
|
|
|
|
2018-05-26 14:32:36 +03:00
|
|
|
* Some prelude functions, to whom concurrency capability has been added, will
|
2018-05-24 14:18:48 +03:00
|
|
|
now require a `MonadAsync` constraint.
|
|
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
|
|
|
|
* Fixed a race due to which, in a rare case, we might block indefinitely on
|
|
|
|
an MVar due to a lost wakeup.
|
|
|
|
* Fixed an issue in adaptive concurrency. The issue caused us to stop creating
|
2018-06-14 22:14:15 +03:00
|
|
|
more worker threads in some cases due to a race. This bug would not cause any
|
|
|
|
functional issue but may reduce concurrency in some cases.
|
2018-05-24 14:18:48 +03:00
|
|
|
|
|
|
|
### Enhancements
|
|
|
|
* Added a concurrent lookahead stream type `Ahead`
|
|
|
|
* Added `fromFoldableM` API that creates a stream from a container of monadic
|
|
|
|
actions
|
|
|
|
* Monadic stream generation functions `consM`, `|:`, `unfoldrM`, `replicateM`,
|
|
|
|
`repeatM`, `iterateM` and `fromFoldableM` can now generate streams
|
|
|
|
concurrently when used with concurrent stream types.
|
|
|
|
* Monad transformation functions `mapM` and `sequence` can now map actions
|
|
|
|
concurrently when used at appropriate stream types.
|
2018-05-26 14:32:36 +03:00
|
|
|
* Added concurrent function application operators to run stages of a
|
|
|
|
stream processing function application pipeline concurrently.
|
2018-06-14 22:14:15 +03:00
|
|
|
* Added `mapMaybe` and `mapMaybeM`.
|
2018-06-05 15:33:55 +03:00
|
|
|
|
|
|
|
## 0.2.1
|
|
|
|
|
|
|
|
### Bug Fixes
|
|
|
|
* Fixed a bug that caused some transformation ops to return incorrect results
|
|
|
|
when used with concurrent streams. The affected ops are `take`, `filter`,
|
|
|
|
`takeWhile`, `drop`, `dropWhile`, and `reverse`.
|
2018-05-17 11:43:59 +03:00
|
|
|
|
2018-05-04 23:32:41 +03:00
|
|
|
## 0.2.0
|
2018-03-26 00:52:07 +03:00
|
|
|
|
2018-04-15 11:39:49 +03:00
|
|
|
### Breaking changes
|
2018-05-13 07:43:26 +03:00
|
|
|
* Changed the semantics of the Semigroup instance for `InterleavedT`, `AsyncT`
|
2018-04-17 15:19:35 +03:00
|
|
|
and `ParallelT`. The new semantics are as follows:
|
|
|
|
* For `InterleavedT`, `<>` operation interleaves two streams
|
|
|
|
* For `AsyncT`, `<>` now concurrently merges two streams in a left biased
|
|
|
|
manner using demand based concurrency.
|
|
|
|
* For `ParallelT`, the `<>` operation now concurrently meges the two streams
|
|
|
|
in a fairly parallel manner.
|
|
|
|
|
2018-05-13 07:43:26 +03:00
|
|
|
To adapt to the new changes, replace `<>` with `serial` wherever it is used
|
2018-04-18 15:02:25 +03:00
|
|
|
for stream types other than `StreamT`.
|
2018-04-17 15:19:35 +03:00
|
|
|
|
2018-05-04 23:32:41 +03:00
|
|
|
* Remove the `Alternative` instance. To adapt to this change replace any usage
|
|
|
|
of `<|>` with `parallel` and `empty` with `nil`.
|
2018-05-13 07:43:26 +03:00
|
|
|
* Stream type now defaults to the `SerialT` type unless explicitly specified
|
2018-04-18 08:48:08 +03:00
|
|
|
using a type combinator or a monomorphic type. This change reduces puzzling
|
|
|
|
type errors for beginners. It includes the following two changes:
|
2018-05-13 07:43:26 +03:00
|
|
|
* Change the type of all stream elimination functions to use `SerialT`
|
2018-04-18 15:02:25 +03:00
|
|
|
instead of a polymorphic type. This makes sure that the stream type is
|
|
|
|
always fixed at all exits.
|
|
|
|
* Change the type combinators (e.g. `parallely`) to only fix the argument
|
|
|
|
stream type and the output stream type remains polymorphic.
|
2018-05-13 08:35:33 +03:00
|
|
|
|
2018-04-18 15:02:25 +03:00
|
|
|
Stream types may have to be changed or type combinators may have to be added
|
|
|
|
or removed to adapt to this change.
|
2018-04-17 15:19:35 +03:00
|
|
|
* Change the type of `foldrM` to make it consistent with `foldrM` in base.
|
2018-05-13 07:43:26 +03:00
|
|
|
* `async` is renamed to `mkAsync` and `async` is now a new API with a different
|
|
|
|
meaning.
|
|
|
|
* `ZipAsync` is renamed to `ZipAsyncM` and `ZipAsync` is now ZipAsyncM
|
|
|
|
specialized to the IO Monad.
|
2018-04-24 18:00:01 +03:00
|
|
|
* Remove the `MonadError` instance as it was not working correctly for
|
|
|
|
parallel compositions. Use `MonadThrow` instead for error propagation.
|
2018-04-22 20:53:23 +03:00
|
|
|
* Remove Num/Fractional/Floating instances as they are not very useful. Use
|
|
|
|
`fmap` and `liftA2` instead.
|
2018-03-26 00:52:07 +03:00
|
|
|
|
2018-04-15 11:39:49 +03:00
|
|
|
### Deprecations
|
2018-04-15 15:43:04 +03:00
|
|
|
* Deprecate and rename the following symbols:
|
2018-04-18 17:44:29 +03:00
|
|
|
* `Streaming` to `IsStream`
|
|
|
|
* `runStreaming` to `runStream`
|
2018-05-13 07:43:26 +03:00
|
|
|
* `StreamT` to `SerialT`
|
|
|
|
* `InterleavedT` to `WSerialT`
|
|
|
|
* `ZipStream` to `ZipSerialM`
|
|
|
|
* `ZipAsync` to `ZipAsyncM`
|
|
|
|
* `interleaving` to `wSerially`
|
|
|
|
* `zipping` to `zipSerially`
|
|
|
|
* `zippingAsync` to `zipAsyncly`
|
|
|
|
* `<=>` to `wSerial`
|
|
|
|
* `<|` to `async`
|
2018-04-15 18:36:45 +03:00
|
|
|
* `each` to `fromFoldable`
|
2018-04-15 15:43:04 +03:00
|
|
|
* `scan` to `scanx`
|
|
|
|
* `foldl` to `foldx`
|
|
|
|
* `foldlM` to `foldxM`
|
2018-05-07 16:47:02 +03:00
|
|
|
* Deprecate the following symbols for future removal:
|
2018-04-18 15:02:25 +03:00
|
|
|
* `runStreamT`
|
|
|
|
* `runInterleavedT`
|
|
|
|
* `runAsyncT`
|
|
|
|
* `runParallelT`
|
|
|
|
* `runZipStream`
|
|
|
|
* `runZipAsync`
|
2018-04-15 15:43:04 +03:00
|
|
|
|
|
|
|
### Enhancements
|
|
|
|
* Add the following functions:
|
2018-05-04 21:53:03 +03:00
|
|
|
* `consM` and `|:` operator to construct streams from monadic actions
|
|
|
|
* `once` to create a singleton stream from a monadic action
|
|
|
|
* `repeatM` to construct a stream by repeating a monadic action
|
2018-04-15 15:43:04 +03:00
|
|
|
* `scanl'` strict left scan
|
|
|
|
* `foldl'` strict left fold
|
|
|
|
* `foldlM'` strict left fold with a monadic fold function
|
2018-05-13 07:43:26 +03:00
|
|
|
* `serial` run two streams serially one after the other
|
|
|
|
* `async` run two streams asynchronously
|
2018-04-18 08:48:08 +03:00
|
|
|
* `parallel` run two streams in parallel (replaces `<|>`)
|
2018-05-13 07:43:26 +03:00
|
|
|
* `WAsyncT` stream type for BFS version of `AsyncT` composition
|
2018-04-24 23:43:00 +03:00
|
|
|
* Add simpler stream types that are specialized to the IO monad
|
2018-05-13 09:00:57 +03:00
|
|
|
* Put a bound (1500) on the output buffer used for asynchronous tasks
|
|
|
|
* Put a limit (1500) on the number of threads used for Async and WAsync types
|
2018-03-26 00:52:07 +03:00
|
|
|
|
2018-03-25 01:11:28 +03:00
|
|
|
## 0.1.2
|
|
|
|
|
|
|
|
### Enhancements
|
2018-03-24 17:58:21 +03:00
|
|
|
* Add `iterate`, `iterateM` stream operations
|
2018-03-22 20:31:08 +03:00
|
|
|
|
|
|
|
### Bug Fixes
|
2018-03-25 01:11:28 +03:00
|
|
|
* Fixed a bug that casued unexpected behavior when `pure` was used to inject
|
|
|
|
values in Applicative composition of `ZipStream` and `ZipAsync` types.
|
2018-03-22 20:31:08 +03:00
|
|
|
|
2018-03-18 17:17:26 +03:00
|
|
|
## 0.1.1
|
2018-03-10 13:59:50 +03:00
|
|
|
|
2018-03-14 11:42:41 +03:00
|
|
|
### Enhancements
|
2018-03-18 10:18:17 +03:00
|
|
|
* Make `cons` right associative and provide an operator form `.:` for it
|
2018-03-24 17:58:21 +03:00
|
|
|
* Add `null`, `tail`, `reverse`, `replicateM`, `scan` stream operations
|
2018-03-14 11:42:41 +03:00
|
|
|
* Improve performance of some stream operations (`foldl`, `dropWhile`)
|
|
|
|
|
|
|
|
### Bug Fixes
|
2018-03-14 02:19:53 +03:00
|
|
|
* Fix the `product` operation. Earlier, it always returned 0 due to a bug
|
|
|
|
* Fix the `last` operation, which returned `Nothing` for singleton streams
|
2018-03-10 13:59:50 +03:00
|
|
|
|
2017-12-01 08:32:28 +03:00
|
|
|
## 0.1.0
|
|
|
|
|
|
|
|
* Initial release
|