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
--pruneto prevent recursive traversal from
descending into matching directories where the selected monitor performs
traversal infswatchorlibfswatch. This is distinct from--exclude:
--excludefilters emitted events, while--pruneprevents 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
libfswatchso
CMake consumers can usefind_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
xargsreplacement-string length caveat
when processingfswatchoutput withxargs -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::monitorlayout changed. Existing
compiled C++ clients should be rebuilt against this release. The
libfswatchlibtool release version is15: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
forlibfswatchso 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=conjunctiveto opt into include-as-candidate-set semantics. -
--excludeand--pruneserve different purposes.--excludefilters
emitted events.--pruneprevents 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. -
libfswatchadds C API entry points for filter mode selection and prune
filters. -
The public C++
fsw::monitorlayout changed. C++ clients should be
rebuilt against this release. The libtool release version is15:0:0.