src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

CHANGELOG.md (23422B)


      1 # Changelog
      2 
      3 1.9.0 2024-04-04
      4 ----------------
      5 
      6 ### Changes and fixes
      7 
      8 - all: make BufferedWatcher buffered again ([#657])
      9 
     10 - inotify: fix race when adding/removing watches while a watched path is being
     11   deleted ([#678], [#686])
     12 
     13 - inotify: don't send empty event if a watched path is unmounted ([#655])
     14 
     15 - inotify: don't register duplicate watches when watching both a symlink and its
     16   target; previously that would get "half-added" and removing the second would
     17   panic ([#679])
     18 
     19 - kqueue: fix watching relative symlinks ([#681])
     20 
     21 - kqueue: correctly mark pre-existing entries when watching a link to a dir on
     22   kqueue ([#682])
     23 
     24 - illumos: don't send error if changed file is deleted while processing the
     25   event ([#678])
     26 
     27 
     28 [#657]: https://github.com/fsnotify/fsnotify/pull/657
     29 [#678]: https://github.com/fsnotify/fsnotify/pull/678
     30 [#686]: https://github.com/fsnotify/fsnotify/pull/686
     31 [#655]: https://github.com/fsnotify/fsnotify/pull/655
     32 [#681]: https://github.com/fsnotify/fsnotify/pull/681
     33 [#679]: https://github.com/fsnotify/fsnotify/pull/679
     34 [#682]: https://github.com/fsnotify/fsnotify/pull/682
     35 
     36 1.8.0 2024-10-31
     37 ----------------
     38 
     39 ### Additions
     40 
     41 - all: add `FSNOTIFY_DEBUG` to print debug logs to stderr ([#619])
     42 
     43 ### Changes and fixes
     44 
     45 - windows: fix behaviour of `WatchList()` to be consistent with other platforms ([#610])
     46 
     47 - kqueue: ignore events with Ident=0 ([#590])
     48 
     49 - kqueue: set O_CLOEXEC to prevent passing file descriptors to children ([#617])
     50 
     51 - kqueue: emit events as "/path/dir/file" instead of "path/link/file" when watching a symlink ([#625])
     52 
     53 - inotify: don't send event for IN_DELETE_SELF when also watching the parent ([#620])
     54 
     55 - inotify: fix panic when calling Remove() in a goroutine ([#650])
     56 
     57 - fen: allow watching subdirectories of watched directories ([#621])
     58 
     59 [#590]: https://github.com/fsnotify/fsnotify/pull/590
     60 [#610]: https://github.com/fsnotify/fsnotify/pull/610
     61 [#617]: https://github.com/fsnotify/fsnotify/pull/617
     62 [#619]: https://github.com/fsnotify/fsnotify/pull/619
     63 [#620]: https://github.com/fsnotify/fsnotify/pull/620
     64 [#621]: https://github.com/fsnotify/fsnotify/pull/621
     65 [#625]: https://github.com/fsnotify/fsnotify/pull/625
     66 [#650]: https://github.com/fsnotify/fsnotify/pull/650
     67 
     68 1.7.0 - 2023-10-22
     69 ------------------
     70 This version of fsnotify needs Go 1.17.
     71 
     72 ### Additions
     73 
     74 - illumos: add FEN backend to support illumos and Solaris. ([#371])
     75 
     76 - all: add `NewBufferedWatcher()` to use a buffered channel, which can be useful
     77   in cases where you can't control the kernel buffer and receive a large number
     78   of events in bursts. ([#550], [#572])
     79 
     80 - all: add `AddWith()`, which is identical to `Add()` but allows passing
     81   options. ([#521])
     82 
     83 - windows: allow setting the ReadDirectoryChangesW() buffer size with
     84   `fsnotify.WithBufferSize()`; the default of 64K is the highest value that
     85   works on all platforms and is enough for most purposes, but in some cases a
     86   highest buffer is needed. ([#521])
     87 
     88 ### Changes and fixes
     89 
     90 - inotify: remove watcher if a watched path is renamed ([#518])
     91 
     92   After a rename the reported name wasn't updated, or even an empty string.
     93   Inotify doesn't provide any good facilities to update it, so just remove the
     94   watcher. This is already how it worked on kqueue and FEN.
     95 
     96   On Windows this does work, and remains working.
     97 
     98 - windows: don't listen for file attribute changes ([#520])
     99 
    100   File attribute changes are sent as `FILE_ACTION_MODIFIED` by the Windows API,
    101   with no way to see if they're a file write or attribute change, so would show
    102   up as a fsnotify.Write event. This is never useful, and could result in many
    103   spurious Write events.
    104 
    105 - windows: return `ErrEventOverflow` if the buffer is full ([#525])
    106 
    107   Before it would merely return "short read", making it hard to detect this
    108   error.
    109 
    110 - kqueue: make sure events for all files are delivered properly when removing a
    111   watched directory ([#526])
    112 
    113   Previously they would get sent with `""` (empty string) or `"."` as the path
    114   name.
    115 
    116 - kqueue: don't emit spurious Create events for symbolic links ([#524])
    117 
    118   The link would get resolved but kqueue would "forget" it already saw the link
    119   itself, resulting on a Create for every Write event for the directory.
    120 
    121 - all: return `ErrClosed` on `Add()` when the watcher is closed ([#516])
    122 
    123 - other: add `Watcher.Errors` and `Watcher.Events` to the no-op `Watcher` in
    124   `backend_other.go`, making it easier to use on unsupported platforms such as
    125   WASM, AIX, etc. ([#528])
    126 
    127 - other: use the `backend_other.go` no-op if the `appengine` build tag is set;
    128   Google AppEngine forbids usage of the unsafe package so the inotify backend
    129   won't compile there.
    130 
    131 [#371]: https://github.com/fsnotify/fsnotify/pull/371
    132 [#516]: https://github.com/fsnotify/fsnotify/pull/516
    133 [#518]: https://github.com/fsnotify/fsnotify/pull/518
    134 [#520]: https://github.com/fsnotify/fsnotify/pull/520
    135 [#521]: https://github.com/fsnotify/fsnotify/pull/521
    136 [#524]: https://github.com/fsnotify/fsnotify/pull/524
    137 [#525]: https://github.com/fsnotify/fsnotify/pull/525
    138 [#526]: https://github.com/fsnotify/fsnotify/pull/526
    139 [#528]: https://github.com/fsnotify/fsnotify/pull/528
    140 [#537]: https://github.com/fsnotify/fsnotify/pull/537
    141 [#550]: https://github.com/fsnotify/fsnotify/pull/550
    142 [#572]: https://github.com/fsnotify/fsnotify/pull/572
    143 
    144 1.6.0 - 2022-10-13
    145 ------------------
    146 This version of fsnotify needs Go 1.16 (this was already the case since 1.5.1,
    147 but not documented). It also increases the minimum Linux version to 2.6.32.
    148 
    149 ### Additions
    150 
    151 - all: add `Event.Has()` and `Op.Has()` ([#477])
    152 
    153   This makes checking events a lot easier; for example:
    154 
    155 	    if event.Op&Write == Write && !(event.Op&Remove == Remove) {
    156 	    }
    157 
    158 	Becomes:
    159 
    160 	    if event.Has(Write) && !event.Has(Remove) {
    161 	    }
    162 
    163 - all: add cmd/fsnotify ([#463])
    164 
    165   A command-line utility for testing and some examples.
    166 
    167 ### Changes and fixes
    168 
    169 - inotify: don't ignore events for files that don't exist ([#260], [#470])
    170 
    171   Previously the inotify watcher would call `os.Lstat()` to check if a file
    172   still exists before emitting events.
    173 
    174   This was inconsistent with other platforms and resulted in inconsistent event
    175   reporting (e.g. when a file is quickly removed and re-created), and generally
    176   a source of confusion. It was added in 2013 to fix a memory leak that no
    177   longer exists.
    178 
    179 - all: return `ErrNonExistentWatch` when `Remove()` is called on a path that's
    180   not watched ([#460])
    181 
    182 - inotify: replace epoll() with non-blocking inotify ([#434])
    183 
    184   Non-blocking inotify was not generally available at the time this library was
    185   written in 2014, but now it is. As a result, the minimum Linux version is
    186   bumped from 2.6.27 to 2.6.32. This hugely simplifies the code and is faster.
    187 
    188 - kqueue: don't check for events every 100ms ([#480])
    189 
    190   The watcher would wake up every 100ms, even when there was nothing to do. Now
    191   it waits until there is something to do.
    192 
    193 - macos: retry opening files on EINTR ([#475])
    194 
    195 - kqueue: skip unreadable files ([#479])
    196 
    197   kqueue requires a file descriptor for every file in a directory; this would
    198   fail if a file was unreadable by the current user. Now these files are simply
    199   skipped.
    200 
    201 - windows: fix renaming a watched directory if the parent is also watched ([#370])
    202 
    203 - windows: increase buffer size from 4K to 64K ([#485])
    204 
    205 - windows: close file handle on Remove() ([#288])
    206 
    207 - kqueue: put pathname in the error if watching a file fails ([#471])
    208 
    209 - inotify, windows: calling Close() more than once could race ([#465])
    210 
    211 - kqueue: improve Close() performance ([#233])
    212 
    213 - all: various documentation additions and clarifications.
    214 
    215 [#233]: https://github.com/fsnotify/fsnotify/pull/233
    216 [#260]: https://github.com/fsnotify/fsnotify/pull/260
    217 [#288]: https://github.com/fsnotify/fsnotify/pull/288
    218 [#370]: https://github.com/fsnotify/fsnotify/pull/370
    219 [#434]: https://github.com/fsnotify/fsnotify/pull/434
    220 [#460]: https://github.com/fsnotify/fsnotify/pull/460
    221 [#463]: https://github.com/fsnotify/fsnotify/pull/463
    222 [#465]: https://github.com/fsnotify/fsnotify/pull/465
    223 [#470]: https://github.com/fsnotify/fsnotify/pull/470
    224 [#471]: https://github.com/fsnotify/fsnotify/pull/471
    225 [#475]: https://github.com/fsnotify/fsnotify/pull/475
    226 [#477]: https://github.com/fsnotify/fsnotify/pull/477
    227 [#479]: https://github.com/fsnotify/fsnotify/pull/479
    228 [#480]: https://github.com/fsnotify/fsnotify/pull/480
    229 [#485]: https://github.com/fsnotify/fsnotify/pull/485
    230 
    231 ## [1.5.4] - 2022-04-25
    232 
    233 * Windows: add missing defer to `Watcher.WatchList` [#447](https://github.com/fsnotify/fsnotify/pull/447)
    234 * go.mod: use latest x/sys [#444](https://github.com/fsnotify/fsnotify/pull/444)
    235 * Fix compilation for OpenBSD [#443](https://github.com/fsnotify/fsnotify/pull/443)
    236 
    237 ## [1.5.3] - 2022-04-22
    238 
    239 * This version is retracted. An incorrect branch is published accidentally [#445](https://github.com/fsnotify/fsnotify/issues/445)
    240 
    241 ## [1.5.2] - 2022-04-21
    242 
    243 * Add a feature to return the directories and files that are being monitored [#374](https://github.com/fsnotify/fsnotify/pull/374)
    244 * Fix potential crash on windows if `raw.FileNameLength` exceeds `syscall.MAX_PATH` [#361](https://github.com/fsnotify/fsnotify/pull/361)
    245 * Allow build on unsupported GOOS [#424](https://github.com/fsnotify/fsnotify/pull/424)
    246 * Don't set `poller.fd` twice in `newFdPoller` [#406](https://github.com/fsnotify/fsnotify/pull/406)
    247 * fix go vet warnings: call to `(*T).Fatalf` from a non-test goroutine [#416](https://github.com/fsnotify/fsnotify/pull/416)
    248 
    249 ## [1.5.1] - 2021-08-24
    250 
    251 * Revert Add AddRaw to not follow symlinks [#394](https://github.com/fsnotify/fsnotify/pull/394)
    252 
    253 ## [1.5.0] - 2021-08-20
    254 
    255 * Go: Increase minimum required version to Go 1.12 [#381](https://github.com/fsnotify/fsnotify/pull/381)
    256 * Feature: Add AddRaw method which does not follow symlinks when adding a watch [#289](https://github.com/fsnotify/fsnotify/pull/298)
    257 * Windows: Follow symlinks by default like on all other systems [#289](https://github.com/fsnotify/fsnotify/pull/289)
    258 * CI: Use GitHub Actions for CI and cover go 1.12-1.17
    259    [#378](https://github.com/fsnotify/fsnotify/pull/378)
    260    [#381](https://github.com/fsnotify/fsnotify/pull/381)
    261    [#385](https://github.com/fsnotify/fsnotify/pull/385)
    262 * Go 1.14+: Fix unsafe pointer conversion [#325](https://github.com/fsnotify/fsnotify/pull/325)
    263 
    264 ## [1.4.9] - 2020-03-11
    265 
    266 * Move example usage to the readme #329. This may resolve #328.
    267 
    268 ## [1.4.8] - 2020-03-10
    269 
    270 * CI: test more go versions (@nathany 1d13583d846ea9d66dcabbfefbfb9d8e6fb05216)
    271 * Tests: Queued inotify events could have been read by the test before max_queued_events was hit (@matthias-stone #265)
    272 * Tests:  t.Fatalf -> t.Errorf in go routines (@gdey #266)
    273 * CI: Less verbosity (@nathany #267)
    274 * Tests: Darwin: Exchangedata is deprecated on 10.13 (@nathany #267)
    275 * Tests: Check if channels are closed in the example (@alexeykazakov #244)
    276 * CI: Only run golint on latest version of go and fix issues (@cpuguy83 #284)
    277 * CI: Add windows to travis matrix (@cpuguy83 #284)
    278 * Docs: Remover appveyor badge (@nathany 11844c0959f6fff69ba325d097fce35bd85a8e93)
    279 * Linux: create epoll and pipe fds with close-on-exec (@JohannesEbke #219)
    280 * Linux: open files with close-on-exec (@linxiulei #273)
    281 * Docs: Plan to support fanotify (@nathany ab058b44498e8b7566a799372a39d150d9ea0119 )
    282 * Project: Add go.mod (@nathany #309)
    283 * Project: Revise editor config (@nathany #309)
    284 * Project: Update copyright for 2019 (@nathany #309)
    285 * CI: Drop go1.8 from CI matrix (@nathany #309)
    286 * Docs: Updating the FAQ section for supportability with NFS & FUSE filesystems (@Pratik32 4bf2d1fec78374803a39307bfb8d340688f4f28e )
    287 
    288 ## [1.4.7] - 2018-01-09
    289 
    290 * BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)
    291 * Tests: Fix missing verb on format string (thanks @rchiossi)
    292 * Linux: Fix deadlock in Remove (thanks @aarondl)
    293 * Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)
    294 * Docs: Moved FAQ into the README (thanks @vahe)
    295 * Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)
    296 * Docs: replace references to OS X with macOS
    297 
    298 ## [1.4.2] - 2016-10-10
    299 
    300 * Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack)
    301 
    302 ## [1.4.1] - 2016-10-04
    303 
    304 * Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack)
    305 
    306 ## [1.4.0] - 2016-10-01
    307 
    308 * add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie)
    309 
    310 ## [1.3.1] - 2016-06-28
    311 
    312 * Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc)
    313 
    314 ## [1.3.0] - 2016-04-19
    315 
    316 * Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135)
    317 
    318 ## [1.2.10] - 2016-03-02
    319 
    320 * Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj)
    321 
    322 ## [1.2.9] - 2016-01-13
    323 
    324 kqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep)
    325 
    326 ## [1.2.8] - 2015-12-17
    327 
    328 * kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test)
    329 * inotify: fix race in test
    330 * enable race detection for continuous integration (Linux, Mac, Windows)
    331 
    332 ## [1.2.5] - 2015-10-17
    333 
    334 * inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki)
    335 * inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken)
    336 * kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie)
    337 * kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion)
    338 
    339 ## [1.2.1] - 2015-10-14
    340 
    341 * kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx)
    342 
    343 ## [1.2.0] - 2015-02-08
    344 
    345 * inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD)
    346 * inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD)
    347 * kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59)
    348 
    349 ## [1.1.1] - 2015-02-05
    350 
    351 * inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD)
    352 
    353 ## [1.1.0] - 2014-12-12
    354 
    355 * kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43)
    356     * add low-level functions
    357     * only need to store flags on directories
    358     * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13)
    359     * done can be an unbuffered channel
    360     * remove calls to os.NewSyscallError
    361 * More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher)
    362 * kqueue: fix regression in  rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48)
    363 * kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)
    364 
    365 ## [1.0.4] - 2014-09-07
    366 
    367 * kqueue: add dragonfly to the build tags.
    368 * Rename source code files, rearrange code so exported APIs are at the top.
    369 * Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang)
    370 
    371 ## [1.0.3] - 2014-08-19
    372 
    373 * [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36)
    374 
    375 ## [1.0.2] - 2014-08-17
    376 
    377 * [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)
    378 * [Fix] Make ./path and path equivalent. (thanks @zhsso)
    379 
    380 ## [1.0.0] - 2014-08-15
    381 
    382 * [API] Remove AddWatch on Windows, use Add.
    383 * Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30)
    384 * Minor updates based on feedback from golint.
    385 
    386 ## dev / 2014-07-09
    387 
    388 * Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify).
    389 * Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno)
    390 
    391 ## dev / 2014-07-04
    392 
    393 * kqueue: fix incorrect mutex used in Close()
    394 * Update example to demonstrate usage of Op.
    395 
    396 ## dev / 2014-06-28
    397 
    398 * [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4)
    399 * Fix for String() method on Event (thanks Alex Brainman)
    400 * Don't build on Plan 9 or Solaris (thanks @4ad)
    401 
    402 ## dev / 2014-06-21
    403 
    404 * Events channel of type Event rather than *Event.
    405 * [internal] use syscall constants directly for inotify and kqueue.
    406 * [internal] kqueue: rename events to kevents and fileEvent to event.
    407 
    408 ## dev / 2014-06-19
    409 
    410 * Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).
    411 * [internal] remove cookie from Event struct (unused).
    412 * [internal] Event struct has the same definition across every OS.
    413 * [internal] remove internal watch and removeWatch methods.
    414 
    415 ## dev / 2014-06-12
    416 
    417 * [API] Renamed Watch() to Add() and RemoveWatch() to Remove().
    418 * [API] Pluralized channel names: Events and Errors.
    419 * [API] Renamed FileEvent struct to Event.
    420 * [API] Op constants replace methods like IsCreate().
    421 
    422 ## dev / 2014-06-12
    423 
    424 * Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)
    425 
    426 ## dev / 2014-05-23
    427 
    428 * [API] Remove current implementation of WatchFlags.
    429     * current implementation doesn't take advantage of OS for efficiency
    430     * provides little benefit over filtering events as they are received, but has  extra bookkeeping and mutexes
    431     * no tests for the current implementation
    432     * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195)
    433 
    434 ## [0.9.3] - 2014-12-31
    435 
    436 * kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)
    437 
    438 ## [0.9.2] - 2014-08-17
    439 
    440 * [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)
    441 
    442 ## [0.9.1] - 2014-06-12
    443 
    444 * Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)
    445 
    446 ## [0.9.0] - 2014-01-17
    447 
    448 * IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)
    449 * [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)
    450 * [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.
    451 
    452 ## [0.8.12] - 2013-11-13
    453 
    454 * [API] Remove FD_SET and friends from Linux adapter
    455 
    456 ## [0.8.11] - 2013-11-02
    457 
    458 * [Doc] Add Changelog [#72][] (thanks @nathany)
    459 * [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond)
    460 
    461 ## [0.8.10] - 2013-10-19
    462 
    463 * [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)
    464 * [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)
    465 * [Doc] specify OS-specific limits in README (thanks @debrando)
    466 
    467 ## [0.8.9] - 2013-09-08
    468 
    469 * [Doc] Contributing (thanks @nathany)
    470 * [Doc] update package path in example code [#63][] (thanks @paulhammond)
    471 * [Doc] GoCI badge in README (Linux only) [#60][]
    472 * [Doc] Cross-platform testing with Vagrant  [#59][] (thanks @nathany)
    473 
    474 ## [0.8.8] - 2013-06-17
    475 
    476 * [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)
    477 
    478 ## [0.8.7] - 2013-06-03
    479 
    480 * [API] Make syscall flags internal
    481 * [Fix] inotify: ignore event changes
    482 * [Fix] race in symlink test [#45][] (reported by @srid)
    483 * [Fix] tests on Windows
    484 * lower case error messages
    485 
    486 ## [0.8.6] - 2013-05-23
    487 
    488 * kqueue: Use EVT_ONLY flag on Darwin
    489 * [Doc] Update README with full example
    490 
    491 ## [0.8.5] - 2013-05-09
    492 
    493 * [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg)
    494 
    495 ## [0.8.4] - 2013-04-07
    496 
    497 * [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)
    498 
    499 ## [0.8.3] - 2013-03-13
    500 
    501 * [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)
    502 * [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)
    503 
    504 ## [0.8.2] - 2013-02-07
    505 
    506 * [Doc] add Authors
    507 * [Fix] fix data races for map access [#29][] (thanks @fsouza)
    508 
    509 ## [0.8.1] - 2013-01-09
    510 
    511 * [Fix] Windows path separators
    512 * [Doc] BSD License
    513 
    514 ## [0.8.0] - 2012-11-09
    515 
    516 * kqueue: directory watching improvements (thanks @vmirage)
    517 * inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)
    518 * [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)
    519 
    520 ## [0.7.4] - 2012-10-09
    521 
    522 * [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)
    523 * [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)
    524 * [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)
    525 * [Fix] kqueue: modify after recreation of file
    526 
    527 ## [0.7.3] - 2012-09-27
    528 
    529 * [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)
    530 * [Fix] kqueue: no longer get duplicate CREATE events
    531 
    532 ## [0.7.2] - 2012-09-01
    533 
    534 * kqueue: events for created directories
    535 
    536 ## [0.7.1] - 2012-07-14
    537 
    538 * [Fix] for renaming files
    539 
    540 ## [0.7.0] - 2012-07-02
    541 
    542 * [Feature] FSNotify flags
    543 * [Fix] inotify: Added file name back to event path
    544 
    545 ## [0.6.0] - 2012-06-06
    546 
    547 * kqueue: watch files after directory created (thanks @tmc)
    548 
    549 ## [0.5.1] - 2012-05-22
    550 
    551 * [Fix] inotify: remove all watches before Close()
    552 
    553 ## [0.5.0] - 2012-05-03
    554 
    555 * [API] kqueue: return errors during watch instead of sending over channel
    556 * kqueue: match symlink behavior on Linux
    557 * inotify: add `DELETE_SELF` (requested by @taralx)
    558 * [Fix] kqueue: handle EINTR (reported by @robfig)
    559 * [Doc] Godoc example [#1][] (thanks @davecheney)
    560 
    561 ## [0.4.0] - 2012-03-30
    562 
    563 * Go 1 released: build with go tool
    564 * [Feature] Windows support using winfsnotify
    565 * Windows does not have attribute change notifications
    566 * Roll attribute notifications into IsModify
    567 
    568 ## [0.3.0] - 2012-02-19
    569 
    570 * kqueue: add files when watch directory
    571 
    572 ## [0.2.0] - 2011-12-30
    573 
    574 * update to latest Go weekly code
    575 
    576 ## [0.1.0] - 2011-10-19
    577 
    578 * kqueue: add watch on file creation to match inotify
    579 * kqueue: create file event
    580 * inotify: ignore `IN_IGNORED` events
    581 * event String()
    582 * linux: common FileEvent functions
    583 * initial commit
    584 
    585 [#79]: https://github.com/howeyc/fsnotify/pull/79
    586 [#77]: https://github.com/howeyc/fsnotify/pull/77
    587 [#72]: https://github.com/howeyc/fsnotify/issues/72
    588 [#71]: https://github.com/howeyc/fsnotify/issues/71
    589 [#70]: https://github.com/howeyc/fsnotify/issues/70
    590 [#63]: https://github.com/howeyc/fsnotify/issues/63
    591 [#62]: https://github.com/howeyc/fsnotify/issues/62
    592 [#60]: https://github.com/howeyc/fsnotify/issues/60
    593 [#59]: https://github.com/howeyc/fsnotify/issues/59
    594 [#49]: https://github.com/howeyc/fsnotify/issues/49
    595 [#45]: https://github.com/howeyc/fsnotify/issues/45
    596 [#40]: https://github.com/howeyc/fsnotify/issues/40
    597 [#36]: https://github.com/howeyc/fsnotify/issues/36
    598 [#33]: https://github.com/howeyc/fsnotify/issues/33
    599 [#29]: https://github.com/howeyc/fsnotify/issues/29
    600 [#25]: https://github.com/howeyc/fsnotify/issues/25
    601 [#24]: https://github.com/howeyc/fsnotify/issues/24
    602 [#21]: https://github.com/howeyc/fsnotify/issues/21