0.4.2.0 ------- * Removed all upper bounds on dependencies. * **Control.Auto.Blip**: Companions to `emitJusts` and `onJusts` added, for `Either`: `emitEithers` and `onEithers`. Emit every item inputted, but fork them into one of two output blit streams based on `Right` or `Left` properties. Only preserves blip semantics/makes sense if any given input's `Right` or `Left`ness is expected to be independent from the last received one. * **Control.Auto.Blip**: New "blip stream collapsers", `asMaybes` and `substituteB`. `asMaybes` turns a blip stream into a stream of `Maybe`s, `Just` when something was emitted, and `Nothing` when not. `substituteB` takes a regular stream and a blip stream, and outputs the values of the regular stream whenever the blip stream doesn't emit and the emitted value when it does --- basically a more powerful version of `fromBlips`, where the "default" value now comes from a stream instead of being always the same. * **Control.Auto.Blip**: New blip stream creator, `collectN`, which emits every `n` steps with the last `n` items received. * **Control.Auto.Blip**: New blip stream modifiers, `collectB` and `collectBs`. `collectB` waits on two blip streams and emits after it has received something from *both*. `collectBs` is like `collectN`, except emits after every `n` emitted values received with the past `n` emitted values. * **Control.Auto.Collection**: "Intervaled" counterparts to `mux` and `muxMany`, `muxI` and `muxManyI`. They store `Interval`s instead of `Auto`s...and when the `Interval`s turned "off", they are removed from the collection. * **Control.Auto.Switch**: A new "count-down" swithcer, `switchIn`, which acts a bit like `(-->)` and `(-?>)`, except the switch happens deterministically after a pre-set given number of steps. Act like the first `Auto` for a given number of steps, and then act like the second ever after. Basically a direct implementation of the common `onFor n a1 --> a2` idiom. 0.4.1.0 ------- * Adapted to more consistent semantic versioning scheme, where the third number is a new update, and the fourth number is reserved for bug fixes. * **Control.Auto.Blip**: `foldrB` and `foldlB'` officially **deprecated** in their current forms. From version `0.5`, they will have corrected functionality and a new type signature. The current functionality doesn't really make sense, and was a mistake during their implementation. You can begin using the new versions now, with: ``` foldrB = foldr (merge f) mempty foldlB' = foldl' (merge f) mempty ``` * **Control.Auto.Effects**: New "sealing" mechanisms for underlying `Reader`: `sealReaderMVar` and `sealReaderM`. `sealReaderMVar` allows things like "hot swapping" configuration data; at every step, the `Auto` asks for its environment from an `MVar`, that could be changed/modified from a different thread with new configuration data. `sealReaderM` is a more general/potentially dangerous version where the environment is retrieved through an arbitrary action in the underlying monad. * **Control.Auto.Run**: New powerful combinator `throughT`, letting you "lift" an `Auto` to run over/through any `Traversable`. Can replace `during`, `perBlip`, `accelOverList`, etc. The specialized versions will remain more performant, though. * **Control.Auto.Run**: In the spirit of the hip and current Foldable Traversable Proposal, `overTraversable` added to complement `overList`, so you can now "stream" `Auto`s over `IntMap`s, `Maybe`s, `Const`s...or any `Traversable`. Not replacing `overList` completely, though, for performance reasons. * **Control.Auto.Blip**: Removed unnecessary `Monad` constraints on `became_`, `became'`, `noLonger_`, and `noLonger'`. * **Control.Auto.Interval**: Bug fix on `holdFor` and `holdFor_`, where they had the potential to overflow `Int` and begin "holding" forever when given specifically malformed input. * **Control.Auto.Time**: Performance boost on `accelOverList` by using strict `Writer` over lazy. 0.4.0.0 ------- * Bug fix version *reverting* breaking changes from `0.3.0.0`. `0.4.x` should be able to run all `0.2.x` programs with full backwards compatibility. * **Control.Auto.Effects**: Reverted back to lazy `StateT` and `WriterT`, because of situations where *auto* cannot resolve fixed points for recursive bindings. * **Control.Auto.Blip**: `forkB` renamed to `splitB` to prevent confusion with "fork", usually used in Haskell to refer to concurrency. Also anticipating adding concurrency-based `Auto`s, so this is a move to clear the way for any possible conflicts. 0.3.0.0 ------- **DEPRECATED:** Please use `0.4.0.0`! * **Control.Auto.Effects**: Breaking change: switched to strict `StateT` and `WriterT`. * **Control.Auto.Effects**: Added `readerA` and `writerA`, for convenience in "creating" `Auto`s under `ReaderT` and `WriterT`; also added `stateA` and `accumA` for completeness. 0.2.0.6 ------- * **Control.Auto.Run**: As a part of an effort to provide integration with *disciplined* effectful streaming, introduced `streamAutoEffects` and `toEffectStream`, which convert `Auto m a b`'s to *streams of effects* in `m` that can be processed and manipulated and integrated with any [`ListT`-compatible library][1], like *pipes*. See documentation for more details. These were also added to the exports of `Control.Auto`. * **Control.Auto.Interval**: New `Auto` `holdJusts`, which stretches the last seen "on"/`Just` value over the duration of a "off"/`Nothing` interval. * Documentation fixes to emphasize *auto*'s focus on *value* streams, not *effect* streams, in contrast to *pipes*, *conduit*, etc. * Version restrictions on some packages relaxed on *profunctors*, *semigroups*, and *base*. [1]: http://www.haskellforall.com/2014/11/how-to-build-library-agnostic-streaming.html 0.2.0.5 ------- * **Control.Auto.Process.Random**: Added combinators and sealers dealing for working with an underlying `Rand` or `RandT` monad. * Because of this, committed to adding *MonadRandom* as a dependency. 0.2.0.4 ------- * **Control.Auto**: Added `unserialize`, `delay`, and `delay_` to `Control.Auto`'s exports. * **Control.Auto.Blip**: New blip stream manipulator: `forkB`, which forks a blip stream into to separate ones based on whether or not the emitted values match a predicate. * **Control.Auto.Time**: Added a generalized version of `stretch`, `stretchAccumBy` which allows access to the "skipped" inputs during the stretched periods, as well as the ability to control the outputs during the stretched periods. 0.2.0.3 ------- * **Control.Auto.Collection**: Bug for `dynZipF` fixed, where newly added `Auto`s would overwrite ones alreay stored. * **Control.Auto**: `fromInterval` added to `Control.Auto`'s exports. 0.2.0.2 ------- **DEPRECATED:** Please use `0.2.0.3`! * **Control.Auto.Collection**: `dynZipF` and `dynMapF`, implicit-serialization dynamic collections. 0.2.0.1 ------- * **Control.Auto.Effects**: `catchA` added to `Control.Auto.Effects`, allowing explicit catching of runtime exceptions thrown in underlying `IO`. 0.2.0.0 ------- * First official release. No backwards-incompatible changes until `0.3.0.0`.