github emcrisostomo/fswatch 1.21.0
fswatch v. 1.21.0

8 hours ago

What's New in fswatch v. 1.21.0:

fswatch v. 1.21.0 introduces the following features and bug fixes:

  • CLI, Issues 104 and 273: Add --filter-mode=conjunctive. In this mode,
    include filters define the candidate set and exclude filters subtract from
    it: a path is accepted when it matches an include filter, or when no
    include filters are specified, and does not match any exclude filter.

  • CLI, Issue 151: Add --prune to prevent recursive traversal from
    descending into matching directories where the selected monitor performs
    traversal in fswatch or libfswatch. This is distinct from --exclude:
    --exclude filters emitted events, while --prune prevents recursive
    descent into matching subtrees.

  • Compatibility: Legacy include/exclude filter behavior remains the default.
    In legacy mode, include filters may still override exclude filters.

  • Issue 305: Install CMake package configuration files for libfswatch so
    CMake consumers can use find_package(libfswatch CONFIG).

  • 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 be discovered and reported.

  • Issue 238: Document the BSD/macOS xargs replacement-string length caveat
    when processing fswatch output with xargs -I.

  • Add filtering regression coverage for legacy and conjunctive filter modes,
    root-path eligibility, and traversal pruning.

libfswatch v. 1.21.0 introduces the following features and bug fixes:

  • 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.

Upgrade and Compatibility Notes

  • Legacy include/exclude filter behavior remains the default. Use
    --filter-mode=conjunctive to opt into include-as-candidate-set semantics.

  • --exclude and --prune serve different purposes. --exclude filters
    emitted events. --prune prevents recursive traversal from descending
    into matching directories where the selected monitor performs library-side
    traversal.

  • Explicit command-line root paths remain eligible for monitoring even when
    path filters would reject the root path itself.

  • libfswatch adds C API entry points for filter mode selection and prune
    filters.

  • The public C++ fsw::monitor layout changed. C++ clients should be
    rebuilt against this release. The libtool release version is 15:0:0.

Don't miss a new fswatch release

NewReleases is sending notifications on new releases.