Changelog for reactive-banana-1.3.2.0
Changelog for the reactive-banana
package
Version 1.3.2.0 (2023-01-22)
-
Fixed multiple space leaks for dynamic event switching by completely redesigning low-level internals. Added automated tests on garbage collection and space leaks in order to make sure that the leaks stay fixed. #261, #267, #268
Version 1.3.1.0 (2022-08-11)
-
Fix a space leak in dynamic event switching. #256
-
Reduce memory usage of
stepper
/accumB
. #260 -
Prevent a deadlock if the network crashes when evaluating a
Behavior
orEvent
. #262
Version 1.3.0.0 (2022-03-28)
-
Added
Semigroup
andMonoid
instances toMoment
andMomentIO
. #223 -
Add
@>
operator. #229 -
switchE
now takes an initial event. This is breaking change. The previous behavior can be restored by usingswitchE never
. #165 -
Triggering an
AddHandler
no longer allocates, leading to a minor performance improvement. #237 -
A new
once
combinator has been added that filters anEvent
so it only fires once. #239 -
MonadMoment
instances have been added for all possibly monad transformers (from thetransformers
library). #248 -
Some internal refactoring to reduce allocations and improve performance. #238
-
The
Reactive.Banana.Prim
hierarchy has been changed to better reflect the abstraction hierarchy. #241
Version 1.2.2.0
-
Optimize the implementation of
Graph.listParents
#209 -
Replace a use of
foldl
withfoldl'
. #212 -
Simplify the internal
mkWeakIORef
function. #154 -
Make internal SCC pragmas compatible with the GHC 9.0 parser. #208
-
Change
insertWith (flip (++))
toinsertWith (++)
ininsertEdge
. #211 -
Add
Semigroup a => Semigroup (Behavior a)
andMonoid a => Monoid (Behavior a)
instances. #185 -
Loosen the upper-bound for
hashable
andsemigroups
. #205
version 1.2.1.0
-
Add
Num
,Floating
,Fractional
, andIsString
instances forBehavior
. #34 -
Support
containers-0.6
. #191
version 1.2.0.0
-
Make
MonadFix
superclass ofMonadMoment
. #128 -
Add
Semigroup
andMonoid
instances forEvent
. #104 -
Semigroup compatibility with GHC 8.4.1 #168
-
Increased upper-bound on
pqueue
.
version 1.1.0.1
- Adapt library to work with GHC-8.0.1.
version 1.1.0.0
- Fix bug: Types of
switchB
andswitchE
need to be in theMoment
monad. - Clean up and simplify model implementation in the
Reactive.Banana.Model
module. - Update type signatures of the
interpret*
functions to make it easier to try FRP functions in the REPL. - Remove
showNetwork
function.
version 1.0.0.1
- Improve documentation.
- Add prose section on recursion.
- Improve explanation for the
changes
function.
- Bump
transfomers
dependency. - Remove defunct
UseExtensions
flag from cabal file.
version 1.0.0.0
The API has been redesigned significantly in this version!
- Remove phantom type parameter
t
fromEvent
,Behavior
andMoment
types.- Change accumulation functions (
accumB
,accumE
,stepper
) to have a monadic result type. - Merge module
Reactive.Banana.Switch
into moduleReactive.Banana.Combinators
. - Simplify types of the switching functions (
switchE
,switchB
,observeB
,execute
). - Remove functions
trimE
andtrimB
. - Remove types
AnyMoment
andIdentity
.
- Change accumulation functions (
- Remove
Frameworks
class constraint, useMomentIO
type instead.- Add class
MonadMoment
for both polymorphism over theMoment
andMomentIO
types.
- Add class
- Change type
Event
to only allow a single event per moment in time.- Remove function
union
. UseunionWith
instead. - Change function
unions
to only merge events of typeEvent (a -> a)
.
- Remove function
- Remove module
Reactive.Banana.Experimental.Calm
. - Change the model implementation in the module
Reactive.Banana.Model
to the new API as well.
Other changes:
- Add
mapEventIO
utility function to build an Event that contains the result of an IO computation. - Add
newBehavior
utility function to build a Behavior that can be updated with aHandler
. - Add illustrations to the API documentation.
version 0.9.0.0
-
Implement garbage collection for dynamically switched events.
-
Fix issue #79 where recursive declarations would sometimes result in dropped events.
-
Limit value recursion in the
Moment
monad slightly. -
Change
initial
andvalueB
to behave subtly different when it comes to value recursion in theMoment
monad. -
Add
Functor
,Applicative
andMonad
instances for theFrameworksMoment
type. -
Depend on the pqueue package instead of the psqueues package again, as the former has been updated to work with the current version of GHC.
version 0.8.1.2
version 0.8.1.1
- Links to the Haskell wiki now point to the
http://wiki.haskell.org
subdomain.
version 0.8.1.0
-
Module
Reactive.Banana.Switch
now adheres to the "Functor Applicative Monad Proposal" proposal]amp-proposal.
version 0.8.0.4
- Just a re-upload. The previous archive was broken.
version 0.8.0.3
- Export the
Future
type. - Restrict
containers
dependency to lower bound 0.5.
version 0.8.0.2
- Fix compilation issue with hiding
empty
from the moduleReactive.Banana.Prim.Order
.
version 0.8.0.1
- New examples
Counter.hs
andOctave.hs
. - Bump
transfomers
dependency.
version 0.8.0.0
- A new module
Reactive.Banana.Prim
exports primitive combinators that you can use to implement your own FRP library with a different API. - The push-driven implementation in
Reactive.Banana.Prim
now has the performance characteristics of an actual push-driven implementation. Some work has gone into optimizing constant factors as well. However there is still no garbage collection for dynamically created events and behaviors. - The
accumE
andaccumB
combinators evaluate their state to WHNF to avoid a space leak. (Fixes issue #52). On the other hand,Behavior
values are evaluated on demanded, i.e. only when required by the apply combinator<@>
or similar. - Recursion between events and behaviors should now work as advertised. (Fixed issue #56).
- The deprecated
liftIONow
function has been removed. - The type of the
changes
function now indicates that the new Behavior value is only available in the context ofreactimate
. A variantreactimate'
makes this explicit. - The module
Control.Event.Handler
now exports theAddHandler
type, which is now anewtype
. The moduleReactive.Banana.Frameworks.AddHandler
has been removed.
version 0.7.1.0
- Deprecate the
liftIONow
function in favor ofliftIO
.
version 0.7.0.0
- Dynamic event switching. Combinators are now available in the module
Reactive.Banana.Switch
. - Rename
NetworkDescription
toMoment
, add class constraintFrameworks t
. - No longer compiles with the JavaScript backend of the Utrecht Haskell compiler.
- Change the
changes
combinator to be less useful.
version 0.6.0.0
- Can now be compiled with the JavaScript backend of the Utrecht Haskell compiler.
- The push-driven implementations needs the
UseExtensions
flag to work. This flag is enabled by default. - Minor module reorganization.
version 0.5.0.0 -- announcement
This update includes numerous changes, in particular a complete overhaul of the internal implementation. Here a partial list.
- Add
collect
,spill
andunionWith
combinators to deal with simultaneous events. - Remove general
Monoid
instance forEvent
to simplify reasoning about simultaneous events. - Add
initial
andchanges
combinators that allow you to observe updates toBehavior
. Remove theReactive.Banana.Incremental
module. - Rename most modules,
- Change type signatures: The main types
Event
,Behavior
andNetworkDescription
now carry an additional phantom type.
version 0.4.3.1
- Model implementation of
accumE
now has the intended semantics.
version 0.4.3.0
- Change semantics:
IO
actions from insidereactimate
may now interleave as dictated by your event-based framework (issue #15). - Fix bug: compiling a network twice no longer fails due to lingering global state (issue #16).
- Change type: remove
Typeable
constraint frominterpret
andinterpretAsHandler
. - Misc: Remove the
BlackBoard
application from the repository.
version 0.4.2.0
- Change type: remove
Typeable
constraint fromfromAddHandler
. - Misc: the
Vault
data type gets its own package. - Misc:
reactive-banana-wx
now compiles properly with cabal. - Add some more examples to the
reactive-banana-wx
package.
version 0.4.1.0
- Add
<@>
operator for more convenience when usingapply
. - Add support for value recursion to the
NetworkDescription
monad. - Add many examples to
reactive-banana-wx
.
version 0.4.0.0 -- announcement
- Add function
fromPoll
to obtain behaviors from mutable data. - Change name:
run
is now calledactuate
. - Add derived data type
Discrete
. - Add function
interpretAsHandler
.
version 0.3.0.0 -- announcement
- change: event networks are now first-class values, you can
pause
orrun
them. - change type:
AddHandler
now expects a way to unregister event handlers. - add example
RunPause.hs
version 0.2.0.0 -- announcement
- change: now implements proper semantics as pioneered by Conal Elliott
- model implementation for semantics
- push-driven implementation for efficiency
- add example
SlotMachine.hs
version 0.1.0.0
- initial release