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