Functional Reactive Programming with type-level clocks

Version on this page:0.7.1
LTS Haskell 19.12:0.7.1
Stackage Nightly 2022-03-17:0.7.1
Latest on Hackage:1.2

See all snapshots rhine appears in


This is the main library. For details, visit https://github.com/turion/rhine.


Revision history for rhine

The version numbering follows the package dunai. Since rhine reexports modules from dunai, every major version in dunai triggers a major version in rhine.


  • Documentation improvements
  • Support for GHC 9.0.2


  • Replaced old reactimation mechanism by clock erasure
  • Dropped GHC support for < 8.4
  • Reworked gloss backends. There are now two pure backends and an IO backend.
  • Relaxed all upper version bounds


  • Synced with dunai version numbers
  • Supported GHC 8.8.3

  • Synced with dunai version numbers
  • Supported GHC 8.6
  • Added support for randomness with RandT in ClSFs

  • Deprecated GHC 7.*
  • Big module reorganisation:
  • Refactored some fixed step clocks
  • Added interpolation buffers

Note that this is the first release that is not in sync with dunai’s version numbers. rhine-0.5 depends on dunai-0.4. – 2017.12.04

  • Documentation typos fixed
  • Added ChangeLog.md

  • Version bump
  • Documentation typos fixed (Thanks to Gabor Greif)

  • Travis CI support
  • Removed several utilities that are now in dunai
  • Extended averaging functions

  • Added FRP.Rhine.Clock.Realtime.Stdin (console keyboard event clock)
  • Added FRP.Rhine.Clock.Select (event selection clock)
  • Added FRP.Rhine.ClSF.Except (synchronous exception handling)

  • Initial version