si-timers-1.0.0.0: README.md
# [SI] Timers
The `si-timers` package provides delays & timeouts which are safe on 32-bit
systems; cancellable timeouts (see `registerDelayCancellable`); a refined
interface for monotonic `Time`. `Time` is given with left monoid action of
`DiffTime` (which encodes the notion of time differences). The
`MonadMonotonicTime`, `MonadDelay` type classes & `MonadTimers` (type synonym)
API provide a consistent interface for working with delays and timeouts.
`si-timers` package also defined a low level `MonadTimout` type class. On
system with a native timer manager (e.g. `Linux`, `MacOS`, `FreeBSD`), it's
very efficient but for other platforms (e.g. `Windows`), it might not be the
right API for low latency timeouts needed for example for low level networking
code, because it relies on `GHC`'s `RTS` thread scheduling.
`si-timers` are compatible with `io-sim`.
The `SI` comes from the [International System of Units][SI].
[SI]: https://www.wikiwand.com/en/International_System_of_Units
[`io-sim`]: https://hackage.haskell.org/package/io-sim