MIT licensed by Michael Snoyman
Maintained by [email protected]
This version can be pinned in stack with:auto-update-0.2.8@sha256:605793bfca0a4ad6f93ceb7de302e539720351a6380c2edf47017fee213b2ac2,1670

auto-update

A common problem is the desire to have an action run at a scheduled interval, but only if it is needed. For example, instead of having every web request result in a new getCurrentTime call, we’d like to have a single worker thread run every second, updating an IORef. However, if the request frequency is less than once per second, this is a pessimization, and worse, kills idle GC.

This library allows you to define actions which will either be performed by a dedicated thread or, in times of low volume, will be executed by the calling thread.

For original use case, see yesod-scaffold issue #15.

Changes

ChangeLog for auto-update

0.2.8

  • use atomicWriteIORef instead of writeIORef in the following modules to avoid more issues: #1112
    • Control.Reaper (spawn & reaper)
    • Control.AutoUpdate.Event (getUpdateResult)

0.2.7

  • Use atomicModifyIORef in mkAutoUpdate(Helper) to prevent race conditions in multi-threaded situations. #1103

0.2.6.1

  • Fixed documentation of when leadingMuteEdge and trailingDelayEdge were introduced in Control.Debounce.

0.2.6

  • Using the thread version of AutoUpdate for non-threaded RTS. #1020

0.2.5

  • Thread less autoupdate #1018

0.2.4

  • Simple refactoring.

0.2.3

  • #996: Refactored the Control.Debounce logic to not leak threads.
  • #996: Added extra DebounceEdge options for different types of debouncing.
    • LeadingMute: Action on first trigger, and ignore any triggers during cooldown
    • TrailingDelay: First trigger starts cooldown, and triggers during cooldown extend the cooldown. Action when cooldown expires.

0.2.2

  • NewAPI: updateThreadName, reaperThreadName, debounceThreadName: Names can be given via this field to threads for GHC.Conc.Sync.listThreads.

0.2.1

  • Labeling threads.

0.2.0

  • Creating Reaper.Internal to export Reaper constructor.
  • Hiding Reaper constructor.
  • #985: Add reaperModify to the Reaper API, allowing workload modification outside of the main reaperAction loop.

0.1.6

  • #756: Add control of activation on leading vs. trailing edges for Control.Debounce

0.1.5

  • #752: Using the Strict and StrictData language extensions for GHC >8.

0.1.4.1

  • #693: Improve documentation for reaperAction function.
  • #732: Fixed memory leak in reaperAdd function.

0.1.4

  • Provide updateActionModify API in AutoUpdate #547

0.1.3.1

  • Doc improvements

0.1.3

  • Adding a new AIP - reaperKill

0.1.2

  • Added Control.Debounce