fsnotify/fsnotify
### [`v1.6.0`](https://togithub.com/fsnotify/fsnotify/releases/tag/v1.6.0)
[Compare Source](https://togithub.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0)
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()` and `Op.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` when `Remove()` 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.
[#233]: https://togithub.com/fsnotify/fsnotify/pull/233
[#260]: https://togithub.com/fsnotify/fsnotify/pull/260
[#288]: https://togithub.com/fsnotify/fsnotify/pull/288
[#370]: https://togithub.com/fsnotify/fsnotify/pull/370
[#434]: https://togithub.com/fsnotify/fsnotify/pull/434
[#460]: https://togithub.com/fsnotify/fsnotify/pull/460
[#463]: https://togithub.com/fsnotify/fsnotify/pull/463
[#465]: https://togithub.com/fsnotify/fsnotify/pull/465
[#470]: https://togithub.com/fsnotify/fsnotify/pull/470
[#471]: https://togithub.com/fsnotify/fsnotify/pull/471
[#475]: https://togithub.com/fsnotify/fsnotify/pull/475
[#477]: https://togithub.com/fsnotify/fsnotify/pull/477
[#479]: https://togithub.com/fsnotify/fsnotify/pull/479
[#480]: https://togithub.com/fsnotify/fsnotify/pull/480
[#485]: https://togithub.com/fsnotify/fsnotify/pull/485
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
v1.5.4
->v1.6.0
Release Notes
fsnotify/fsnotify
### [`v1.6.0`](https://togithub.com/fsnotify/fsnotify/releases/tag/v1.6.0) [Compare Source](https://togithub.com/fsnotify/fsnotify/compare/v1.5.4...v1.6.0) 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()` and `Op.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` when `Remove()` 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. [#233]: https://togithub.com/fsnotify/fsnotify/pull/233 [#260]: https://togithub.com/fsnotify/fsnotify/pull/260 [#288]: https://togithub.com/fsnotify/fsnotify/pull/288 [#370]: https://togithub.com/fsnotify/fsnotify/pull/370 [#434]: https://togithub.com/fsnotify/fsnotify/pull/434 [#460]: https://togithub.com/fsnotify/fsnotify/pull/460 [#463]: https://togithub.com/fsnotify/fsnotify/pull/463 [#465]: https://togithub.com/fsnotify/fsnotify/pull/465 [#470]: https://togithub.com/fsnotify/fsnotify/pull/470 [#471]: https://togithub.com/fsnotify/fsnotify/pull/471 [#475]: https://togithub.com/fsnotify/fsnotify/pull/475 [#477]: https://togithub.com/fsnotify/fsnotify/pull/477 [#479]: https://togithub.com/fsnotify/fsnotify/pull/479 [#480]: https://togithub.com/fsnotify/fsnotify/pull/480 [#485]: https://togithub.com/fsnotify/fsnotify/pull/485Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.