Project: Grafana Loki (Observability and Analysis / Observability)
File: CHANGELOG.md

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 INQOVERFLOW event (thanks @zeldovich) Docs: replace references to OS X with macOS Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec (thanks @pattyshack) Fix flaky inotify stress test on Linux (thanks @pattyshack) add a String() method to Event.Op (thanks @oozie) Windows: fix for double backslash when watching the root of a drive (thanks @brunoqc) Support linux/arm64 by x/sys/unix and switching to to it from syscall (thanks @suihkulokki) Fix golint errors in windows.go (thanks @tiffanyfj) kqueue: Fix logic for CREATE after REMOVE (thanks @bep) kqueue: fix race condition in Close (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) inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) (thanks @suihkulokki) inotify: fix path leaks (thanks @chamaken) kqueue: watch for rename events on subdirectories (thanks @guotie) kqueue: avoid infinite loops from symlinks cycles (thanks @illicitonion) kqueue: don't watch named pipes (thanks @evanphx) inotify: use epoll to wake up readEvents (thanks @PieterD) inotify: closing watcher should now always shut down goroutine (thanks @PieterD) kqueue: close kqueue after removing watches, fixes inotify: Retry read on EINTR (thanks @PieterD) kqueue: rework internals add low-level functions only need to store flags on directories less mutexes done can be an unbuffered channel remove calls to os.NewSyscallError More efficient string concatenation for Event.String() (thanks @mdlayher) kqueue: fix regression in rework causing subdirectories to be watched kqueue: cleanup internal watch before sending remove event 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. (thanks @chenyukang) (thanks @zhsso) [Fix] Make ./path and path equivalent. (thanks @zhsso) [API] Remove AddWatch on Windows, use Add. Improve documentation for exported identifiers. Minor updates based on feedback from golint. Moved to . Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno) kqueue: fix incorrect mutex used in Close() Update example to demonstrate usage of Op. Fix for String() method on Event (thanks Alex Brainman) Don't build on Plan 9 or Solaris (thanks @4ad) 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. Go 1.3+ required on Windows (uses syscall.ERRORMOREDATA

[internal] remove cookie from Event struct (unused). [internal] Event struct has the same definition across every OS. [internal] remove internal watch and removeWatch methods. [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(). Fix data race on kevent buffer (thanks @tilaks) [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 kqueue: cleanup internal watch before sending remove event (thanks @zhsso) Fix data race on kevent buffer (thanks @tilaks) IsAttrib() for events that only concern a file's metadata (thanks @abustany) (thanks @cespare) [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library. [API] Remove FD_SET and friends from Linux adapter (thanks @nathany) (reported by @paulhammond) (reported by @mdwhatcott) (reported by @bernerdschaefer) [Doc] specify OS-specific limits in README (thanks @debrando) [Doc] Contributing (thanks @nathany) (thanks @paulhammond) (thanks @nathany) (thanks @jbowtie) [API] Make syscall flags internal [Fix] inotify: ignore event changes (reported by @srid) [Fix] tests on Windows lower case error messages kqueue: Use EVT_ONLY flag on Darwin [Doc] Update README with full example [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg) (thanks @ChrisBuchholz) (reported by @nbkolchin) (reported by @nbkolchin) [Doc] add Authors (thanks @fsouza) [Fix] Windows path separators [Doc] BSD License kqueue: directory watching improvements (thanks @vmirage) inotify: add `INMOVEDTO` (requested by @cpisto) (reported by @jakerr) [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji) (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 [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage) [Fix] kqueue: no longer get duplicate CREATE events kqueue: events for created directories [Fix] for renaming files [Feature] FSNotify flags [Fix] inotify: Added file name back to event path kqueue: watch files after directory created (thanks @tmc) [Fix] inotify: remove all watches before Close() [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) (thanks @davecheney) Go 1 released: build with go tool [Feature] Windows support using winfsnotify Windows does not have attribute change notifications Roll attribute notifications into IsModify kqueue: add files when watch directory update to latest Go weekly code 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