fsnotify

Cross platform library for file change notification.

https://github.com/haskell-fswatch/hfsnotify

Version on this page:0.4.1.0
LTS Haskell 22.39:0.4.1.0
Stackage Nightly 2024-10-31:0.4.1.0@rev:1
Latest on Hackage:0.4.1.0@rev:1

See all snapshots fsnotify appears in

BSD-3-Clause licensed by Mark Dittmer, Niklas Broberg
Maintained by Tom McLaughlin
This version can be pinned in stack with:fsnotify-0.4.1.0@sha256:44540beabea36aeeef930aa4d5f28091d431904bc9923b6ac4d358831c651235,2854

Module documentation for 0.4.1.0

CI

Unified Haskell interface for basic file system notifications.

This is a library. There are executables built on top of it.

Requirements

Windows

compile with -fthreaded

Changes

Changes

Version 0.4.1.0

  • Add unliftio lower bound (#106)
  • Change the tests back to a test-suite to avoid building for library users. (#107)
  • Fix up Windows compatibility.
  • Export WatchConfig type (#108)

Version 0.4.0.1

  • Fix compatibility with *BSD.

Version 0.4.0.0

API breaking update.

  • New options for threading control (single-threaded, thread-per-watch, and thread-per-manager)
  • Revamp WatchConfig options to be less confusing and reduce boolean blindness.
  • Pull out debouncing stuff, since it was never correct as it simply took the last event affecting a given file in the debounce period. Debouncing is currently not included, and should be handled as an orthogonal concern. I’d like to include some debouncing logic, but didn’t want to delay this release any longer.
    • We now expose type DebounceFn = Action -> IO Action, which represents an arbitrary debouncer. All debouncers should be in the form of one of these functions.
    • A robust state machine debouncer is in progress but not fully implemented yet; see the state-machine branch.
    • Contributions are welcome! We can potentially add multiple debouncers of different complexity as modules under System.FSNotify.Debounce.*.
  • Don’t silently fall back to polling on failure of native watcher. Instead, throw an exception which the user can recover from by switching to polling.
  • Add ModifiedAttributes event type + Linux support
  • Add confOnHandlerException to be able to control what happens when a handler throws an exception.
  • WatchConfig constructor is no longer exposed. Instead use defaultConfig {...} with the accessors.

Version 0.3.0.0

API breaking update with a number of bugfixes and improvements.

  • Now we can detect directory creation/deletion. A boolean flag has been added to Event to indicate if the event pertains to a directory or not. This is the only API change.
  • Test stability improvements + CI test suites now passing on Windows, Linux, and Mac.
  • Interpreting OSX hfsevents flags is more sane now (see comments in OSX.hs for details).
  • Improve a race condition when adding watches on Linux.
  • Improve robustness of the PollManager.
  • Fix double call to closeHandle on Windows.
  • Remove comments about locking from the documentation.

Version 0.2.1.2

Update to the new hinotify API (v0.3.10)

Version 0.2.1.1

Catch IO exceptions when initialising inotify on Linux

Version 0.2.1

Don’t use system-filepath

Version 0.2

Use filepath instead of deprecated system-filepath

Version 0.1.0.3

  • Fix the tests

Version 0.1.0.2

  • Restore compatibility with GHC 7.4
  • Fix a bug in treeExtAny, which previously work identically to treeExtExists
  • Improve documentation

Version 0.1.0.1

Include CHANGELOG.md and README.md in the source distribution.

Version 0.1

  • Allow to stop a listening job. Note this changes the return type of watching functions from () to IO ().
  • Previously, some care was taken to prevent multiple callbacks from running simultaneously. It is now the user’s responsibility. See #43 for details.
  • Previously, paths returned to callbacks were relative on Windows. Now they are absolute, like on the other platforms.
  • The WatchConfig type has changed. Previously, it only specified debouncing parameters. Now it also contains polling parameters.
  • The isPollingManager function is added to determine, at runtime, whether the polling implementation is used.