auth/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md

18 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[Unreleased]

Nothing yet.

[1.6.0] - 2022-10-13

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.

[1.5.4] - 2022-04-25

  • Windows: add missing defer to Watcher.WatchList #447
  • go.mod: use latest x/sys #444
  • Fix compilation for OpenBSD #443

[1.5.3] - 2022-04-22

  • This version is retracted. An incorrect branch is published accidentally #445

[1.5.2] - 2022-04-21

  • Add a feature to return the directories and files that are being monitored #374
  • Fix potential crash on windows if raw.FileNameLength exceeds syscall.MAX_PATH #361
  • Allow build on unsupported GOOS #424
  • Don't set poller.fd twice in newFdPoller #406
  • fix go vet warnings: call to (*T).Fatalf from a non-test goroutine #416

[1.5.1] - 2021-08-24

  • Revert Add AddRaw to not follow symlinks #394

[1.5.0] - 2021-08-20

  • Go: Increase minimum required version to Go 1.12 #381
  • Feature: Add AddRaw method which does not follow symlinks when adding a watch #289
  • Windows: Follow symlinks by default like on all other systems #289
  • CI: Use GitHub Actions for CI and cover go 1.12-1.17
    #378
    #381
    #385
  • Go 1.14+: Fix unsafe pointer conversion #325

[1.4.9] - 2020-03-11

  • Move example usage to the readme #329. This may resolve #328.

[1.4.8] - 2020-03-10

  • CI: test more go versions (@nathany 1d13583d846ea9d66dcabbfefbfb9d8e6fb05216)
  • Tests: Queued inotify events could have been read by the test before max_queued_events was hit (@matthias-stone #265)
  • Tests: t.Fatalf -> t.Errorf in go routines (@gdey #266)
  • CI: Less verbosity (@nathany #267)
  • Tests: Darwin: Exchangedata is deprecated on 10.13 (@nathany #267)
  • Tests: Check if channels are closed in the example (@alexeykazakov #244)
  • CI: Only run golint on latest version of go and fix issues (@cpuguy83 #284)
  • CI: Add windows to travis matrix (@cpuguy83 #284)
  • Docs: Remover appveyor badge (@nathany 11844c0959f6fff69ba325d097fce35bd85a8e93)
  • Linux: create epoll and pipe fds with close-on-exec (@JohannesEbke #219)
  • Linux: open files with close-on-exec (@linxiulei #273)
  • Docs: Plan to support fanotify (@nathany ab058b44498e8b7566a799372a39d150d9ea0119 )
  • Project: Add go.mod (@nathany #309)
  • Project: Revise editor config (@nathany #309)
  • Project: Update copyright for 2019 (@nathany #309)
  • CI: Drop go1.8 from CI matrix (@nathany #309)
  • Docs: Updating the FAQ section for supportability with NFS & FUSE filesystems (@Pratik32 4bf2d1fec78374803a39307bfb8d340688f4f28e )

[1.4.7] - 2018-01-09

  • BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)
  • Tests: Fix missing verb on format string (thanks @rchiossi)
  • Linux: Fix deadlock in Remove (thanks @aarondl)
  • Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)
  • Docs: Moved FAQ into the README (thanks @vahe)
  • Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)
  • Docs: replace references to OS X with macOS

[1.4.2] - 2016-10-10

  • Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec #178 (thanks @pattyshack)

[1.4.1] - 2016-10-04

  • Fix flaky inotify stress test on Linux #177 (thanks @pattyshack)

[1.4.0] - 2016-10-01

  • add a String() method to Event.Op #165 (thanks @oozie)

[1.3.1] - 2016-06-28

  • Windows: fix for double backslash when watching the root of a drive #151 (thanks @brunoqc)

[1.3.0] - 2016-04-19

  • Support linux/arm64 by patching x/sys/unix and switching to to it from syscall (thanks @suihkulokki) #135

[1.2.10] - 2016-03-02

  • Fix golint errors in windows.go #121 (thanks @tiffanyfj)

[1.2.9] - 2016-01-13

kqueue: Fix logic for CREATE after REMOVE #111 (thanks @bep)

[1.2.8] - 2015-12-17

  • kqueue: fix race condition in Close #105 (thanks @djui for reporting the issue and @ppknap for writing a failing test)
  • inotify: fix race in test
  • enable race detection for continuous integration (Linux, Mac, Windows)

[1.2.5] - 2015-10-17

  • inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) #100 (thanks @suihkulokki)
  • inotify: fix path leaks #73 (thanks @chamaken)
  • kqueue: watch for rename events on subdirectories #83 (thanks @guotie)
  • kqueue: avoid infinite loops from symlinks cycles #101 (thanks @illicitonion)

[1.2.1] - 2015-10-14

  • kqueue: don't watch named pipes #98 (thanks @evanphx)

[1.2.0] - 2015-02-08

  • inotify: use epoll to wake up readEvents #66 (thanks @PieterD)
  • inotify: closing watcher should now always shut down goroutine #63 (thanks @PieterD)
  • kqueue: close kqueue after removing watches, fixes #59

[1.1.1] - 2015-02-05

  • inotify: Retry read on EINTR #61 (thanks @PieterD)

[1.1.0] - 2014-12-12

  • kqueue: rework internals #43
    • add low-level functions
    • only need to store flags on directories
    • less mutexes #13
    • done can be an unbuffered channel
    • remove calls to os.NewSyscallError
  • More efficient string concatenation for Event.String() #52 (thanks @mdlayher)
  • kqueue: fix regression in rework causing subdirectories to be watched #48
  • kqueue: cleanup internal watch before sending remove event #51

[1.0.4] - 2014-09-07

  • kqueue: add dragonfly to the build tags.
  • Rename source code files, rearrange code so exported APIs are at the top.
  • Add done channel to example code. #37 (thanks @chenyukang)

[1.0.3] - 2014-08-19

  • [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. #36

[1.0.2] - 2014-08-17

  • [Fix] Missing create events on macOS. #14 (thanks @zhsso)
  • [Fix] Make ./path and path equivalent. (thanks @zhsso)

[1.0.0] - 2014-08-15

  • [API] Remove AddWatch on Windows, use Add.
  • Improve documentation for exported identifiers. #30
  • Minor updates based on feedback from golint.

dev / 2014-07-09

dev / 2014-07-04

  • kqueue: fix incorrect mutex used in Close()
  • Update example to demonstrate usage of Op.

dev / 2014-06-28

  • [API] Don't set the Write Op for attribute notifications #4
  • Fix for String() method on Event (thanks Alex Brainman)
  • Don't build on Plan 9 or Solaris (thanks @4ad)

dev / 2014-06-21

  • Events channel of type Event rather than *Event.
  • [internal] use syscall constants directly for inotify and kqueue.
  • [internal] kqueue: rename events to kevents and fileEvent to event.

dev / 2014-06-19

  • Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).
  • [internal] remove cookie from Event struct (unused).
  • [internal] Event struct has the same definition across every OS.
  • [internal] remove internal watch and removeWatch methods.

dev / 2014-06-12

  • [API] Renamed Watch() to Add() and RemoveWatch() to Remove().
  • [API] Pluralized channel names: Events and Errors.
  • [API] Renamed FileEvent struct to Event.
  • [API] Op constants replace methods like IsCreate().

dev / 2014-06-12

  • Fix data race on kevent buffer (thanks @tilaks) #98

dev / 2014-05-23

  • [API] Remove current implementation of WatchFlags.
    • current implementation doesn't take advantage of OS for efficiency
    • provides little benefit over filtering events as they are received, but has extra bookkeeping and mutexes
    • no tests for the current implementation
    • not fully implemented on Windows #93

[0.9.3] - 2014-12-31

  • kqueue: cleanup internal watch before sending remove event #51

[0.9.2] - 2014-08-17

  • [Backport] Fix missing create events on macOS. #14 (thanks @zhsso)

[0.9.1] - 2014-06-12

  • Fix data race on kevent buffer (thanks @tilaks) #98

[0.9.0] - 2014-01-17

  • IsAttrib() for events that only concern a file's metadata #79 (thanks @abustany)
  • [Fix] kqueue: fix deadlock #77 (thanks @cespare)
  • [NOTICE] Development has moved to code.google.com/p/go.exp/fsnotify in preparation for inclusion in the Go standard library.

[0.8.12] - 2013-11-13

  • [API] Remove FD_SET and friends from Linux adapter

[0.8.11] - 2013-11-02

  • [Doc] Add Changelog #72 (thanks @nathany)
  • [Doc] Spotlight and double modify events on macOS #62 (reported by @paulhammond)

[0.8.10] - 2013-10-19

  • [Fix] kqueue: remove file watches when parent directory is removed #71 (reported by @mdwhatcott)
  • [Fix] kqueue: race between Close and readEvents #70 (reported by @bernerdschaefer)
  • [Doc] specify OS-specific limits in README (thanks @debrando)

[0.8.9] - 2013-09-08

  • [Doc] Contributing (thanks @nathany)
  • [Doc] update package path in example code #63 (thanks @paulhammond)
  • [Doc] GoCI badge in README (Linux only) #60
  • [Doc] Cross-platform testing with Vagrant #59 (thanks @nathany)

[0.8.8] - 2013-06-17

  • [Fix] Windows: handle ERROR_MORE_DATA on Windows #49 (thanks @jbowtie)

[0.8.7] - 2013-06-03

  • [API] Make syscall flags internal
  • [Fix] inotify: ignore event changes
  • [Fix] race in symlink test #45 (reported by @srid)
  • [Fix] tests on Windows
  • lower case error messages

[0.8.6] - 2013-05-23

  • kqueue: Use EVT_ONLY flag on Darwin
  • [Doc] Update README with full example

[0.8.5] - 2013-05-09

  • [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg)

[0.8.4] - 2013-04-07

  • [Fix] kqueue: watch all file events #40 (thanks @ChrisBuchholz)

[0.8.3] - 2013-03-13

  • [Fix] inoitfy/kqueue memory leak #36 (reported by @nbkolchin)
  • [Fix] kqueue: use fsnFlags for watching a directory #33 (reported by @nbkolchin)

[0.8.2] - 2013-02-07

  • [Doc] add Authors
  • [Fix] fix data races for map access #29 (thanks @fsouza)

[0.8.1] - 2013-01-09

  • [Fix] Windows path separators
  • [Doc] BSD License

[0.8.0] - 2012-11-09

  • kqueue: directory watching improvements (thanks @vmirage)
  • inotify: add IN_MOVED_TO #25 (requested by @cpisto)
  • [Fix] kqueue: deleting watched directory #24 (reported by @jakerr)

[0.7.4] - 2012-10-09

  • [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)
  • [Fix] kqueue: preserve watch flags when watching for delete #21 (reported by @robfig)
  • [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)
  • [Fix] kqueue: modify after recreation of file

[0.7.3] - 2012-09-27

  • [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)
  • [Fix] kqueue: no longer get duplicate CREATE events

[0.7.2] - 2012-09-01

  • kqueue: events for created directories

[0.7.1] - 2012-07-14

  • [Fix] for renaming files

[0.7.0] - 2012-07-02

  • [Feature] FSNotify flags
  • [Fix] inotify: Added file name back to event path

[0.6.0] - 2012-06-06

  • kqueue: watch files after directory created (thanks @tmc)

[0.5.1] - 2012-05-22

  • [Fix] inotify: remove all watches before Close()

[0.5.0] - 2012-05-03

  • [API] kqueue: return errors during watch instead of sending over channel
  • kqueue: match symlink behavior on Linux
  • inotify: add DELETE_SELF (requested by @taralx)
  • [Fix] kqueue: handle EINTR (reported by @robfig)
  • [Doc] Godoc example [#1][] (thanks @davecheney)

[0.4.0] - 2012-03-30

  • Go 1 released: build with go tool
  • [Feature] Windows support using winfsnotify
  • Windows does not have attribute change notifications
  • Roll attribute notifications into IsModify

[0.3.0] - 2012-02-19

  • kqueue: add files when watch directory

[0.2.0] - 2011-12-30

  • update to latest Go weekly code

[0.1.0] - 2011-10-19

  • kqueue: add watch on file creation to match inotify
  • kqueue: create file event
  • inotify: ignore IN_IGNORED events
  • event String()
  • linux: common FileEvent functions
  • initial commit