ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/Changes
Revision: 1.367
Committed: Wed Mar 18 12:30:20 2020 UTC (4 years, 1 month ago) by root
Branch: MAIN
CVS Tags: rel-4_33
Changes since 1.366: +3 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.14 Revision history for libev, a high-performance and full-featured event loop.
2 root 1.1
3 root 1.359 TODO: for next ABI/API change, consider moving EV__IOFDSSET into io->fd instead and provide a getter.
4 root 1.342 TODO: document EV_TSTAMP_T
5 root 1.344
6 root 1.367 4.33 Wed Mar 18 13:22:29 CET 2020
7     - no changes w.r.t. 4.32.
8    
9 root 1.365 4.32 (EV only)
10 root 1.366 - the 4.31 timerfd code wrongly changed the priority of the signal
11 root 1.354 fd watcher, which is usually harmless unless signal fds are
12 root 1.352 also used (found via cpan tester service).
13 root 1.358 - the documentation wrongly claimed that user may modify fd and events
14 root 1.364 members in io watchers when the watcher was stopped
15 root 1.358 (found by b_jonas).
16     - new ev_io_modify mutator which changes only the events member,
17 root 1.361 which can be faster. also added ev::io::set (int events) method
18     to ev++.h.
19 root 1.360 - officially allow a zero events mask for io watchers. this should
20     work with older libev versions as well but was not officially
21     allowed before.
22 root 1.356 - do not wake up every minute when timerfd is used to detect timejumps.
23 root 1.362 - do not wake up every minute when periodics are disabled and we have
24     a monotonic clock.
25 root 1.353 - support a lot more "uncommon" compile time configurations,
26     such as ev_embed enabled but ev_timer disabled.
27 root 1.361 - use a start/stop wrapper class to reduce code duplication in
28     ev++.h and make it needlessly more c++-y.
29 root 1.355 - the linux aio backend is no longer compiled in by default.
30 root 1.356 - update to libecb version 0x00010008.
31 root 1.351
32 root 1.350 4.31 Fri Dec 20 21:58:29 CET 2019
33 root 1.348 - handle backends with minimum wait time a bit better by not
34     waiting in the presence of already-expired timers
35 root 1.349 (behaviour reported by Felipe Gasper).
36     - new feature: use timerfd to detect timejumps quickly,
37     can be disabled with the new EVFLAG_NOTIMERFD loop flag.
38     - document EV_USE_SIGNALFD feature macro.
39 root 1.348
40     4.30 (EV only)
41 root 1.347 - change non-autoconf test for __kernel_rwf_t by testing
42     LINUX_VERSION_CODE, the most direct test I could find.
43 root 1.348 - fix a bug in the io_uring backend that polled the wrong
44     backend fd, causing it to not work in many cases.
45 root 1.347
46 root 1.346 4.29 (EV only)
47     - add io uring autoconf and non-autoconf detection.
48     - disable io_uring when some header files are too old.
49 root 1.345
50 root 1.344 4.28 (EV only)
51 root 1.340 - linuxaio backend resulted in random memory corruption
52     when loop is forked.
53 root 1.335 - linuxaio backend might have tried to cancel an iocb
54     multiple times (was unable to trigger this).
55 root 1.341 - linuxaio backend now employs a generation counter to
56 root 1.342 avoid handling spurious events from cancelled requests.
57 root 1.334 - io_cancel can return EINTR, deal with it. also, assume
58 root 1.341 io_submit also returns EINTR.
59     - fix some other minor bugs in linuxaio backend.
60 root 1.342 - ev_tstamp type can now be overriden by defining EV_TSTAMP_T.
61 root 1.336 - cleanup: replace expect_true/false and noinline by their
62     libecb counterparts.
63 root 1.337 - move syscall infrastructure from ev_linuxaio.c to ev.c.
64     - prepare io_uring integration.
65 root 1.339 - tweak ev_floor.
66 root 1.342 - epoll, poll, win32 Sleep and other places that use millisecond
67     reslution now all try to round up times.
68 root 1.343 - solaris port backend didn't compile.
69     - abstract time constants into their macros, for more flexibility.
70 root 1.334
71 root 1.333 4.27 Thu Jun 27 22:43:44 CEST 2019
72 root 1.334 - linux aio backend almost completely rewritten to work around its
73 root 1.329 limitations.
74 root 1.334 - linux aio backend now requires linux 4.19+.
75 root 1.329 - epoll backend now mandatory for linux aio backend.
76 root 1.330 - fail assertions more aggressively on invalid fd's detected
77     in the event loop, do not just silently fd_kill in case of
78     user error.
79     - ev_io_start/ev_io_stop now verify the watcher fd using
80     a syscall when EV_VERIFY is 2 or higher.
81 root 1.329
82     4.26 (EV only)
83     - update to libecb 0x00010006.
84 root 1.326 - new experimental linux aio backend (linux 4.18+).
85 root 1.324 - removed redundant 0-ptr check in ev_once.
86 root 1.325 - updated/extended ev_set_allocator documentation.
87 root 1.326 - replaced EMPTY2 macro by array_needsize_noinit.
88     - minor code cleanups.
89 root 1.327 - epoll backend now uses epoll_create1 also after fork.
90 root 1.324
91 root 1.320 4.25 Fri Dec 21 07:49:20 CET 2018
92     - INCOMPATIBLE CHANGE: EV_THROW was renamed to EV_NOEXCEPT
93 root 1.323 (EV_THROW still provided) and now uses noexcept on C++11 or newer.
94 root 1.339 - move the darwin select workaround higher in ev.c, as newer versions of
95 root 1.316 darwin managed to break their broken select even more.
96 root 1.314 - ANDROID => __ANDROID__ (reported by enh@google.com).
97 root 1.315 - disable epoll_create1 on android because it has broken header files
98     and google is unwilling to fix them (reported by enh@google.com).
99 root 1.317 - avoid a minor compilation warning on win32.
100 root 1.318 - c++: remove deprecated dynamic throw() specifications.
101     - c++: improve the (unsupported) bad_loop exception class.
102 root 1.319 - backport perl ev_periodic example to C, untested.
103 root 1.321 - update libecb, biggets change is to include a memory fence
104     in ECB_MEMORY_FENCE_RELEASE on x86/amd64.
105 root 1.322 - minor autoconf/automake modernisation.
106 root 1.314
107 root 1.313 4.24 Wed Dec 28 05:19:55 CET 2016
108     - bump version to 4.24, as the release tarball inexplicably
109     didn't have the right version in ev.h, even though the cvs-tagged
110     version did have the right one (reported by Ales Teska).
111    
112 root 1.312 4.23 Wed Nov 16 18:23:41 CET 2016
113 root 1.311 - move some declarations at the beginning to help certain retarded
114     microsoft compilers, even though their documentation claims
115     otherwise (reported by Ruslan Osmanov).
116    
117 root 1.310 4.22 Sun Dec 20 22:11:50 CET 2015
118 root 1.308 - when epoll detects unremovable fds in the fd set, rebuild
119     only the epoll descriptor, not the signal pipe, to avoid
120     SIGPIPE in ev_async_send. This doesn't solve it on fork,
121     so document what needs to be done in ev_loop_fork
122     (analyzed by Benjamin Mahler).
123     - remove superfluous sys/timeb.h include on win32
124     (analyzed by Jason Madden).
125 root 1.309 - updated libecb.
126 root 1.308
127 root 1.307 4.20 Sat Jun 20 13:01:43 CEST 2015
128 root 1.302 - prefer noexcept over throw () with C++ 11.
129 root 1.303 - update ecb.h due to incompatibilities with c11.
130 root 1.305 - fix a potential aliasing issue when reading and writing
131 root 1.304 watcher callbacks.
132 root 1.301
133 root 1.300 4.19 Thu Sep 25 08:18:25 CEST 2014
134 root 1.298 - ev.h wasn't valid C++ anymore, which tripped compilers other than
135 root 1.299 clang, msvc or gcc (analyzed by Raphael 'kena' Poss). Unfortunately,
136     C++ doesn't support typedefs for function pointers fully, so the affected
137     declarations have to spell out the types each time.
138 root 1.297 - when not using autoconf, tighten the check for clock_gettime and related
139     functionality.
140    
141 root 1.296 4.18 Fri Sep 5 17:55:26 CEST 2014
142 root 1.295 - events on files were not always generated properly with the
143     epoll backend (testcase by Assaf Inbal).
144 root 1.288 - mark event pipe fd as cloexec after a fork (analyzed by Sami Farin).
145 root 1.289 - (ecb) support m68k, m88k and sh (patch by Miod Vallat).
146 root 1.291 - use a reasonable fallback for EV_NSIG instead of erroring out
147     when we can't detect the signal set size.
148 root 1.292 - in the absence of autoconf, do not use the clock syscall
149     on glibc >= 2.17 (avoids the syscall AND -lrt on systems
150     doing clock_gettime in userspace).
151 root 1.293 - ensure extern "C" function pointers are used for externally-visible
152     loop callbacks (not watcher callbacks yet).
153 root 1.294 - (ecb) work around memory barriers and volatile apparently both being
154     broken in visual studio 2008 and later (analysed and patch by Nicolas Noble).
155 root 1.288
156 root 1.287 4.15 Fri Mar 1 12:04:50 CET 2013
157 root 1.271 - destroying a non-default loop would stop the global waitpid
158     watcher (Denis Bilenko).
159 root 1.266 - queueing pending watchers of higher priority from a watcher now invokes
160     them in a timely fashion (reported by Denis Bilenko).
161 root 1.261 - add throw() to all libev functions that cannot throw exceptions, for
162     further code size decrease when compiling for C++.
163     - add throw () to callbacks that must not throw exceptions (allocator,
164     syserr, loop acquire/release, periodic reschedule cbs).
165 root 1.256 - fix event_base_loop return code, add event_get_callback, event_base_new,
166     event_base_get_method calls to improve libevent 1.x emulation and add
167 root 1.273 some libevent 2.x functionality (based on a patch by Jeff Davey).
168 root 1.263 - add more memory fences to fix a bug reported by Jeff Davey. Better
169     be overfenced than underprotected.
170 root 1.256 - ev_run now returns a boolean status (true meaning watchers are
171     still active).
172 root 1.252 - ev_once: undef EV_ERROR in ev_kqueue.c, to avoid clashing with
173     libev's EV_ERROR (reported by 191919).
174 root 1.253 - (ecb) add memory fence support for xlC (Darin McBride).
175     - (ecb) add memory fence support for gcc-mips (Anton Kirilov).
176 root 1.259 - (ecb) add memory fence support for gcc-alpha (Christian Weisgerber).
177 root 1.254 - work around some kernels losing file descriptors by leaking
178     the kqueue descriptor in the child.
179 root 1.282 - work around linux inotify not reporting IN_ATTRIB changes for directories
180     in many cases.
181 root 1.262 - include sys/syscall.h instead of plain syscall.h.
182 root 1.268 - check for io watcher loops in ev_verify, check for the most
183     common reported usage bug in ev_io_start.
184 sf-exg 1.286 - choose socket vs. WSASocket at compiletime using EV_USE_WSASOCKET.
185 root 1.270 - always use WSASend/WSARecv directly on windows, hoping that this
186     works in all cases (unlike read/write/send/recv...).
187 root 1.274 - try to detect signals around a fork faster (test program by
188     Denis Bilenko).
189 root 1.275 - work around recent glibc versions that leak memory in realloc.
190 root 1.276 - rename ev::embed::set to ev::embed::set_embed to avoid clashing
191     the watcher base set (loop) method.
192 root 1.278 - rewrite the async/signal pipe logic to always keep a valid fd, which
193 sf-exg 1.286 simplifies (and hopefully correctifies :) the race checking
194 root 1.278 on fork, at the cost of one extra fd.
195 root 1.282 - add fat, msdos, jffs2, ramfs, ntfs and btrfs to the list of
196     inotify-supporting filesystems.
197 root 1.283 - move orig_CFLAGS assignment to after AC_INIT, as newer autoconf
198     versions ignore it before
199     (https://bugzilla.redhat.com/show_bug.cgi?id=908096).
200 root 1.284 - add some untested android support.
201 root 1.285 - enum expressions must be of type int (reported by Juan Pablo L).
202 root 1.253
203 root 1.250 4.11 Sat Feb 4 19:52:39 CET 2012
204 root 1.248 - INCOMPATIBLE CHANGE: ev_timer_again now clears the pending status, as
205     was documented already, but not implemented in the repeating case.
206 root 1.249 - new compiletime symbols: EV_NO_SMP and EV_NO_THREADS.
207 root 1.234 - fix a race where the workaround against the epoll fork bugs
208     caused signals to not be handled anymore.
209 root 1.229 - correct backend_fudge for most backends, and implement a windows
210     specific workaround to avoid looping because we call both
211     select and Sleep, both with different time resolutions.
212 root 1.230 - document range and guarantees of ev_sleep.
213 root 1.231 - document reasonable ranges for periodics interval and offset.
214     - rename backend_fudge to backend_mintime to avoid future confusion :)
215 root 1.225 - change the default periodic reschedule function to hopefully be more
216 root 1.226 exact and correct even in corner cases or in the far future.
217 root 1.225 - do not rely on -lm anymore: use it when available but use our
218 root 1.230 own floor () if it is missing. This should make it easier to embed,
219     as no external libraries are required.
220 root 1.232 - strategically import macros from libecb and mark rarely-used functions
221 sf-exg 1.239 as cache-cold (saving almost 2k code size on typical amd64 setups).
222 root 1.237 - add Symbols.ev and Symbols.event files, that were missing.
223 root 1.242 - fix backend_mintime value for epoll (was 1/1024, is 1/1000 now).
224 root 1.244 - fix #3 "be smart about timeouts" to not "deadlock" when
225     timeout == now, also improve the section overall.
226     - avoid "AVOIDING FINISHING BEFORE RETURNING" idiom.
227 root 1.245 - support new EV_API_STATIC mode to make all libev symbols
228     static.
229 root 1.251 - supply default CFLAGS of -g -O3 with gcc when original CFLAGS
230     were empty.
231 root 1.225
232 root 1.224 4.04 Wed Feb 16 09:01:51 CET 2011
233     - fix two problems in the native win32 backend, where reuse of fd's
234     with different underlying handles caused handles not to be removed
235     or added to the select set (analyzed and tested by Bert Belder).
236 root 1.221 - do no rely on ceil() in ev_e?poll.c.
237 root 1.222 - backport libev to HP-UX versions before 11 v3.
238 root 1.223 - configure did not detect nanosleep and clock_gettime properly when
239     they are available in the libc (as opposed to -lrt).
240 root 1.221
241 root 1.219 4.03 Tue Jan 11 14:37:25 CET 2011
242 root 1.217 - officially support polling files with all backends.
243 root 1.212 - support files, /dev/zero etc. the same way as select in the epoll
244     backend, by generating events on our own.
245 root 1.217 - ports backend: work around solaris bug 6874410 and many related ones
246     (EINTR, maybe more), with no performance loss (note that the solaris
247     bug report is actually wrong, reality is far more bizarre and broken
248     than that).
249 root 1.209 - define EV_READ/EV_WRITE as macros in event.h, as some programs use
250     #ifdef to test for them.
251 root 1.213 - new (experimental) function: ev_feed_signal.
252     - new (to become default) EVFLAG_NOSIGMASK flag.
253     - new EVBACKEND_MASK symbol.
254 root 1.220 - updated COMMON IDIOMS SECTION.
255 root 1.209
256 root 1.207 4.01 Fri Nov 5 21:51:29 CET 2010
257 root 1.205 - automake fucked it up, apparently, --add-missing -f is not quite enough
258 root 1.206 to make it update its files, so 4.00 didn't install ev++.h and
259     event.h on make install. grrr.
260     - ev_loop(count|depth) didn't return anything (Robin Haberkorn).
261 root 1.203 - change EV_UNDEF to 0xffffffff to silence some overzealous compilers.
262 root 1.204 - use "(libev) " prefix for all libev error messages now.
263 root 1.203
264 root 1.202 4.00 Mon Oct 25 12:32:12 CEST 2010
265 root 1.171 - "PORTING FROM LIBEV 3.X TO 4.X" (in ev.pod) is recommended reading.
266 root 1.161 - ev_embed_stop did not correctly stop the watcher (very good
267     testcase by Vladimir Timofeev).
268 sf-exg 1.191 - ev_run will now always update the current loop time - it erroneously
269 root 1.187 didn't when idle watchers were active, causing timers not to fire.
270 root 1.179 - fix a bug where a timeout of zero caused the timer not to fire
271     in the libevent emulation (testcase by Péter Szabó).
272 root 1.164 - applied win32 fixes by Michael Lenaghan (also James Mansion).
273 root 1.166 - replace EV_MINIMAL by EV_FEATURES.
274 root 1.178 - prefer EPOLL_CTL_ADD over EPOLL_CTL_MOD in some more cases, as it
275     seems the former is *much* faster than the latter.
276 root 1.197 - linux kernel version detection (for inotify bug workarounds)
277     did not work properly.
278 root 1.185 - reduce the number of spurious wake-ups with the ports backend.
279 root 1.158 - remove dependency on sys/queue.h on freebsd (patch by Vanilla Hsu).
280 root 1.186 - do async init within ev_async_start, not ev_async_set, which avoids
281     an API quirk where the set function must be called in the C++ API
282     even when there is nothing to set.
283 root 1.174 - add (undocumented) EV_ENABLE when adding events with kqueue,
284 root 1.175 this might help with OS X, which seems to need it despite documenting
285     not to need it (helpfully pointed out by Tilghman Lesher).
286 root 1.176 - do not use poll by default on freebsd, it's broken (what isn't
287     on freebsd...).
288 root 1.195 - allow to embed epoll on kernels >= 2.6.32.
289 root 1.159 - configure now prepends -O3, not appends it, so one can still
290     override it.
291 root 1.190 - ev.pod: greatly expanded the portability section, added a porting
292     section, a description of watcher states and made lots of minor fixes.
293 root 1.160 - disable poll backend on AIX, the poll header spams the namespace
294     and it's not worth working around dead platforms (reported
295     and analyzed by Aivars Kalvans).
296 root 1.162 - improve header file compatibility of the standalone eventfd code
297     in an obscure case.
298 root 1.163 - implement EV_AVOID_STDIO option.
299     - do not use sscanf to parse linux version number (smaller, faster,
300     no sscanf dependency).
301 root 1.164 - new EV_CHILD_ENABLE and EV_SIGNAL_ENABLE configurable settings.
302 sf-exg 1.172 - update libev.m4 HAVE_CLOCK_SYSCALL test for newer glibcs.
303 root 1.165 - add section on accept() problems to the manpage.
304 root 1.168 - rename EV_TIMEOUT to EV_TIMER.
305 root 1.190 - rename ev_loop_count/depth/verify/loop/unloop.
306 root 1.197 - remove ev_default_destroy and ev_default_fork.
307 root 1.168 - switch to two-digit minor version.
308 root 1.180 - work around an apparent gentoo compiler bug.
309 root 1.181 - define _DARWIN_UNLIMITED_SELECT. just so.
310 root 1.188 - use enum instead of #define for most constants.
311     - improve compatibility to older C++ compilers.
312 root 1.193 - (experimental) ev_run/ev_default_loop/ev_break/ev_loop_new have now
313     default arguments when compiled as C++.
314 root 1.196 - enable automake dependency tracking.
315 root 1.197 - ev_loop_new no longer leaks memory when loop creation failed.
316 root 1.198 - new ev_cleanup watcher type.
317 root 1.157
318 root 1.156 3.9 Thu Dec 31 07:59:59 CET 2009
319 root 1.155 - signalfd is no longer used by default and has to be requested
320     explicitly - this means that easy to catch bugs become hard to
321     catch race conditions, but the users have spoken.
322     - point out the unspecified signal mask in the documentation, and
323     that this is a race condition regardless of EV_SIGNALFD.
324 root 1.142 - backport inotify code to C89.
325 root 1.148 - inotify file descriptors could leak into child processes.
326 sf-exg 1.241 - ev_stat watchers could keep an erroneous extra ref on the loop,
327 root 1.151 preventing exit when unregistering all watchers (testcases
328 root 1.150 provided by ry@tinyclouds.org).
329 root 1.143 - implement EV_WIN32_HANDLE_TO_FD and EV_WIN32_CLOSE_FD configuration
330 root 1.145 symbols to make it easier for apps to do their own fd management.
331 root 1.144 - support EV_IDLE_ENABLE being disabled in ev++.h
332     (patch by Didier Spezia).
333 root 1.147 - take advantage of inotify_init1, if available, to set cloexec/nonblock
334     on fd creation, to avoid races.
335 root 1.150 - the signal handling pipe wasn't always initialised under windows
336     (analysed by lekma).
337 root 1.146 - changed minimum glibc requirement from glibc 2.9 to 2.7, for
338     signalfd.
339 root 1.152 - add missing string.h include (Denis F. Latypoff).
340 root 1.153 - only replace ev_stat.prev when we detect an actual difference,
341     so prev is (almost) always different to attr. this might
342 sf-exg 1.191 have caused the problems with 04_stat.t.
343 root 1.154 - add ev::timer->remaining () method to C++ API.
344 root 1.142
345 root 1.141 3.8 Sun Aug 9 14:30:45 CEST 2009
346 root 1.133 - incompatible change: do not necessarily reset signal handler
347     to SIG_DFL when a sighandler is stopped.
348 root 1.135 - ev_default_destroy did not properly free or zero some members,
349 sf-exg 1.191 potentially causing crashes and memory corruption on repeated
350 root 1.134 ev_default_destroy/ev_default_loop calls.
351 root 1.133 - take advantage of signalfd on GNU/Linux systems.
352     - document that the signal mask might be in an unspecified
353     state when using libev's signal handling.
354 root 1.136 - take advantage of some GNU/Linux calls to set cloexec/nonblock
355     on fd creation, to avoid race conditions.
356 root 1.132
357 root 1.131 3.7 Fri Jul 17 16:36:32 CEST 2009
358 root 1.128 - ev_unloop and ev_loop wrongly used a global variable to exit loops,
359     instead of using a per-loop variable (bug caught by accident...).
360     - the ev_set_io_collect_interval interpretation has changed.
361     - add new functionality: ev_set_userdata, ev_userdata,
362 root 1.126 ev_set_invoke_pending_cb, ev_set_loop_release_cb,
363 root 1.132 ev_invoke_pending, ev_pending_count, together with a long example
364     about thread locking.
365 root 1.128 - add ev_timer_remaining (as requested by Denis F. Latypoff).
366     - add ev_loop_depth.
367 root 1.124 - calling ev_unloop in fork/prepare watchers will no longer poll
368     for new events.
369 root 1.115 - Denis F. Latypoff corrected many typos in example code snippets.
370     - honor autoconf detection of EV_USE_CLOCK_SYSCALL, also double-
371     check that the syscall number is available before trying to
372     use it (reported by ry@tinyclouds).
373 root 1.117 - use GetSystemTimeAsFileTime instead of _timeb on windows, for
374 root 1.116 slightly higher accuracy.
375 root 1.122 - properly declare ev_loop_verify and ev_now_update even when
376     !EV_MULTIPLICITY.
377 root 1.121 - do not compile in any priority code when EV_MAXPRI == EV_MINPRI.
378 root 1.123 - support EV_MINIMAL==2 for a reduced API.
379 root 1.125 - actually 0-initialise struct sigaction when installing signals.
380 root 1.127 - add section on hibernate and stopped processes to ev_timer docs.
381 root 1.115
382 root 1.113 3.6 Tue Apr 28 02:49:30 CEST 2009
383 root 1.107 - multiple timers becoming ready within an event loop iteration
384     will be invoked in the "correct" order now.
385 root 1.105 - do not leave the event loop early just because we have no active
386     watchers, fixing a problem when embedding a kqueue loop
387     that has active kernel events but no registered watchers
388     (reported by blacksand blacksand).
389 root 1.102 - correctly zero the idx values for arrays, so destroying and
390     reinitialising the default loop actually works (patch by
391     Malek Hadj-Ali).
392 root 1.108 - implement ev_suspend and ev_resume.
393 root 1.106 - new EV_CUSTOM revents flag for use by applications.
394 sf-exg 1.241 - add documentation section about priorities.
395 sf-exg 1.286 - add a glossary to the documentation.
396 root 1.111 - extend the ev_fork description slightly.
397 root 1.112 - optimize a jump out of call_pending.
398 root 1.102
399 root 1.101 3.53 Sun Feb 15 02:38:20 CET 2009
400     - fix a bug in event pipe creation on win32 that would cause a
401     failed assertion on event loop creation (patch by Malek Hadj-Ali).
402 root 1.100 - probe for CLOCK_REALTIME support at runtime as well and fall
403     back to gettimeofday if there is an error, to support older
404     operating systems with newer header files/libraries.
405     - prefer gettimeofday over clock_gettime with USE_CLOCK_SYSCALL
406     (default most everywhere), otherwise not.
407    
408 root 1.99 3.52 Wed Jan 7 21:43:02 CET 2009
409 root 1.97 - fix compilation of select backend in fd_set mode when NFDBITS is
410     missing (to get it to compile on QNX, reported by Rodrigo Campos).
411     - better select-nfds handling when select backend is in fd_set mode.
412     - diagnose fd_set overruns when select backend is in fd_set mode.
413     - due to a thinko, instead of disabling everything but
414     select on the borked OS X platform, everything but select was
415     allowed (reported by Emanuele Giaquinta).
416 root 1.95 - actually verify that local and remote port are matching in
417     libev's socketpair emulation, which makes denial-of-service
418     attacks harder (but not impossible - it's windows). Make sure
419 root 1.96 it even works under vista, which thinks that getpeer/sockname
420     should return fantasy port numbers.
421 root 1.100 - include "libev" in all assertion messages for potentially
422 root 1.97 clearer diagnostics.
423 root 1.98 - event_get_version (libevent compatibility) returned
424     a useless string instead of the expected version string
425     (patch by W.C.A. Wijngaards).
426 root 1.95
427 root 1.94 3.51 Wed Dec 24 23:00:11 CET 2008
428 root 1.91 - fix a bug where an inotify watcher was added twice, causing
429 root 1.92 freezes on hash collisions (reported and analysed by Graham Leggett).
430 root 1.87 - new config symbol, EV_USE_CLOCK_SYSCALL, to make libev use
431     a direct syscall - slower, but no dependency on librt et al.
432 root 1.88 - assume negative return values != -1 signals success of port_getn
433     (http://cvs.epicsol.org/cgi/viewcvs.cgi/epic5/source/newio.c?rev=1.52)
434     (no known failure reports, but it doesn't hurt).
435 root 1.93 - fork detection in ev_embed now stops and restarts the watcher
436     automatically.
437 root 1.89 - EXPERIMENTAL: default the method to operator () in ev++.h,
438     to make it nicer to use functors (requested by Benedek László).
439     - fixed const object callbacks in ev++.h.
440 root 1.90 - replaced loop_ref argument of watcher.set (loop) by a direct
441     ev_loop * in ev++.h, to avoid clashes with functor patch.
442 root 1.91 - do not try to watch the empty string via inotify.
443 root 1.92 - inotify watchers could be leaked under certain circumstances.
444     - OS X 10.5 is actually even more broken than earlier versions,
445     so fall back to select on that piece of garbage.
446 root 1.93 - fixed some weirdness in the ev_embed documentation.
447 root 1.87
448 root 1.86 3.49 Wed Nov 19 11:26:53 CET 2008
449 root 1.83 - ev_stat watchers will now use inotify as a mere hint on
450     kernels <2.6.25, or if the filesystem is not in the
451     "known to be good" list.
452 root 1.84 - better mingw32 compatibility (it's not as borked as native win32)
453     (analysed by Roger Pack).
454 root 1.85 - include stdio.h in the example program, as too many people are
455     confused by the weird C language otherwise. I guess the next thing
456     I get told is that the "..." ellipses in the examples don't compile
457     with their C compiler.
458 root 1.83
459 root 1.80 3.48 Thu Oct 30 09:02:37 CET 2008
460 root 1.71 - further optimise away the EPOLL_CTL_ADD/MOD combo in the epoll
461     backend by assuming the kernel event mask hasn't changed if
462     ADD fails with EEXIST.
463 root 1.75 - work around spurious event notification bugs in epoll by using
464 root 1.77 a 32-bit generation counter. recreate kernel state if we receive
465 root 1.78 spurious notifications or unwanted events. this is very costly,
466     but I didn't come up with this horrible design.
467 root 1.71 - use memset to initialise most arrays now and do away with the
468     init functions.
469 root 1.72 - expand time-out strategies into a "Be smart about timeouts" section.
470     - drop the "struct" from all ev_watcher declarations in the
471 root 1.73 documentation and did other clarifications (yeah, it was a mistake
472     to have a struct AND a function called ev_loop).
473 root 1.74 - fix a bug where ev_default would not initialise the default
474     loop again after it was destroyed with ev_default_destroy.
475 root 1.79 - rename syserr to ev_syserr to avoid name clashes when embedding,
476     do similar changes for event.c.
477 root 1.71
478 root 1.69 3.45 Tue Oct 21 21:59:26 CEST 2008
479 root 1.67 - disable inotify usage on linux <2.6.25, as it is broken
480     (reported by Yoann Vandoorselaere).
481 sf-exg 1.191 - ev_stat erroneously would try to add inotify watchers
482 root 1.68 even when inotify wasn't available (this should only
483 root 1.67 have a performance impact).
484 root 1.65 - ev_once now passes both timeout and io to the callback if both
485     occur concurrently, instead of giving timeouts precedence.
486 root 1.66 - disable EV_USE_INOTIFY when sys/inotify.h is too old.
487 root 1.65
488 root 1.62 3.44 Mon Sep 29 05:18:39 CEST 2008
489     - embed watchers now automatically invoke ev_loop_fork on the
490     embedded loop when the parent loop forks.
491 root 1.58 - new function: ev_now_update (loop).
492 root 1.57 - verify_watcher was not marked static.
493 root 1.59 - improve the "associating..." manpage section.
494 root 1.60 - documentation tweaks here and there.
495 root 1.57
496 root 1.56 3.43 Sun Jul 6 05:34:41 CEST 2008
497 root 1.54 - include more include files on windows to get struct _stati64
498 root 1.56 (reported by Chris Hulbert, but doesn't quite fix his issue).
499 root 1.53 - add missing #include <io.h> in ev.c on windows (reported by
500     Matt Tolton).
501    
502 root 1.52 3.42 Tue Jun 17 12:12:07 CEST 2008
503 root 1.50 - work around yet another windows bug: FD_SET actually adds fd's
504     multiple times to the fd_*SET*, despite official MSN docs claiming
505 root 1.51 otherwise. Reported and well-analysed by Matt Tolton.
506     - define NFDBITS to 0 when EV_SELECT_IS_WINSOCKET to make it compile
507 root 1.48 (reported any analysed by Chris Hulbert).
508 root 1.49 - fix a bug in ev_ebadf (this function is only used to catch
509     programming errors in the libev user). reported by Matt Tolton.
510     - fix a bug in fd_intern on win32 (could lead to compile errors
511     under some circumstances, but would work correctly if it compiles).
512     reported by Matt Tolton.
513 root 1.50 - (try to) work around missing lstat on windows.
514 root 1.45 - pass in the write fd set as except fd set under windows. windows
515 root 1.46 is so uncontrollably lame that it requires this. this means that
516     switching off oobinline is not supported (but tcp/ip doesn't
517     have oob, so that would be stupid anyways.
518 root 1.47 - use posix module symbol to auto-detect monotonic clock presence
519     and some other default values.
520 root 1.45
521 root 1.44 3.41 Fri May 23 18:42:54 CEST 2008
522 root 1.46 - work around an obscure bug in winsocket select: if you
523 root 1.40 provide only empty fd sets then select returns WSAEINVAL. how sucky.
524 root 1.41 - improve timer scheduling stability and reduce use of time_epsilon.
525 root 1.36 - use 1-based 2-heap for EV_MINIMAL, simplifies code, reduces
526     codesize and makes for better cache-efficiency.
527     - use 3-based 4-heap for !EV_MINIMAL. this makes better use
528     of cpu cache lines and gives better growth behaviour than
529     2-based heaps.
530 root 1.38 - cache timestamp within heap for !EV_MINIMAL, to avoid random
531     memory accesses.
532     - document/add EV_USE_4HEAP and EV_HEAP_CACHE_AT.
533 root 1.33 - fix a potential aliasing issue in ev_timer_again.
534 root 1.35 - add/document ev_periodic_at, retract direct access to ->at.
535     - improve ev_stat docs.
536     - add portability requirements section.
537 root 1.39 - fix manpage headers etc.
538 root 1.40 - normalise WSA error codes to lower range on windows.
539 root 1.43 - add consistency check code that can be called automatically
540     or on demand to check for internal structures (ev_loop_verify).
541 root 1.31
542 root 1.30 3.31 Wed Apr 16 20:45:04 CEST 2008
543     - added last minute fix for ev_poll.c by Brandon Black.
544 root 1.29
545 root 1.28 3.3 Wed Apr 16 19:04:10 CEST 2008
546 root 1.23 - event_base_loopexit should return 0 on success
547     (W.C.A. Wijngaards).
548 root 1.20 - added linux eventfd support.
549     - try to autodetect epoll and inotify support
550     by libc header version if not using autoconf.
551 root 1.21 - new symbols: EV_DEFAULT_UC and EV_DEFAULT_UC_.
552     - declare functions defined in ev.h as inline if
553     C99 or gcc are available.
554     - enable inlining with gcc versions 2 and 3.
555 root 1.25 - work around broken poll implementations potentially
556     not clearing revents field in ev_poll (Brandon Black)
557     (no such systems are known at this time).
558 root 1.23 - work around a bug in realloc on openbsd and darwin,
559 sf-exg 1.191 also makes the erroneous valgrind complaints
560 root 1.23 go away (noted by various people).
561 root 1.26 - fix ev_async_pending, add c++ wrapper for ev_async
562 sf-exg 1.191 (based on patch sent by Johannes Deisenhofer).
563 root 1.26 - add sensible set method to ev::embed.
564 root 1.27 - made integer constants type int in ev.h.
565 root 1.20
566 root 1.19 3.2 Wed Apr 2 17:11:19 CEST 2008
567 root 1.15 - fix a 64 bit overflow issue in the select backend,
568     by using fd_mask instead of int for the mask.
569 root 1.16 - rename internal sighandler to avoid clash with very old perls.
570 root 1.18 - entering ev_loop will not clear the ONESHOT or NONBLOCKING
571     flags of any outer loops anymore.
572 root 1.17 - add ev_async_pending.
573 root 1.15
574 root 1.14 3.1 Thu Mar 13 13:45:22 CET 2008
575 root 1.12 - implement ev_async watchers.
576 root 1.10 - only initialise signal pipe on demand.
577     - make use of sig_atomic_t configurable.
578 root 1.14 - improved documentation.
579 root 1.10
580 root 1.9 3.0 Mon Jan 28 13:14:47 CET 2008
581 root 1.6 - API/ABI bump to version 3.0.
582 root 1.4 - ev++.h includes "ev.h" by default now, not <ev.h>.
583     - slightly improved documentation.
584 root 1.5 - speed up signal detection after a fork.
585 root 1.6 - only optionally return trace status changed in ev_child
586     watchers.
587 root 1.8 - experimental (and undocumented) loop wrappers for ev++.h.
588 root 1.4
589 root 1.2 2.01 Tue Dec 25 08:04:41 CET 2007
590 root 1.3 - separate Changes file.
591 root 1.2 - fix ev_path_set => ev_stat_set typo.
592     - remove event_compat.h from the libev tarball.
593     - change how include files are found.
594     - doc updates.
595     - update licenses, explicitly allow for GPL relicensing.
596    
597     2.0 Sat Dec 22 17:47:03 CET 2007
598     - new ev_sleep, ev_set_(io|timeout)_collect_interval.
599     - removed epoll from embeddable fd set.
600     - fix embed watchers.
601     - renamed ev_embed.loop to other.
602     - added exported Symbol tables.
603     - undefine member wrapper macros at the end of ev.c.
604     - respect EV_H in ev++.h.
605    
606     1.86 Tue Dec 18 02:36:57 CET 2007
607     - fix memleak on loop destroy (not relevant for perl).
608    
609     1.85 Fri Dec 14 20:32:40 CET 2007
610     - fix some aliasing issues w.r.t. timers and periodics
611     (not relevant for perl).
612    
613     (for historic versions refer to EV/Changes, found in the Perl interface)
614    
615 root 1.1 0.1 Wed Oct 31 21:31:48 CET 2007
616     - original version; hacked together in <24h.
617