packages feed

timer-wheel-1.0.0: timer-wheel.cabal

cabal-version: 3.0

author: Mitchell Rosen
bug-reports: https://github.com/awkward-squad/timer-wheel/issues
build-type: Simple
category: Data
description:
  This library provides a timer wheel data structure for registering one-shot or recurring @IO@ actions to fire after a
  given amount of time.
  .
  It is similar to @TimerManager@ from @GHC.Event@, but supports recurring actions, and can scale to handle many more
  registered actions.
copyright: (c) 2018-2023 Mitchell Rosen, Travis Staton
homepage: https://github.com/awkward-squad/timer-wheel
license-file: LICENSE
license: BSD-3-Clause
maintainer: Mitchell Rosen <mitchellwrosen@gmail.com>, Travis Staton <hello@travisstaton.com>
name: timer-wheel
synopsis: A timer wheel
tested-with: GHC == 9.4.7, GHC == 9.6.3, GHC == 9.8.1
version: 1.0.0

extra-source-files:
  CHANGELOG.md
  README.md

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

common component
  build-depends:
    base ^>= 4.12 || ^>= 4.13 || ^>= 4.14 || ^>= 4.15 || ^>= 4.16 || ^>= 4.17 || ^>= 4.18 || ^>= 4.19,
  default-extensions:
    BangPatterns
    BlockArguments
    DeriveAnyClass
    DeriveGeneric
    DerivingStrategies
    DuplicateRecordFields
    FlexibleInstances
    GeneralizedNewtypeDeriving
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NoImplicitPrelude
    NumericUnderscores
    OverloadedStrings
    ScopedTypeVariables
    TupleSections
    TypeApplications
    ViewPatterns
  default-language: Haskell2010
  ghc-options:
    -Weverything
    -Wno-all-missed-specialisations
    -Wno-implicit-prelude
    -Wno-missing-import-lists
    -Wno-unsafe
  -- Buggy false-positives on unused-top-binds
  if impl(ghc == 8.6.*) || impl(ghc == 8.8.*)
    ghc-options:
      -Wno-unused-top-binds
  if impl(ghc >= 8.10)
    ghc-options:
      -Wno-missing-safe-haskell-mode
      -Wno-prepositive-qualified-module
  if impl(ghc >= 9.2)
    ghc-options:
      -Wno-missing-kind-signatures
  if impl(ghc >= 9.8)
    ghc-options:
      -Wno-missing-role-annotations

library
  import: component
  build-depends:
    atomic-primops ^>= 0.8,
    ki ^>= 1.0.0,
    primitive ^>= 0.7 || ^>= 0.8 || ^>= 0.9,
  exposed-modules:
    TimerWheel
  hs-source-dirs: src
  other-modules:
    TimerWheel.Internal.Bucket
    TimerWheel.Internal.Counter
    TimerWheel.Internal.Nanoseconds
    TimerWheel.Internal.Prelude
    TimerWheel.Internal.Timestamp

test-suite tests
  import: component
  build-depends:
    ki,
    random ^>= 1.2,
    timer-wheel,
  ghc-options: -threaded -with-rtsopts=-N2
  hs-source-dirs: test
  main-is: Main.hs
  type: exitcode-stdio-1.0

benchmark bench
  import: component
  build-depends:
    ki,
    random ^>= 1.2,
    tasty-bench,
    timer-wheel,
  ghc-options: -fproc-alignment=64 -rtsopts -threaded "-with-rtsopts=-N2 -T -A32m"
  hs-source-dirs: bench
  main-is: Main.hs
  type: exitcode-stdio-1.0