Visitar URL original
Releases · notify-rs/notify · GitHub
Skip to content

Releases

notify-types: v2.3.0

Choose a tag to compare

@JohnTitor JohnTitor released this 09 Nov 09:50
Immutable release. Only release title and notes can be modified.
22462f1

notify-types 2.3.0 (2026-11-09)

  • CHANGE: raise MSRV from 1.88 to 1.91
  • FEATURE: add user_data to EventAttributes and Event, including serde and Debug support. The value participates in event equality and hashing so deduplication retains notifications with distinct watch IDs #1012 #1069
  • DOCS: clarify how to pair rename events when several watches share a tracker #1072

notify: v9.0.0-rc.8

notify: v9.0.0-rc.8 Pre-release
Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 09 Nov 09:58
Immutable release. Only release title and notes can be modified.
22462f1

Announcement

This is the final release candidate for v9. We recommend trying out, any feedback is appreciated!

notify 9.0.0-rc.8 (2026-11-09)

  • CHANGE: raise MSRV from 1.88 to 1.91
  • CHANGE: Error gains a private field; ErrorKind and UpdatePathsError are now #[non_exhaustive]. Use error constructors (including UpdatePathsError::new), .. in struct patterns, and wildcard enum matches #1060 #1071 breaking
  • DEPS: upgrade notify-types to 2.3.0 for per-watch user data support
  • FEATURE: add WatchPathConfig::with_user_data(u64) to identify watches through Event::user_data() and Error::user_data() on all backends, including failed batch operations via UpdatePathsError.source #1012 #388
  • FEATURE: [Windows] add opt-in Config::with_windows_extended_information for file/folder classification in create/remove events; unsupported APIs and filesystems return errors #261 #1061
  • PERF: [Windows] share parent-directory watches across individual file watches, reuse buffers, and skip work for filtered events. Idle polling is removed, and configuration changes wake the watcher immediately. Buffers are now 64 KiB per OS watch, up from 16 KiB #1056 #1077
  • PERF: [inotify, kqueue] speed up unwatch, especially with many watched paths or nested user watches #1074 #1075 #1079
  • PERF: [inotify] update recursive walk barriers incrementally instead of rebuilding them from all watches #1076
  • FIX: [Windows] deliver fatal asynchronous read errors to the event handler; malformed notifications produce an InvalidData error and a rescan event #1077
  • FIX: [kqueue] report recoverable child errors while continuing recursive watches, stop additions at file descriptor limits with ErrorKind::MaxFilesWatch, and ignore missing directories during event-triggered scans #703 #455 #596
  • FIX: [kqueue] avoid hangs on FIFOs by skipping special files during recursive walks and rejecting explicit watches on them with Unsupported errors #1058
  • FIX: [inotify] detect ancestor symlink loops in newly added directories to avoid watching the same tree repeatedly #1065
  • FIX: [inotify] report a change in a directory or file that two watches share through a symlink or a hard link under the path of each watch, and watch the new subdirectories of a shared directory for every recursive watch. A rename in a shared directory is reported once for each of those watches, with the same tracker #1072
  • FIX: [macOS] return an error and release the callback context if FSEvents stream creation fails #1080
  • FIX: [macOS] release the FSEvents stream and its context when spawning the runloop thread fails #1081
  • FIX: [macOS] avoid leaking CFError objects when resolving watch paths #1082
  • FIX: [poll] recover a poisoned watch mutex in watched_paths #1062
  • DOCS: clarify kqueue and FSEvents event details, recursive-watch coverage, and kqueue file descriptor limits #1062

notify-debouncer-mini: v0.8.0-rc.1

Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 09 Nov 10:03
Immutable release. Only release title and notes can be modified.
22462f1

debouncer-mini 0.8.0-rc.1

  • CHANGE: update notify to version 9.0.0-rc.8 breaking
  • CHANGE: DebounceEventResult now returns DebouncedEventBatch::Events(Vec<DebouncedEvent>) or DebouncedEventBatch::Rescan on success breaking
  • FIX: forward rescan notifications immediately, with or without paths, so callers can refresh state for all watched paths
  • CHANGE: raise MSRV to 1.91
  • PERF: reuse the pending-event map with HashMap::extract_if instead of rebuilding it on every debounce tick
  • CHANGE: add #[must_use] annotations to debouncer config builder APIs
  • FEATURE: impl EventHandler for futures::channel::mpsc::UnboundedSender and tokio::sync::mpsc::UnboundedSender behind the futures and tokio feature flags #767

notify-debouncer-full: v0.8.0-rc.3

Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 09 Nov 10:01
Immutable release. Only release title and notes can be modified.
22462f1

debouncer-full 0.8.0-rc.3 (2026-11-09)

  • CHANGE: upgrade notify to 9.0.0-rc.8 and notify-types to 2.3.0
  • CHANGE: raise MSRV from 1.88 to 1.91
  • CHANGE: update to edition 2024 #990
  • CHANGE: remove the deprecated no-op methods Debouncer::watcher and Debouncer::cache #1059 breaking
  • CHANGE: FileIdCache::add_single_path is a required method, and FileIdCache::add_path is a provided method that walks the path and calls add_single_path for each entry; a custom cache only has to cache single paths #1034 breaking
  • CHANGE: FileIdCache::rescan takes &[WatchRoot] instead of &[(PathBuf, RecursiveMode)]; WatchRoot is #[non_exhaustive], provides WatchRoot::new, and requires .. when destructuring #1027 #1060 breaking
  • FEATURE: add the freebsd_inotify feature to enable notify's native inotify backend when cross-compiling for FreeBSD 14.5+ #972 #989
  • PERF: park the debouncer thread to avoid idle polling, and only wake it when work arrives while it is idle #933 #1078
  • PERF: speed up file ID lookups and registration with a hash map and an index of child paths for subtree removal #1078
  • PERF: avoid scanning unrelated event queues and cached file IDs when removing a path #1073
  • FIX: for an event on a direct child of a non-recursive watch, cache only that entry and not the entries below it, which the watch does not report #1037
  • FIX: pair the source and the destination of a rename below the same root when the watcher reports the rename once for each watch, for example for two watches that reach one directory through a symlink #1054
  • FIX: pair the source and the destination of a rename by file ID only when one of them has no tracker, so a later move-in is no longer reported as a rename of a file that an earlier rename moved #1070
  • FIX: unwatching a path no longer deregisters roots nested under it, and re-fingerprints the nested roots whose cached IDs the removal dropped #1028
  • FIX: if the watcher fails to construct, new_debouncer_opt no longer leaks the debouncer thread or the event handler #1040

notify: v8.2.2

Choose a tag to compare

@JohnTitor JohnTitor released this 08 Nov 12:14
Immutable release. Only release title and notes can be modified.
603674a

notify 8.2.2 (2026-11-08)

  • CHANGE: raise MSRV from 1.85 to 1.88 breaking
  • FIX: [windows] prevent watch shutdown from rearming reads on closed handles, which could deadlock when handles are reused #958 #1051 #1052

notify-types: v2.2.0

Choose a tag to compare

@JohnTitor JohnTitor released this 27 Oct 21:38
Immutable release. Only release title and notes can be modified.
7d09a58

notify-types 2.2.0 (2026-10-28)

  • FEATURE: add debouncer_mini::DebouncedEventBatch to distinguish path changes from rescan notifications #1032
  • FEATURE: re-export debouncer_full::Instant so consumers can use the same instant type with or without the web-time feature #1031
  • CHANGE: raise MSRV to 1.88
  • CHANGE: update to edition 2024
  • CHANGE: add #[must_use] annotations to EventKind predicates plus Event and EventAttributes getter/builder APIs

notify: v9.0.0-rc.7

notify: v9.0.0-rc.7 Pre-release
Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 27 Oct 21:37
Immutable release. Only release title and notes can be modified.
7d09a58

notify 9.0.0-rc.7 (2026-10-28)

  • FIX: [inotify] report newly created subdirectories found while extending a recursive watch, including nested directories created before their watches were installed; this recovery covers directories only #727
  • FIX: [macOS] preserve pending FSEvents across stream rebuilds when watches are added, removed, or updated in a batch #993
  • PERF: [macOS] keep the FSEvents stream running when rewatching an unchanged path, removing a covered watch, or applying a batch with unchanged stream roots #1033
  • FIX: [inotify] remove every path of a deleted directory or file that two paths share through a symlink or a hard link, so watched_paths no longer lists it #1038
  • FIX: [inotify] keep watching a directory below a deleted root that a symlink from outside the root still reaches #1038
  • PERF: [inotify] batch Watcher::update_paths operations and skip redundant metadata reads when adding non-recursive watches #1041
  • FIX: [Windows] finish stopping a watch before releasing its handles: release the wakeup semaphore before sending Stop, and close the directory handle and completion semaphore only after the pending read has completed (leaked if CancelIo fails) #1051
  • DEPS: upgrade notify-types to 2.2.0 #1032
  • DOCS: clarify WSL2 notification limitations, watching files replaced by editors, and backend behavior when watched paths are renamed, moved, or deleted #1048 #1053

notify v8.2.1

Choose a tag to compare

@JohnTitor JohnTitor released this 25 Oct 00:01
Immutable release. Only release title and notes can be modified.
7f6995d

notify 8.2.1 (2026-10-25)

  • CHANGE: raise MSRV from 1.77 to 1.85 #719 #723 breaking
  • CHANGE: replace fsevent-sys with objc2-core-foundation and objc2-core-services on macOS, preserving the fsevent-sys feature for compatibility #726
  • CHANGE: update windows-sys to 0.61 #1045
  • FIX: prevent FsEventWatcher from crashing when unwatching an empty path #718
  • FIX: clean up deleted paths in INotifyWatcher even when the kernel has already removed their watch descriptors #720
  • FIX: propagate FSEvents stream startup errors from watch, unwatch, and PathsMut::commit #733
  • MISC: expand watcher backend tests and fix flaky polling tests #728 #732 #734

notify: v9.0.0-rc.6

notify: v9.0.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 17 Oct 22:28
Immutable release. Only release title and notes can be modified.
a27bfdb

notify 9.0.0-rc.6 (2026-10-17)

  • FIX: [macOS] prevent intermittent hangs during rapid watch/unwatch sequences with FsEventWatcher #1013
  • FIX: [poll] return an error from watch when the path does not exist instead of failing silently, matching the other backends #998
  • FIX: [poll] detect subsecond symlink mtime changes when symlink following is disabled, with or without content comparison #1004
  • PERF: [macOS] avoid restarting the FSEvents stream when adding or updating a watch covered by a recursive ancestor on the same volume; document Watcher::update_paths for bulk registration #988
  • FIX: [Windows] return Error::watch_not_found from unwatch when the path is not watched instead of succeeding silently, matching the other backends #1014
  • PERF: [macOS] find an event's watch by hash, not by scanning #1022
  • FIX: [kqueue] keep a non-recursive watch non-recursive when a subdirectory is created or removed in it, and watch every new entry in a recursively watched directory, including files removed and recreated in the same batch #1025
  • FIX: [kqueue] register watches added before a recursive walk fails, and skip child entries that disappear during the walk #1017
  • FIX: [macOS] deliver FSEvents recovery notifications reported at an ancestor of a watched path as rescan events #1021
  • FIX: [inotify] never abandon a recursive watch, report what failed instead #970
  • FIX: [inotify] report the directories a recursive watch could not walk into, rather than leaving their subtrees silently unwatched #970
  • PERF: [inotify, kqueue] avoid scanning all watches for each entry during recursive watch registration while preserving event path representations for nested watches #986
  • PERF: [kqueue] watch new directory entries without rewalking the entire watched subtree #1025

notify: v9.0.0-rc.5

notify: v9.0.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@JohnTitor JohnTitor released this 30 Aug 08:04
Immutable release. Only release title and notes can be modified.
853729a

notify 9.0.0-rc.5 (2026-08-30)

  • CHANGE: update to edition 2024
  • FEATURE: [FreeBSD] select native inotify automatically when building on FreeBSD 14.5+ and kqueue otherwise. The freebsd_inotify feature enables inotify when cross-compiling for FreeBSD 14.5+.
  • DEPS: bump inotify to 0.11.4 for native FreeBSD support
  • FEATURE: [macOS] add Config::with_fsevent_latency to configure FSEvents stream latency #930
  • FIX: [linux] coalesce duplicate inotify cleanup events and handle kernel-removed descriptors without spurious EINVAL or WatchNotFound logs
  • FIX: [windows] emit a Remove event when a watched directory is deleted, matching inotify and FSEvents
  • FIX: [windows] surface ReadDirectoryChangesW read-start failures #935
  • FIX: [windows] prevent watch shutdown and watched-directory deletion races from emitting spurious I/O errors #958
  • FIX: [windows] emit a rescan event when ReadDirectoryChangesW discards change details [#964]
  • FEATURE: [windows] report created file/folder kinds when they can be determined #935
  • CHANGE: [macOS] improve FSEvents callback performance by avoiding unnecessary allocations and repeated handler locking
  • FIX: [macOS] refuse to create FSEvents streams whose combined path count would make macOS close a file descriptor this process owns
  • CHANGE: [macOS] pass a single FSEvents stream root for watches nested inside another recursive watch on the same volume; a coalesced watch no longer reports a separate root-changed event when it or one of its ancestors is renamed
  • PERF: [kqueue] avoid filesystem walks for recursive kqueue unwatch
  • FEATURE: add Watcher::watch_with to pass per-path settings, and WatchPathConfig::with_dereference_symlinks to watch a symbolic link itself instead of its destination, which also makes a dangling link watchable #255
  • FIX: [poll] detect subsecond file mtime changes without content hashing