BSD-3-Clause licensed by Mitchell Rosen
Maintained by Mitchell Rosen

Module documentation for 0.3.0

This version can be pinned in stack with:timer-wheel-0.3.0@sha256:d832b4d456da4af22d66734fe5cd3a5e10969ed3bd6cac06c8fb92b701ebd60b,2191


GitHub CI Hackage Stackage LTS Stackage Nightly Dependencies



All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to the Haskell Package Versioning Policy.

[0.3.0] - 2020-06-18


  • Add with
  • Add support for GHC 8.8, GHC 8.10


  • Change type of spokes from Natural to Int
  • Change order of delay and action arguments in register, register_, recurring, and recurring_
  • Simplify cancel to return True at most once
  • Throw an error if a negative delay is provided to register, register_, recurring, or recurring_
  • Fix underflow bug that affected recurring timers


  • Remove create, destroy
  • Remove TimerWheelDied exception. with now simply re-throws the exception that the timer wheel thread throws
  • Remove InvalidTimerWheelConfig exception. error is used instead
  • Remove support for GHC < 8.6

[] - 2019-05-19


  • Swap out ghc-prim and primitive for vector

[0.2.0] - 2019-02-03


  • Add destroy function, for reaping the background thread
  • Add recurring_ function


  • If the timer wheel reaper thread crashes, it will propagate the exception to the thread that spawned it
  • new may now throw InvalidTimerWheelConfig
  • The cancel action returned by register is now memoized, which fixes a bug involving trying to cancel a recurring timer twice. The second call used to spin forever and peg a CPU
  • Use Config type for creating a timer wheel
  • Change argument order around
  • Rename new to create
  • Make recurring timers more accurate

[0.1.0] - 2018-07-18


  • Initial release