v1.6.0
版本发布时间: 2022-10-13 09:21:00
fsnotify/fsnotify最新发布版本:v1.7.0(2023-10-22 14:28:14)
This version of fsnotify needs Go 1.16 (this was already the case since 1.5.1, but not documented). It also increases the minimum Linux version to 2.6.32.
Additions
-
all: add
Event.Has()
andOp.Has()
(#477)This makes checking events a lot easier; for example:
if event.Op&Write == Write && !(event.Op&Remove == Remove) { }
Becomes:
if event.Has(Write) && !event.Has(Remove) { }
-
all: add cmd/fsnotify (#463)
A command-line utility for testing and some examples.
Changes and fixes
-
inotify: don't ignore events for files that don't exist (#260, #470)
Previously the inotify watcher would call
os.Lstat()
to check if a file still exists before emitting events.This was inconsistent with other platforms and resulted in inconsistent event reporting (e.g. when a file is quickly removed and re-created), and generally a source of confusion. It was added in 2013 to fix a memory leak that no longer exists.
-
all: return
ErrNonExistentWatch
whenRemove()
is called on a path that's not watched (#460) -
inotify: replace epoll() with non-blocking inotify (#434)
Non-blocking inotify was not generally available at the time this library was written in 2014, but now it is. As a result, the minimum Linux version is bumped from 2.6.27 to 2.6.32. This hugely simplifies the code and is faster.
-
kqueue: don't check for events every 100ms (#480)
The watcher would wake up every 100ms, even when there was nothing to do. Now it waits until there is something to do.
-
macos: retry opening files on EINTR (#475)
-
kqueue: skip unreadable files (#479)
kqueue requires a file descriptor for every file in a directory; this would fail if a file was unreadable by the current user. Now these files are simply skipped.
-
windows: fix renaming a watched directory if the parent is also watched (#370)
-
windows: increase buffer size from 4K to 64K (#485)
-
windows: close file handle on Remove() (#288)
-
kqueue: put pathname in the error if watching a file fails (#471)
-
inotify, windows: calling Close() more than once could race (#465)
-
kqueue: improve Close() performance (#233)
-
all: various documentation additions and clarifications.