cabal-version: 2.0

name: timer-wheel
version: 0.2.0.1
category: Data
description:
  This library provides a timer wheel data structure for
  .
  * /O(1)/ registering @IO@ actions to fire after a given amount of time
  * /O(1)/ canceling registered actions
  .
  It is similar to @TimerManager@ from "GHC.Event", but can scale much better
  under concurrent access patterns.
  .
  An unreleased version of this library has a @backpack@-based signature for
  selecting from a variety of different data structures used internally.
  However, until @backpack@ has broader support on Hackage, and in Haddocks,
  etc, I decided to just hard-code something decent (a priority search queue).
  This makes the @O(1)@ claims above a bit of a lie, as these rely on using a
  linked list data structure internally.
synopsis: A timer wheel
author: Mitchell Rosen
maintainer: Mitchell Rosen <mitchellwrosen@gmail.com>
homepage: https://github.com/mitchellwrosen/timer-wheel
bug-reports: https://github.com/mitchellwrosen/timer-wheel/issues
copyright: (c) 2018, Mitchell Rosen
license: BSD3
license-file: LICENSE
build-type: Simple
tested-with:
    GHC == 8.0.2
  , GHC == 8.2.2
  , GHC == 8.4.4
  , GHC == 8.6.5

extra-source-files:
  .travis.yml
  CHANGELOG.md

source-repository head
  type: git
  location: git://github.com/mitchellwrosen/timer-wheel.git

library
  build-depends:
    atomic-primops ^>= 0.8,
    base ^>= 4.9 || ^>= 4.10 || ^>= 4.11 || ^>= 4.12,
    psqueues ^>= 0.2.7,
    vector ^>= 0.10 || ^>= 0.11 || ^>= 0.12
  if !impl(ghc >= 8.4)
    build-depends:
      clock ^>= 0.7

  default-extensions:
    DeriveGeneric
    GeneralizedNewtypeDeriving
    LambdaCase
    NamedFieldPuns
    RecursiveDo
    ScopedTypeVariables
    TupleSections
    TypeApplications
    ViewPatterns

  default-language:
    Haskell2010

  exposed-modules:
    Data.TimerWheel

  ghc-options:
    -fprint-expanded-synonyms
    -fprint-explicit-foralls
    -fprint-explicit-kinds
    -fprint-unicode-syntax
    -Wall
    -Wcompat
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wmissing-local-signatures
    -Wnoncanonical-monad-instances
    -Wnoncanonical-monadfail-instances
    -Wredundant-constraints
  if impl(ghc >= 8.4)
    ghc-options:
      -Wpartial-fields
      -Wmissing-export-lists

  hs-source-dirs:
    src

  other-modules:
    Entries
    Supply
    Wheel

test-suite tests
  build-depends:
    base,
    random,
    timer-wheel

  default-language:
    Haskell2010

  ghc-options:
    -threaded
    -with-rtsopts=-N2
    -Wall

  hs-source-dirs:
    test

  main-is:
    Main.hs

  type:
    exitcode-stdio-1.0