1# Changelog
2
3## v1.4.7 / 2018-01-09
4
5* BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine)
6* Tests: Fix missing verb on format string (thanks @rchiossi)
7* Linux: Fix deadlock in Remove (thanks @aarondl)
8* Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne)
9* Docs: Moved FAQ into the README (thanks @vahe)
10* Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich)
11* Docs: replace references to OS X with macOS
12
13## v1.4.2 / 2016-10-10
14
15* 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)
16
17## v1.4.1 / 2016-10-04
18
19* Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack)
20
21## v1.4.0 / 2016-10-01
22
23* add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie)
24
25## v1.3.1 / 2016-06-28
26
27* Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc)
28
29## v1.3.0 / 2016-04-19
30
31* 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)
32
33## v1.2.10 / 2016-03-02
34
35* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj)
36
37## v1.2.9 / 2016-01-13
38
39kqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep)
40
41## v1.2.8 / 2015-12-17
42
43* 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)
44* inotify: fix race in test
45* enable race detection for continuous integration (Linux, Mac, Windows)
46
47## v1.2.5 / 2015-10-17
48
49* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki)
50* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken)
51* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie)
52* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion)
53
54## v1.2.1 / 2015-10-14
55
56* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx)
57
58## v1.2.0 / 2015-02-08
59
60* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD)
61* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD)
62* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59)
63
64## v1.1.1 / 2015-02-05
65
66* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD)
67
68## v1.1.0 / 2014-12-12
69
70* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43)
71    * add low-level functions
72    * only need to store flags on directories
73    * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13)
74    * done can be an unbuffered channel
75    * remove calls to os.NewSyscallError
76* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher)
77* kqueue: fix regression in  rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48)
78* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)
79
80## v1.0.4 / 2014-09-07
81
82* kqueue: add dragonfly to the build tags.
83* Rename source code files, rearrange code so exported APIs are at the top.
84* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang)
85
86## v1.0.3 / 2014-08-19
87
88* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36)
89
90## v1.0.2 / 2014-08-17
91
92* [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)
93* [Fix] Make ./path and path equivalent. (thanks @zhsso)
94
95## v1.0.0 / 2014-08-15
96
97* [API] Remove AddWatch on Windows, use Add.
98* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30)
99* Minor updates based on feedback from golint.
100
101## dev / 2014-07-09
102
103* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify).
104* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno)
105
106## dev / 2014-07-04
107
108* kqueue: fix incorrect mutex used in Close()
109* Update example to demonstrate usage of Op.
110
111## dev / 2014-06-28
112
113* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4)
114* Fix for String() method on Event (thanks Alex Brainman)
115* Don't build on Plan 9 or Solaris (thanks @4ad)
116
117## dev / 2014-06-21
118
119* Events channel of type Event rather than *Event.
120* [internal] use syscall constants directly for inotify and kqueue.
121* [internal] kqueue: rename events to kevents and fileEvent to event.
122
123## dev / 2014-06-19
124
125* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally).
126* [internal] remove cookie from Event struct (unused).
127* [internal] Event struct has the same definition across every OS.
128* [internal] remove internal watch and removeWatch methods.
129
130## dev / 2014-06-12
131
132* [API] Renamed Watch() to Add() and RemoveWatch() to Remove().
133* [API] Pluralized channel names: Events and Errors.
134* [API] Renamed FileEvent struct to Event.
135* [API] Op constants replace methods like IsCreate().
136
137## dev / 2014-06-12
138
139* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)
140
141## dev / 2014-05-23
142
143* [API] Remove current implementation of WatchFlags.
144    * current implementation doesn't take advantage of OS for efficiency
145    * provides little benefit over filtering events as they are received, but has  extra bookkeeping and mutexes
146    * no tests for the current implementation
147    * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195)
148
149## v0.9.3 / 2014-12-31
150
151* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51)
152
153## v0.9.2 / 2014-08-17
154
155* [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso)
156
157## v0.9.1 / 2014-06-12
158
159* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98)
160
161## v0.9.0 / 2014-01-17
162
163* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany)
164* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare)
165* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library.
166
167## v0.8.12 / 2013-11-13
168
169* [API] Remove FD_SET and friends from Linux adapter
170
171## v0.8.11 / 2013-11-02
172
173* [Doc] Add Changelog [#72][] (thanks @nathany)
174* [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond)
175
176## v0.8.10 / 2013-10-19
177
178* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott)
179* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer)
180* [Doc] specify OS-specific limits in README (thanks @debrando)
181
182## v0.8.9 / 2013-09-08
183
184* [Doc] Contributing (thanks @nathany)
185* [Doc] update package path in example code [#63][] (thanks @paulhammond)
186* [Doc] GoCI badge in README (Linux only) [#60][]
187* [Doc] Cross-platform testing with Vagrant  [#59][] (thanks @nathany)
188
189## v0.8.8 / 2013-06-17
190
191* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie)
192
193## v0.8.7 / 2013-06-03
194
195* [API] Make syscall flags internal
196* [Fix] inotify: ignore event changes
197* [Fix] race in symlink test [#45][] (reported by @srid)
198* [Fix] tests on Windows
199* lower case error messages
200
201## v0.8.6 / 2013-05-23
202
203* kqueue: Use EVT_ONLY flag on Darwin
204* [Doc] Update README with full example
205
206## v0.8.5 / 2013-05-09
207
208* [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg)
209
210## v0.8.4 / 2013-04-07
211
212* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz)
213
214## v0.8.3 / 2013-03-13
215
216* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin)
217* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin)
218
219## v0.8.2 / 2013-02-07
220
221* [Doc] add Authors
222* [Fix] fix data races for map access [#29][] (thanks @fsouza)
223
224## v0.8.1 / 2013-01-09
225
226* [Fix] Windows path separators
227* [Doc] BSD License
228
229## v0.8.0 / 2012-11-09
230
231* kqueue: directory watching improvements (thanks @vmirage)
232* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto)
233* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr)
234
235## v0.7.4 / 2012-10-09
236
237* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji)
238* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig)
239* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig)
240* [Fix] kqueue: modify after recreation of file
241
242## v0.7.3 / 2012-09-27
243
244* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage)
245* [Fix] kqueue: no longer get duplicate CREATE events
246
247## v0.7.2 / 2012-09-01
248
249* kqueue: events for created directories
250
251## v0.7.1 / 2012-07-14
252
253* [Fix] for renaming files
254
255## v0.7.0 / 2012-07-02
256
257* [Feature] FSNotify flags
258* [Fix] inotify: Added file name back to event path
259
260## v0.6.0 / 2012-06-06
261
262* kqueue: watch files after directory created (thanks @tmc)
263
264## v0.5.1 / 2012-05-22
265
266* [Fix] inotify: remove all watches before Close()
267
268## v0.5.0 / 2012-05-03
269
270* [API] kqueue: return errors during watch instead of sending over channel
271* kqueue: match symlink behavior on Linux
272* inotify: add `DELETE_SELF` (requested by @taralx)
273* [Fix] kqueue: handle EINTR (reported by @robfig)
274* [Doc] Godoc example [#1][] (thanks @davecheney)
275
276## v0.4.0 / 2012-03-30
277
278* Go 1 released: build with go tool
279* [Feature] Windows support using winfsnotify
280* Windows does not have attribute change notifications
281* Roll attribute notifications into IsModify
282
283## v0.3.0 / 2012-02-19
284
285* kqueue: add files when watch directory
286
287## v0.2.0 / 2011-12-30
288
289* update to latest Go weekly code
290
291## v0.1.0 / 2011-10-19
292
293* kqueue: add watch on file creation to match inotify
294* kqueue: create file event
295* inotify: ignore `IN_IGNORED` events
296* event String()
297* linux: common FileEvent functions
298* initial commit
299
300[#79]: https://github.com/howeyc/fsnotify/pull/79
301[#77]: https://github.com/howeyc/fsnotify/pull/77
302[#72]: https://github.com/howeyc/fsnotify/issues/72
303[#71]: https://github.com/howeyc/fsnotify/issues/71
304[#70]: https://github.com/howeyc/fsnotify/issues/70
305[#63]: https://github.com/howeyc/fsnotify/issues/63
306[#62]: https://github.com/howeyc/fsnotify/issues/62
307[#60]: https://github.com/howeyc/fsnotify/issues/60
308[#59]: https://github.com/howeyc/fsnotify/issues/59
309[#49]: https://github.com/howeyc/fsnotify/issues/49
310[#45]: https://github.com/howeyc/fsnotify/issues/45
311[#40]: https://github.com/howeyc/fsnotify/issues/40
312[#36]: https://github.com/howeyc/fsnotify/issues/36
313[#33]: https://github.com/howeyc/fsnotify/issues/33
314[#29]: https://github.com/howeyc/fsnotify/issues/29
315[#25]: https://github.com/howeyc/fsnotify/issues/25
316[#24]: https://github.com/howeyc/fsnotify/issues/24
317[#21]: https://github.com/howeyc/fsnotify/issues/21
318