## [0.4.0.1] - 2022-11-05 - Fix inaccurate haddock on `recurring` ## [0.4.0] - 2022-11-05 - Add `create` - Rename `Data.TimerWheel` to `TimerWheel` - Swap out `vector` for `array` - Treat negative delays as 0 - Drop support for GHC < 8.6 ## [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 ## [0.2.0.1] - 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