FRP — Release of reactive-banana version 0.9

I am very pleased to announce the release of version 0.9.0.0 of my reactive-banana library on hackage. The API is essentially the same as before, but the implementation has been improved considerably: Dynamically switched events are now garbage collected!

This means that the library finally features all the ingredients that I consider necessary for a mature implementation of FRP:

Continuous time semantics (sampling rate independence, deterministic union , …)

, …) Recursion

Push-driven performance

Dynamic event switching without time leaks

Dynamic event switching with garbage collection

The banana is ripe! In celebration, I am going to drink a strawberry smoothie and toast Oliver Charles for his invaluable bug reports and Samuel Gélineau for tracking down a nasty bug in detail. Cheers!

While the library internals are now in a state that I consider very solid, the library is still not quite done yet. When introducing the API for dynamic event switching in version 0.7, I had the choice between two very different regions of the design space: An approach using a monad and an approach using phantom types. I had chosen the latter approach, mostly because the sodium FRP library had chosen to explore the former region in the design space, so we could cover more of the design space together this way. But over the years, people have sent me questions and comments, and it is apparent that the phantom type approach is too unwieldy for practical use. For the next version of reactive-banana, version number 1.0, I plan to radically change the API and switch to the monadic approach. While we’re at it, I also intend to remove simultaneous occurences in a single event. I will discuss these upcoming API changes more thoroughly in a subsequence blog post.