-
Notifications
You must be signed in to change notification settings - Fork 107
/
NEWS
345 lines (249 loc) · 12.3 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
= Release History
== 5.6: July 1, 2024
- Process exit status messages using background awk scripts
- Use min(OPEN_MAX, rl.rlim_max) to set rlim_cur on MacOS
- Detect and use native strlcpy(3)
- Always build with GNU_SOURCE set on Linux
== 5.5: November 17, 2023
- Report correct error if open(3) fails
- Use kern.maxfilesperproc to determine file open limit on MacOS
== 5.4: August 1, 2023
- 'make test' runs a quick smoketest, 'make check' runs regressions
- Set IN_CLOEXEC only for inotify_init, kqueue uses similar setting by default
- Unconditionally try to set soft file limit to 2^16 on MacOS
- Use non-reentrant calls sparingly in signal handlers
- configure: use TARGET_OS to override the output of uname(1)
== 5.3: January 20, 2023
- Symlink changes detected on Linux by setting 'ENTR_INOTIFY_SYMLINK'
- Use /dev/null rather then closed pipe for stdin in -r mode
- Utilize {O,FD}_CLOEXEC flag for unintentional leaks of descriptors to
executed utilities
- Remove C unit tests
- Only respond to attribute/inode changes on Linux
== 5.2: May 05, 2022
- Update copy of strlcpy(3) for Linux
- Detect file deletion from directories on Linux
- Print the signal that terminated a child when using '-s'
- Return 128+signal that terminated a child when using '-z'
- Ensure terminal settings are reset when '-z' is set
== 5.1: December 28, 2021
- Detect files moved to or from directories on Linux
- Allow detection of directory entries beginning with '.' by specifying '-d' twice
- Only reset terminal settings in exit handler if settings were changed
== 5.0: July 2, 2021
- Add missing call to getrlimit(3) on MacOS
- Eliminate memory management warnings on Linux
- EV_TRACE prints file mode and file name
- Ignore asynchronous attribute changes on MacOS 11
== 4.9: May 3, 2021
- EV_TRACE also prints file/notify descriptor limit
- Don't raise rlim_cur on MacOS
- Set 2^16 watches if inotify limits cannot be read
- Raise an error and suggest '-n' if terminal attributes cannot be read
== 4.8: February 26, 2021
- Set a maximum of 2^19 watches to guard against absurd file open limits on
MacOS
- Use control sequences to clear the display and specify '-c' twice to erase
the scrollback buffer
== 4.7: January 29, 2021
- Use system file descriptor limits when max_user_watches is not accessible
- Return the exit status of the child process when the '-z' option is used
- Handle SIGHUP so child process are terminated when a terminal is closed
- More accurately return shell exit code using '-s' option
== 4.6: July 1, 2020
- Always call waitpid(2) to avoid dead processes
- Duplicate STDIN file descriptor before closing; for the '-r' option
== 4.5: April 20, 2020
- New '-z' "one-shot" option self-terminates after the utility exits
- Termination by 'q' or 'SIGINT' results in an exit status of 0
== 4.4: January 02, 2020
- Use a single inotify queue on Linux, limited by
/proc/sys/fs/inotify/max_user_watches
- Set the environment variable 'ENTR_INOTIFY_WORKAROUND' to enable a
compatibility mode for platforms with deformed inotify support
== 4.3: September 25, 2019
- Move hosting from bitbucket.org to github.com
- Rename tag names from entr-X.Y to X.Y
- Replace hg with git as a dependency for system-test.sh
== 4.2: March 28, 2019
- Use pledge(2) on OpenBSD
- New '-a' option enables response to events that occur while the utility is
running
- Error messages direct users to http://eradman.com/entrproject/limits.html
- Correctly report error when a file cannot be reopened
== 4.1: June 13, 2018
- New '-n' non-interactive option disables keyboard input
- EV_TRACE environment variable enables file system event tracing
- Track changes to the inode number as a workaround for missing delete
events on the Linux kernel
== 4.0: February 02, 2018
- Warn instead of error if kqueue fails to register on STDIN
- Close STDIN before running the utility when the restart option is used
- Restore terminal settings if terminated by a signal
== 3.9: September 19, 2017
- Fix use of poll(2) to avoid possible busy-loop on Linux
- Disable keyboard input if reading STDIN fails
== 3.8: August 11, 2017
- Run the utility if the spacebar is pressed
- 'q' for quit
== 3.7: February 27, 2017
- Terminate subprocess in restart mode if a file under watch disappears
- Allow NOTE_ATTRIB to set '/_' only if file mode changes
- New '-s' option executes commands using $SHELL -c
- Print usage and exit if input is from a terminal instead of a pipe
== 3.6: July 01, 2016
- Do not print warning if _TTY_PATH cannot be opened (for chroot, docker, ...)
- Non-existent input files produce a warning instead of an error
- Trigger run when permissions change on regular files
== 3.5: April 01, 2016
- Removed contrib/*
- Detect new subdirectories on Linux
- Direct users to http://entrproject.org/limits.html if inotify hits a kernel
limit
== 3.4: December 12, 2015
- Terminate the child process before exiting when the reload option is combined
with the directory watch option
- Direct users to http://entrproject.org/limits.html if the maximum number of
open files is exceeded
== 3.3: October 23, 2015
- Substitute '/_' only with regular files when using the directory watch option
- Bugfix when tracking the first file to change
- Display release number along with usage
== 3.2: April 9, 2015
- Execute the utility immediately after registering watch events. Old behavior
is restored using new postpone option ('-p')
- Relocated 'reload-browser' to http://entrproject.org/scripts/reload-browser
- Drop FIFO support to further simply code and documentation. FIFO mode was
conceptually good, but EXEC mode is intelligent hand easily handles the vast
majority of use cases
- Remove kFreeBSD as a target platform
== 3.1: March 4, 2015
- Return error code indicating exit reason after handling signals
- Restart mode sets process group to ensure that wrapper scripts do not prevent
signals from reaching child processes
- Removed DEBUG printf statements
== 3.0: December 19, 2014
- Man page highlights the flexibility of executing a commands using a shell
- 'reload-browser', a cross-platform script for reloading the current tab in
one or more browsers
- system_test.sh auto-upgrades to bash if the default shell does not support
the ERR trap
- Workaround implemented for Linux using fstat(2) to detect if a binary was
removed if inotify issues IN_ATTRIB but not IN_DELETE_SELF
- Use calloc(3) to take advantage of overflow detection
== 2.9: June 10, 2014
- Moved alternate Makefiles to contrib/
- Trigger actions when a file is truncated on BSD
- Improved format of DEBUG messages
- Added missing extern for missing/fmemopen.c to avoid warning on MacOS 10.7+
- No longer register NOTE_EXTEND; this event is not always merged with
NOTE_WRITE on MacOS
- New directory-watch option ('-d'). In this mode a shell while-loop can be
used to track the addition of new files
== 2.8: March 15, 2014
- Iteratively check for new file system events using a 1ms timeout after a file
has been renamed or removed in order to prevent the utility from being
executed before successive changes from a version control system have
completed
- Regression tests use Vim and Mercurial
- Timing on regression tests has been tightened to only support real hardware;
they are not expected to pass in emulated environments
- More correctly identify the first file to trigger a file change notification
- Renamed regress.sh to system_test.sh, and drop dependency on ksh
== 2.7: February 12, 2014
- Changed function pointer prefixes from '_' to 'x' to avoid runtime symbol
collisions in libc. Required to build on DragonFlyBSD
- Add this NEWS file to provide detailed release history for port maintainers
- Substitute '/_' argument with the first file that changed
- Man page formatted with more semantically correct markup
- Multiple events on the same file are merged on Linux to prevent duplicate
writes to a named pipe
== 2.6: January 23, 2014
- Added -c option to clear the screen before calling execvp(3)
- Changed command line option '{}' to '/_'
- Renamed Makefile.linux-lbsd to Makefile.debian
- Include CPPFLAGS since some build systems (namely Debian) use it to specify
hardening options
- Raise ARG_MAX from 4K to 2MB on Linux, since _SC_ARG_MAX returns an incorrect
value on Linux
- Handle RENAME events that are not followed by DELETE. This enables us to cope
with the backup option in Vim
== 2.5: December 30, 2013
- Restore full 50ms period for consolidating events on Linux. Required for the
Geany editor
- Remove use of setproctitle(3), no plans to implement this on Linux and MacOS
This also eliminates use of the 3-clause license
- New feature: the first occurrence of '{}' on the command line will be
replaced with the name of the first file under watch
- Set PAGER to an absolute path (/bin/cat)
- Prevent interactive utilities from paging output
== 2.4: December 18, 2013
- Reintroduce ${DESTDIR} for STAGEDIR installation on FreeBSD and pkgsrc
- License file describes the copyright holders for the compatibility libraries
== 2.3: December 12, 2013
- Wait for processes to terminate in restart mode
- Set process title for blocking events
- Correct multiple bugs in the inotify->kqueue translation layer
- Print out detailed instructions if the user provides configure arguments
- Remove ${DESTDIR} from Makefile which appears to interfere with OpenBSD ports
- The handler for SIGSEGV prints file name and line number if a unit test fails
- Reduce the number of attempts to re-open files to 10 (total of 1 second)
- Define architecture in Makefile instead of testing for __linux or __APPLE__
== 2.2: August 07, 2013
- Process every delete or rename event to ensure files remain tracked
- Always process DELETE or RENAME events to prevent a files from escaping watch
- inotify(7) events are consolidated for a duration of 50ms as a workaround for
an apparent bug in glib/gio where a file is written and then removed
- Execute mode can run a file under watch by retrying if text file is busy
- Exit non-zero if list of regular files exceeds the hard limit set by the
current login class
- Ignore directories and special files; exit with error code 1 if no regular
files are provided as input
== 2.1: July 01, 2013
- Zero-dependency build on Linux using built-in compatibility layer
- Add poll with optional timeout in order to prevent change events from
accumulating while running a command
- Invalidate file->fd after inotify event is closed. Do not respond to
IN_MOVE_SELF since this event only occurs on Linux NFS mounts
- Optional build on GNU/Linux using external compatibility libraries libkqueue
and libbsd
- Fix bug in finding the correct filename to write to a FIFO
- Correct build on MacOS
== 2.0: June 17, 2013
- Support for old architectures without C99 support
- More aggressively remove duplicate events
- install/uninstall uses DESTDIR to be compatible with pkgsrc
== 1.9: April 13, 2013
- New auto-reload option ('-r')
- Add a simple configure script, BSD is the default
- Do not install directories...they should already exist
- Man page installation path can be set with MANPATH. MacOS expects it to be
under /usr/local/share
== 1.8: May 12, 2013
- Ensure that losing a file under watch is results in an error
== 1.7: November 20, 2012
- Allocate an memory based on _SC_OPEN_MAX, not rl.rlim_max
- Stat deleted file until success before running a command
- Handle SIGTERM and remove named pipe on exit
== 1.6: August 10, 2012
- Separate makefile for Linux to make building easier
- No need for pthreads on BSD
- Respond to RENAME and LINK events to improve behavior on NFS
== 1.5: July 29, 2012
- Support interactive applications by opening a TTY
- Successfully stat deleted files before running a command
== 1.4: May 22, 2013
- Added regression tests
- Delete events instead of relying on implicit removal by close(2) for better
compatibility with libkqueue on Linux
== 1.3: May 17, 2012
- Added FIFO support
- Use min(OPEN_MAX, rl.rlim_max) to be more compatible of Mac OS
- More correct use of fgets(3) when reading STDIN
== 1.2: April 26, 2012
- Added support for Linux via libkqueue
== 1.1: April 17, 2012
- Added support for Mac OS
== 1.0: April 12, 2012
- Initial release at https://bitbucket.org/eradman/entr
- Builds on all major BSD platforms