NEWS
****

New in 1.21.0:

  * API, Issues 104 and 273: Add conjunctive path filter evaluation mode.  In
    this mode, inclusion filters define the candidate set and exclusion filters
    subtract from it: a path is accepted when it matches an inclusion filter,
    or when no inclusion filters are specified, and does not match any
    exclusion filter.

  * API, Issue 151: Add traversal prune filters so recursive monitors can skip
    matching directories before scanning or watching their descendants.  Prune
    filters are separate from normal path filters: normal exclude filters
    reject emitted events, while prune filters prevent recursive descent where
    the monitor performs library-side traversal.

  * API: Add C API support for filter mode selection and prune filters.

  * Compatibility: Legacy filter behavior remains the default.

  * Compatibility: The public C++ fsw::monitor layout changed.  Existing
    compiled C++ clients should be rebuilt against this release.  The
    libfswatch libtool release version is 15:0:0.

  * Bug fix, Issue 247: Keep explicit root paths eligible for monitor setup
    even when path filters would reject the root path itself, allowing matching
    children to remain discoverable.

  * Issue 305: Install CMake package configuration files and exported targets
    for libfswatch so CMake consumers can use find_package(libfswatch CONFIG).

  * Add regression coverage for filter modes, root-path eligibility, traversal
    pruning, and the new C API pruning entry point.


New in 1.20.1:

  * Correct the 1.20.0 release notes to document PR 368, Issue 367: the Linux
    inotify monitor now uses an epoll/eventfd wait loop, and building it now
    requires epoll, eventfd, and inotify_init1 support.


New in 1.20.0:

  * Issue 365: Add a Linux fanotify monitor and generic event process
    attribution metadata.

  * Issue 365: Add opt-in fanotify monitor properties for unlimited event queue
    and mark limits.

  * Issue 365: Add the fsw_cevent_v2 C callback API for correlation and
    process attribution metadata without changing the existing fsw_cevent ABI.

  * PR 368, Issue 367: Refactor the Linux inotify monitor to use an
    epoll/eventfd wait loop.  Building the inotify monitor now requires epoll,
    eventfd, and inotify_init1 support.

  * Fix CoreFoundation path ownership in the macOS FSEvents monitor.


New in 1.19.1:

  * PR 350, Issue 349: Fix latency values lower than one second in the Windows
    monitor.

  * Issue 352: inotify no longer reports access, open, or close-without-write
    events unless access events are enabled with -a or --access.

New in 1.19.0:

  * PR 353, Issue 343: Fix a segmentation fault in the macOS FSEvents monitor
    when file event metadata does not include an inode.

  * PR 354, Issue 330: Fix recursive inotify monitoring so fast file creation
    in newly-created directories is detected.

  * PR 340: Enable libfswatch compilation under Windows MinGW.

New in 1.18.0:

  * Documentation: add reference to Go bindings.

  * Update FSEventStreamEventFlags flags and add support to macOS 10.13+
    features.

  * Issue 278: FSEvents monitor: Add support to for extended data, to allow file
    inodes to be collected with events.  This feature enables users to correlate
    rename events.

  * Issue 278: inotify monitor: Add support for correlation cookie.  This
    feature enables users to correlate rename events.

  * Update the event class to have a correlation id field.

  * Remove private headers from the list of installed header files.

  * Require <mutex>, <atomic> and thread_local and remove checks and conditional
    code.

  * Library interface does not depend on configuration any longer.

New in 1.17.1:

  * Issue 291: Configuration header leaked into public interface in v. 1.17.0.
  
New in 1.17.0:

  * Refactor code to replace usages of deprecated function
    FSEventStreamScheduleWithRunLoop with FSEventStreamSetDispatchQueue.

  * Issue 230: Improve responsiveness on macos: add support for
    kFSEventStreamCreateFlagNoDefer.

  * Issue 255: Implement event bubbling.

New in 1.16.0:

  * Issue 260: Fix memory leak.

New in 1.15.0:

  * Issue 224: Add pkg-config support.

New in 1.14.0:

  * Issue 218: fswatch v1.13 ignores the --monitor parameter and always uses the
    default monitor.

New in 1.13.0:

  * Issue 142: Static library will not have any monitor type available.

New in 1.12.0:

  * Issue 178: Migrate usages of POSIX regular expressions (<regex.h>) to the
    C++11 regex library (<regex>).

  * Issue 191: Wrong error message is printed when inotify event queue overflows.

New in 1.11.3:

  * Issue 185: Fix C99 compatibility in cevent.h.

  * Issue 186: Session memory is not freed.

  * Issue 188: Fix segmentation fault when starting monitor.

  * Issue 189: Add function to the C API to check that a monitor is running.

  * Issue 190: Fix stop sequence for FSEvents monitor.

New in 1.11.2:

  * Issue 182: Generate a single message catalog for both fswatch and
    libfswatch.

New in 1.11.1:

  * Issue 182: Remove mandatory dependency to git.

New in 1.11.0:

  * Issue 181: Make gettext an optional dependency.

New in 1.10.0:

  * Add Doxygen documentation.

  * Issue 60: Add function to load filters from a file.

  * Issue 137: Deadlock on C function fsw_destroy_session if fsw_start_monitor
    is called.

  * Modify fsw_destroy_session function not to destroy a session that has a
    running monitor.

  * Issue 143: Add fsw_stop_monitor to the C API.

New in 1.9.3:

  * Use C header names in C headers instead of C++.

  * Explicitly use the enum keyword when referring to enum types in C headers.

  * Remove default argument values from C headers.

New in 1.9.2:

  * Issue 118: v. 1.9.0 breaks the -1 option.

New in 1.9.1:

  * libfswatch API version 7:0:1.

New in 1.9.0:

  * Update monitor::~monitor() to invoke monitor::stop(), close resources in
    monitor::on_stop().

  * Issue 84: Add the possibility of scheduling a periodic idle event.

  * Run a separate thread to fire idle events.

  * Improve logging.

  * Do not fail if blocking calls are interrupted by a signal.

  * Issue 114: fswatch does not track newly created directories recursively when
    using the inotify monitor.

  * The AX_CXX_COMPILE_STDCXX macro was patched so that the switches it adds to
    the compiler are added to the preprocessor configuration as well.

New in 1.8.0:

  * Unsupported CMake files and CLion project files are included as a courtesy.

  * Parts of the code have been refactored to use move semantics.

  * Fixed a bug in fsw::monitor_factory::create_monitor().

  * Refactor fsw::monitor_factory to dynamically create the default monitor
    using the factory registration information.

  * Generate documentation using Doxygen.

  * Texinfo documentation has been obsoleted by Doxygen documentation and has
    been removed.

  * Add fsw::monitor::stop() function to allow for cooperative monitor shutdown.

  * Implement fsw::monitor::stop() on all available monitors.

  * Fixed a but in the Solaris/Illumos monitor that prevented it to correctly
    detect the ETIME status code upon waiting for events.

New in 1.7.0:

  * Issue 35: Support Solaris/Illumos File Events Notification API.

  * Issue 98: A monitor can be requested to watch directories only during a
    recursive scan.

  * Issue 99: A monitor using the File Events Notification API of the
    Solaris/Illumos kernel has been added.

  * Issue 101: Add flag to watch file accesses.

New in 1.6.1:

  * Texinfo documentation now includes @dircategory and @direntry tags to be
    compatible with install-info.

New in 1.6.0:

  * libfswatch can now be built on Microsoft Windows using Cygwin.

  * A monitor for Microsoft Windows has been added.

  * libfswatch can report monitor buffer overflows (which cannot be avoided with
    certain monitors) as regular events for callers to recover gracefully.

  * Monitor can be customized by passing monitor-specific configuration
    properties.

New in 1.5.1:

  * Fixes Issue 91: Can't compile fswatch 1.5.0 on FreeBSD 9.3-RELEASE.

New in 1.5.0:

  * Fix issue 46: Allow filtering by event type.

  * Fix issue 83: Callback invocation should be moved into fsw::monitor.

New in 1.4.7:

  * Provide a way to pass context data to the C API monitor callback.

New in 1.4.6:

  * Fix issue 74: Assertion failed on fsw_destroy_session.

New in 1.4.5.3:

  * Fix issue 67: 100% CPU usage while using libfswatch.  This issue only
    affects the inotify monitor, available only on Linux.

New in 1.4.5.2:

  * Fix issue 66: Exclude items with poll_monitor not considered.

New in 1.4.4:

  * Localize fswatch and libfswatch using GNU gettext.

  * Add Italian (it) localization.

  * Add Spanish (es) localization.

New in 1.4.3:

  * Add Texinfo documentation.

  * libfswatch API is now versioned.

  * Improved Autoconf checks.

  * The inotify monitor now waits for events and honours the latency settings.

  * Automaticaly generate the ChangeLog using Git.

  * Update autogen.sh to honour some commonly used environment variables.

New in 1.4.2:

  * The inotify monitor now provides the same functionality provided by all the
    other monitors.  Recursive directory monitoring is now implemented.

  * Version and revision is now determined dynamically from Git by ancillary
    scripts invoked by the GNU Build System.

New in 1.4.0:

  * The libfswatch library has been added with bindings for C and C++.

  * Move monitors to separate library.

  * Provide a libtool-configured library exposing the functionality of fswatch
    monitors.

  * Provide C and C++ headers and bindings.
